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

Хранилище

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

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



> Проверка сотрудников          
Змейкин Подменю пользователя
сообщение 13.07.13, 23:30
Сообщение #1

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

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

Возврат 1;
КонецФункции
//********************************************************************************
******************
Процедура Загрузить()                                                                  
Если ОткрытьБазу()=0 Тогда
     Возврат;
КонецЕсли;
    
ДБФ.КодоваяСтраница(1);
Сч=0;
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьДату(НачМесяца(ДатаВПериоде));
СпрРод=СоздатьОбъект("Справочник.Сотрудники");
;
// Цикл по записям ДБФ базы
Пока ДБФ.ВКонце()=0 Цикл

  тРодитель = ПолучитьПустоеЗначение("Справочник.Сотрудники");
  ЭтоГруппа = ДБФ.Group;
  КодРодителя = ДБФ.CodeR;
  
  Если КодРодителя<>0 Тогда
   Если СпрРод.НайтиПоКоду(КодРодителя,0)=1 Тогда                  
    тРодитель = СпрРод.ТекущийЭлемент();
    СпрСотр.ИспользоватьРодителя(тРодитель);
   Иначе
    Сообщить("Не найден родитель с кодом "+ КодРодителя);
   КонецЕсли;
  Иначе
   СпрСотр.ИспользоватьРодителя(тРодитель);
  КонецЕсли;

   Если СпрСотр.НайтиПоКоду(СокрЛП(ДБФ.Code),0)=0 Тогда
    Если ЭтоГруппа = 1 Тогда
     СпрСотр.НоваяГруппа();
     СпрСотр.Новый();              
     Сообщить("пошла запись")
   Иначе
    СпрСотр.Новый();
   КонецЕсли;
        текИНН = СокрЛП(ДБФ.INN);
  СпрСотр.Код =СокрЛП(ДБФ.Code);
  СпрСотр.Наименование= СокрЛП(ДБФ.Name0);

  Если ЭтоГруппа = 0 Тогда
   СпрСотр.Имя      = СокрЛП(ДБФ.Imya);    //Имя
   СпрСотр.Фамилия  = СокрЛП(ДБФ.Famil);   //Фамилия
   СпрСотр.Отчество = СокрЛП(ДБФ.Otch);    //Отчество

   СпрСотр.Адрес = СокрЛП(ДБФ.Adres);   //Адрес
   СпрСотр.Телефон = СокрЛП(ДБФ.Pfone);    //Телефон
   Если ДБФ.Sex="М" Тогда
    СпрСотр.Пол=Перечисление.Пол.М;
   ИначеЕсли ДБФ.Sex="Ж" Тогда
    СпрСотр.Пол=Перечисление.Пол.Ж;
   КонецЕсли;
      СпрСотр.Должность = СокрЛП(ДБФ.Dol);   //Должность
    
      СпрСотр.ДатаПриема = СокрЛП(ДБФ.Dat1);           //Дата приема
   СпрСотр.Оклад = СокрЛП(ДБФ.Okl);//Оклад
   СпрСотр.Аванс =СокрЛП(ДБФ.Av); //аванс
      //Паспортные данные
      СпрСотр.ПаспортСерия = СокрЛП(ДБФ.Ser);     //Серия
   СпрСотр.ПаспортНомер = СокрЛП(ДБФ.Nom);     //Номер

   СпрСотр.ИНН=СокрЛП(ДБФ.INN);
  КонецЕсли;
       КонецЕсли;
  СпрСотр.Записать();
        Сч=Сч+1;
  Сообщить(Строка(Сч)+"Добавлен элемент справочника - "+ДБФ.Name0+" ИНН: "+текИНН);
  ДБФ.Следующая();
КонецЦикла;
ДБФ.ЗакрытьФайл();
СпрСотр="";
СпрСотрР="";
Сообщить("Загрузка справочника закончена.");
КонецПроцедуры
//********************************************************************************
*******************
Процедура Выбрать()
Если (ФС.ВыбратьФайл(0,ИмяФайла,Путь,"Выбор файла загрузки","DBF файлы|*.DBF")=0) Тогда
  Путь="";
  Возврат;
КонецЕсли;
КонецПроцедуры
Путь=КаталогИБ();
ДатаЗаписи='01.12.2006';

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

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Метод "НайтиПоРеквизиту" объекта "Справочник".


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

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

igmig65 Подменю пользователя
сообщение 14.07.13, 8:41
Сообщение #3

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 614
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Если конфигурация бухучет, то нужно для реквизита ИНН спр.Сотрудники поставить флаг Сортировка, иначе НайтиПоРеквизиту() не сработает.
Если ЗиК, то справочник ФизЛица.

Сообщение отредактировал igmig65 - 14.07.13, 8:42

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

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

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

мне ж сначало нужно сравнить если есть уже этот реквизит и он ли одинаковый с ИНН с таблицы?Это мне сделать ти п реквизита числовым и сравнивать?

Домовик Подменю пользователя
сообщение 14.07.13, 16:30
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

ИспользоватьРодителя() метод прописывается только для элементов справочника непервого уровня. для первого - просто молчите, создавать пустоезначение не нужно.

НоваяГруппа() это не признак того, что элемент справочника группа. Это создание элемента-группы, новый() - создание элемента-негруппы. Не "С" , а "ВМЕСТО"

НайтиПоКоду(), НайтиПоРеквизиту() - не только для проверки условия, в первую очередь вы позиционируетесь на нужном элементе.

Сообщение отредактировал Домовик - 14.07.13, 16:35

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

Домовик Подменю пользователя
сообщение 14.07.13, 18:31
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

Если КодРодителя<>0 Тогда
   Если СпрРод.НайтиПоКоду(КодРодителя,0)=1 Тогда                  
   // тРодитель = СпрРод.ТекущийЭлемент();
    СпрСотр.ИспользоватьРодителя(спрРод.ТекущийЭлемент());
   Иначе
    Сообщить("Не найден родитель с кодом "+ КодРодителя);
   КонецЕсли;
// Иначе
   //СпрСотр.ИспользоватьРодителя(тРодитель);  --- просто не используете метод, если родителя нет
  КонецЕсли;


Если СпрСотр.НайтиПоКоду(СокрЛП(ДБФ.Code),0)=0 Тогда
    Если ЭтоГруппа = 1 Тогда
    СпрСотр.НоваяГруппа();
//     СпрСотр.Новый();      --- это лишнее
        
    
   Иначе
    СпрСотр.Новый();
   КонецЕсли;


Сообщение отредактировал Домовик - 14.07.13, 18:34

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

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


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

 

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