Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> x-base Выгрузка сотрудников в файл дбф 2 страниц V   1 2 >          
Змейкин Подменю пользователя
сообщение 20.06.13, 12:07
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

привет всем помогите!! не могу понять почему пишет "Поле агрегатного объекта не обнаружено (Name) "Дбф я определил(
//*******************************************
Перем Путь, ИмяФайла;
Перем ДБФ;

Функция ОткрытьБазу()
    ДБФ = СоздатьОбъект("XBase");
    Попытка
        ДБФ.ОткрытьФайл(Путь+ИмяФайла,,0);
    Исключение
        Предупреждение("Ошибка отрытия файла " + Путь+ИмяФайла);
        Возврат 0;
    КонецПопытки;
    Если ДБФ.Открыта() = 0 Тогда
        Предупреждение("Ошибка отрытия файла " + Путь+ИмяФайла);
        Возврат 0;
    КонецЕсли;
    
    Возврат 1;
КонецФункции    

Процедура УстановитьДату(ТЭлемент)

    СпрСотр2=СоздатьОбъект("Справочник.Сотрудники");
        Если СпрСотр2.НайтиЭлемент(ТЭлемент)>0 Тогда
            СпрСотр2.ПризнакИзмененияДоходаДляИндексации.Установить(ДБФ.DatZ,1);
            Сообщить("Установлен признак изменения дохода.");
        Иначе
            Сообщить("Не найден элемент "+ТЭлемент);    
        КонецЕсли;

КонецПроцедуры    

Процедура Загрузить()
    ОткрытьБазу();
    Если ОткрытьБазу()=0 Тогда
        Возврат;
    КонецЕсли;


    
ДБФ.КодоваяСтраница(0);
    Сч=0;
    СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
    СпрСотр.ИспользоватьДату(НачМесяца(ДатаВПериоде));
    // Цикл по записям ДБФ базы
    Пока ДБФ.ВКонце()=0 Цикл
      
        //текИНН = СокрЛП(ДБФ.INN);
        //текДатаУвольнения = ДБФ.Data2;
        
        СпрСотр.ИспользоватьРодителя(ПолучитьПустоеЗначение("Справочник.Сотрудники"));
      
        СпрСотр.Новый();
        СпрСотр.Код =СокрЛП(ДБФ.Code);
        СпрСотр.Наименование= СокрЛП(ДБФ.Name);
    
        СпрСотр.Имя      = СокрЛП(ДБФ.Imya);    //Имя
        СпрСотр.Фамилия  = СокрЛП(ДБФ.Famil);   //Фамилия
        СпрСотр.Отчество = СокрЛП(ДБФ.Otch);    //Отчество
    
        СпрСотр.Адрес = СокрЛП(ДБФ.Adres);   //Адрес
        СпрСотр.Телефон = СокрЛП(ДБФ.Pfone);    //Телефон
        Если ДБФ.Sex="М" Тогда
            СпрСотр.Пол=Перечисление.Пол.Мужской;
        ИначеЕсли ДБФ.Sex="Ж" Тогда
            СпрСотр.Пол=Перечисление.Пол.Женский;
        КонецЕсли;

        //СпрСотр.Фирма=НашаФирма;
        СпрСотр.Должность = СокрЛП(ДБФ.Dol);      //Должность
        
        СпрСотр.ДатаПриема = ДБФ.Data1;           //Дата приема
        Если ПустоеЗначение(ДБФ.Data2)=0 Тогда    //Дата увольнения
            СпрСотр.ДатаУвольнения = ДБФ.Data2;
        КонецЕсли;

        Если ДБФ.Tip=0 Тогда
            СпрСотр.ТипСотрудника = 1;           //Основной
        ИначеЕсли ДБФ.Tip=1 Тогда
            СпрСотр.ТипСотрудника = 0;           //Совместитель
        КонецЕсли;
    
        СпрСотр.Оклад = ДБФ.Okl;                 //Оклад
    
        СпрСотр.КвоЛьгот = ДБФ.KLgot;            //Кво льгот
    

        
        //Паспортные данные
        СпрСотр.ПаспортСерия = СокрЛП(ДБФ.Ser);     //Серия
        СпрСотр.ПаспортНомер = СокрЛП(ДБФ.Nom);     //Номер
        СпрСотр.ВыданДата = СокрЛП(ДБФ.DatPas);  //Дата выдачи
        СпрСотр.ВыданКем = СокрЛП(ДБФ.Vydan);     //Кем выдан

        СпрСотр.ИНН=СокрЛП(ДБФ.INN);

        СпрСотр.Записать();
        Сч=Сч+1;
        //Сообщить(Строка(Сч)+"Добавлен элемент справочника - "+ДБФ.Name+" ИНН: "+текИНН);

        УстановитьДату(СпрСотр.ТекущийЭлемент());
            
        ДБФ.Следующая();    
    КонецЦикла;
    ДБФ.ЗакрытьФайл();
    СпрСотр="";
    СпрСотрР="";
    Сообщить("Загрузка справочника закончена.");

КонецПроцедуры

Процедура Выбрать()
    Если (ФС.ВыбратьФайл(0,ИмяФайла,Путь,"Выбор файла загрузки","DBF файлы|*.DBF")=0) Тогда
        Путь="";
        Возврат;    
    КонецЕсли;    
КонецПроцедуры

Путь=КаталогИБ();

ДатаЗаписи='01.12.2006';

Vofka Подменю пользователя
сообщение 20.06.13, 12:10
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

В ДБФ-е нету колонки с именем Name, перепроверьте. Если она там есть - переименуйте колонку заново.

Спасибо сказали: Змейкин,

pablo Подменю пользователя
сообщение 20.06.13, 12:48
Сообщение #3

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

И зачем открывать базу в начале 2 раза? Для пущего эффекта?


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: Змейкин,

Змейкин Подменю пользователя
сообщение 20.06.13, 12:50
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

да сделал вот выгрузку(обработка ) которая создает дбф таблицу куда я буду загружать из обработки
вот:
но все равно не выгружается(
Перем Путь, ИмяФайла;

Процедура ВыбратьПутьИмя()
    
    Если ФС.ВыбратьФайл(1, ИмяФайла, Путь, "Укажите имя DBF-файла (Запасы.DBF)","Файлы ДБФ (*.dbf)","dbf") <> 1 Тогда
        Возврат
    КонецЕсли;
    
КонецПроцедуры    

//*******************************************
Процедура Выгрузить()
    
    Попытка                  
        Если ФС.СуществуетФайл(Путь+"\"+ИмяФайла) = 1 Тогда
            ФС.УдалитьФайл(Путь+"\"+ИмяФайла);                
        КонецЕсли;
    Исключение
        Сообщить("Невозможно перезаписать файл с предыдущей выгрузкой.","!!!");
        Возврат;
    КонецПопытки;

    ДБФ=СоздатьОбъект("XBase");
        
    // Определяем поля
    ДБФ.ДобавитьПоле("Code","S", 10,);
    ДБФ.ДобавитьПоле("Name","S",30,);

    ДБФ.ДобавитьПоле("Imya","S",20,);    //Имя
    ДБФ.ДобавитьПоле("Famil","S",25,);   //Фамилия
    ДБФ.ДобавитьПоле("Otch","S",20,);    //Отчество

    ДБФ.ДобавитьПоле("Adres","S",100,);   //Адрес
    ДБФ.ДобавитьПоле("Pfone","S",32,);   //Телефон
    ДБФ.ДобавитьПоле("Sex","S",1,);      //Пол
    ДБФ.ДобавитьПоле("Dol","S",25,);      //Должность

    ДБФ.ДобавитьПоле("Dat1","D",8,);    //Дата приема

    ДБФ.ДобавитьПоле("Okl","N",12,2);    //Оклад
    ДБФ.ДобавитьПоле("Av", "N",12,2);     //Аванс
    ДБФ.ДобавитьПоле("Ser","S",12,2);
    ДБФ.ДобавитьПоле("Nom","S",12,2);

    ДБФ.ДобавитьПоле("Inv", "N",1,0);     //Инвалид
    

    ДБФ.ДобавитьПоле("INN","S",10,);      

    Попытка
        ДБФ.СоздатьФайл(Путь+"\"+ИмяФайла);
    Исключение
        Предупреждение("Ошибка создания файла " + Путь+"\"+ИмяФайла);
        Возврат;
    КонецПопытки;
    Если ДБФ.Открыта() = 0 Тогда
        Предупреждение("Ошибка открытия файла " + Путь+"\"+ИмяФайла);
        Возврат;
    КонецЕсли;

    Сч=0;
    СпрСотры=СоздатьОбъект("Справочник.Сотрудники");
    //ДБФ.КодоваяСтраница(0);
    СпрСотры.ИспользоватьДату(ДатаВыборки);
    СпрСотры.ВыбратьЭлементы();
    Пока СпрСотры.ПолучитьЭлемент() > 0 Цикл
        Если СпрСотры.ПометкаУдаления()=1 Тогда
            Продолжить;    
        КонецЕсли;
        
        Если ПустоеЗначение(СпрСотры.ДатаПриема)=1 Тогда
            Продолжить;    
        КонецЕсли;
        Если ПустоеЗначение(СпрСотры.ДатаУвольнения)=0 Тогда
            Если СпрСотры.ДатаУвольнения<'01.01.2007' Тогда
                Продолжить;    
            КонецЕсли;
        КонецЕсли;
        
        ДБФ.Добавить();
        ДБФ.Code  = СпрСотры.Код;
        ДБФ.Name  = СпрСотры.Наименование;
        ДБФ.Famil = СпрСотры.Фамилия;         //Фамилия
        ДБФ.Imya  =    СпрСотры.Имя;         //Имя
        ДБФ.Otch  = СпрСотры.Отчество;         //Отчество
        
        ДБФ.Adres = СпрСотры.Адрес;                         //Адрес
        ДБФ.Pfone = СпрСотры.Телефон;                       //Телефон
        ДБФ.Sex   = СпрСотры.Пол.Идентификатор();                   //Пол
        //ДБФ.Podr  = СпрСотры.Подразделение.Наименование;          //Подразделение
        ДБФ.Dol   = СпрСотры.Должность;//Должность
        ДБФ.Inv  =     СпрСотры.фЭтоИнвалид;
    
        ДБФ.Dat1  = СпрСотры.ДатаПриема;                 //Дата приема
        //ДБФ.Tip   = Совмещ;                                      //Совместительство
        
        ДБФ.Okl   = СпрСотры.Оклад;                                       //Оклад
          ДБФ.Av    = СпрСотры.Аванс;
        //Паспортные данные
        ДБФ.Ser   = СпрСотры.ПаспортСерия;       //Серия
        ДБФ.Nom   = СпрСотры.ПаспортНомер;       //Номер

        ДБФ.INN   = СпрСотры.ИНН;              //Строка 10

        Попытка
            ДБФ.Записать();
            Сч=Сч+1;
            Сообщить("Добавлена запись №" + Строка(Сч));
        Исключение
            Предупреждение("Ошибка записи!");
            Возврат;
        КонецПопытки;
        
    КонецЦикла;
    ДБФ.ЗакрытьФайл();
    Предупреждение("Выгрузка закончена!");
        
КонецПроцедуры

Процедура ПриОткрытии()
    
    Путь=КаталогИБ()+"\ExtForms";
    ИмяФайла="Сотрики.DBF";
    ДатаВыборки= '31.12.2006';
    
КонецПроцедуры


Vofka Подменю пользователя
сообщение 20.06.13, 12:51
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Змейкин, а если Name убрать, все остальные поля считываются нормально?

Спасибо сказали: Змейкин,

Змейкин Подменю пользователя
сообщение 20.06.13, 13:23
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(pablo @ 20.06.13, 13:48) *
И зачем открывать базу в начале 2 раза? Для пущего эффекта?

ой ничаянно


Цитата(Vofka @ 20.06.13, 13:51) *
Змейкин, а если Name убрать, все остальные поля считываются нормально?

нет тоже самое я вот выше обработку сделал и просто пытаюсь перезаписать Справочник в эту созданную таблицу но все равно не перезаписывет.

pablo Подменю пользователя
сообщение 20.06.13, 14:25
Сообщение #7

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Перенаберите название этого поля во всех местах заново. Возможно, у вас вкралась в английское слово русская а или е


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: Змейкин,

Змейкин Подменю пользователя
сообщение 20.06.13, 17:30
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

С именем и полями разобрался только всеравно ничего в файл не записываеться(

Pepe Подменю пользователя
сообщение 20.06.13, 17:34
Сообщение #9

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1434
Из: Ужгород
Спасибо сказали: 761 раз
Рейтинг: 230

В процесе выполнения какое сообщение - "ошибка..." или "Добавлена..."?

Спасибо сказали: Змейкин,

takefive Подменю пользователя
сообщение 20.06.13, 17:37
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 62
Из: Днепропетровск
Спасибо сказали: 22 раз
Рейтинг: 23.2

попробуйте убрать кириллицу из имени файла


Signature
без свинга нет музыки...

Спасибо сказали: Змейкин,

Змейкин Подменю пользователя
сообщение 20.06.13, 18:19
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

Загрузка справочника успешно завершена

думаю может в коде что то не так не записывает почемуто(


Столбцы добавляются но значениями справочника не записываются

liliput Подменю пользователя
сообщение 21.06.13, 9:41
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 24
Спасибо сказали: 1 раз
Рейтинг: 0

Попробуйте использовать функции форматирования текста: Строка(), СокрЛП(), Лев(Х,ДлинаСтроки). Может в этом проблема...

Спасибо сказали: Змейкин,

pablo Подменю пользователя
сообщение 21.06.13, 9:58
Сообщение #13

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Судя по коду, данные у вас все неправильные. Пройдитесь отладчиком по выгрузке и увидите.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: Змейкин,

Змейкин Подменю пользователя
сообщение 21.06.13, 18:30
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

Все затер оставил только имя и код все равно пустые столбцы создаются

 ДБФ=СоздатьОбъект("XBase");

// Определяем поля
ДБФ.ДобавитьПоле("Code","S", 10,);
    ДБФ.ДобавитьПоле("Name","S",30,);
  ДБФ.Добавить();
  ДБФ.Code  = СпрСотры.Код;
  ДБФ.Name  = СпрСотры.Наименование;

Pepe Подменю пользователя
сообщение 22.06.13, 9:06
Сообщение #15

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1434
Из: Ужгород
Спасибо сказали: 761 раз
Рейтинг: 230

Попробуйте не использовать в наименованиях полей системные наименования переменных или имен. Больше всего меня смущает ДБФ.Name.

Спасибо сказали: Змейкин,

Змейкин Подменю пользователя
сообщение 22.06.13, 10:14
Сообщение #16

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

ДБФ=СоздатьОбъект("XBase");

// Определяем поля
ДБФ.ДобавитьПоле("Code","S", 10,);
    ДБФ.ДобавитьПоле("Name0","S",30,);
  ДБФ.Добавить();
  ДБФ.Code  = СпрСотры.Код;
  ДБФ.Name0  = СпрСотры.Наименование;
Цитата(Pepe @ 22.06.13, 10:06) *
Попробуйте не использовать в наименованиях полей системные наименования переменных или имен. Больше всего меня смущает ДБФ.Name.

вот добавил 0 в поле name все равно не записывает бред какойто 09000000.gif (

Pepe Подменю пользователя
сообщение 22.06.13, 12:52
Сообщение #17

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1434
Из: Ужгород
Спасибо сказали: 761 раз
Рейтинг: 230

Не записывает или записи пустые? Проверьте через КоличествоЗаписей(), КоличествоПолей() (в отладчике) факт занесения информации. Проверить можно через ПолучитьЗначениеПоля () информацию после записи. Можно использовать ф-цию АвтоСохранение(1) после создания базы (не надо использовать Записать()). Можно заменить
Цитата
ДБФ.Code = СпрСотры.Код;
на
ДБФ.УстановитьЗначениеПоля(Code,СпрСотры.Код)


Сообщение отредактировал Pepe - 22.06.13, 12:53

Спасибо сказали: Змейкин,

Змейкин Подменю пользователя
сообщение 22.06.13, 17:09
Сообщение #18

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Pepe @ 22.06.13, 13:52) *
Не записывает или записи пустые? Проверьте через КоличествоЗаписей(), КоличествоПолей() (в отладчике) факт занесения информации. Проверить можно через ПолучитьЗначениеПоля () информацию после записи. Можно использовать ф-цию АвтоСохранение(1) после создания базы (не надо использовать Записать()). Можно заменить на
ДБФ.УстановитьЗначениеПоля(Code,СпрСотры.Код)

Поля создаются а значения в них нет пустые столбцы
ДБФ.УстановитьЗначениеПоля(Code,СпрСотры.Код)
так не видит "code" сделал так
ДБФ.УстановитьЗначениеПоля("Code".СпрСотры.Код)
но тоже не помогло(((((( help.gif

Pepe Подменю пользователя
сообщение 22.06.13, 19:39
Сообщение #19

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1434
Из: Ужгород
Спасибо сказали: 761 раз
Рейтинг: 230

Надо в отладчике посмотреть значения ваших переменных. Возможно они пустые и записываются пустые поля.

Спасибо сказали: Змейкин,

Змейкин Подменю пользователя
сообщение 22.06.13, 20:10
Сообщение #20

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0


В самом Справочнике Элементы есть но при просмотре в отладчике по полям пишет ошибка выражения

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 0:55
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!