Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:31

Как программно добавить сотрудника?

Автор Givy, 20 фев 2013, 17:24

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

Givy

Делаю обработку по вводу данных из dbf файла
Одна функция ищет в справочнике сотрудника и либо возвращает его, либо добавляет нового и возвращает. Т.к. Сотруднику требуется Физлицо, то другая функция аналогичным образом возвращает либо свежесозданное, либо существующее Физлицо.
При работе происходят какие-то чудеса. Если Физлицо уже есть, то этот реквизит Сотрудника добавляется нормально. Если оно только создано, то в справочнике "Физические лица" создается нормально, функцией возвращается, но Сотруднику не добавляется.
Что не так? Код приведен ниже

// Поиск сотрудника в базе или создание нового
Функция ПолучитьСотрудника(Base)
Сотрудник = Справочники.СотрудникиОрганизаций.НайтиПоКоду(Base.FcAc_Rn);
//Если нет, то создладим нового
Если Сотрудник = Справочники.СотрудникиОрганизаций.ПустаяСсылка() тогда
Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент();
ФизЛицо = ПолучитьФизЛицо(Base);
Сотрудник.Физлицо = ФизЛицо;
Сотрудник.Код = Base.FcAc_Rn;
Сотрудник.Наименование = ФизЛицо.Наименование;
Сотрудник.Организация = Учреждение;
Сотрудник.Записать();
КонецЕсли;

Возврат Сотрудник;
КонецФункции

// Поиск физлица или создание нового
Функция ПолучитьФизЛицо(Base)
ФизЛицо = Справочники.ФизическиеЛица.НайтиПоКоду(Base.OrBase_Rn);
//Если нет, то создадим нового
Если ФизЛицо = Справочники.ФизическиеЛица.ПустаяСсылка() тогда
ФизЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
ФизЛицо.Код = Base.OrBase_Rn;
ФизЛицо.Наименование = СокрП(Base.SurName) + " " + СокрП(Base.FirstName) + " " + СокрП(Base.SecondName);
ФизЛицо.ДатаРождения = Base.BirthDay;
ФизЛицо.Записать();
КонецЕсли;

Возврат ФизЛицо;
КонецФункции

Dethmontt

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

snake586

Из внешней обработки пытаюсь добавить сотрудника. Физлицо создается, а новый сотрудник не появляется. Исключение не отрабатывается, ошибка не возникает. Что не так делаю? Или какие могут быть причины не добавления нового сотрудника?

Процедура КнопкаВыполнитьНажатие(Кнопка)
   ФизЛк = Справочники.ФизическиеЛица.СоздатьЭлемент();
   ФизЛк.Наименование = ИмяСотрудника;
   ФизЛк.Записать();
   СотОр = Справочники.СотрудникиОрганизаций.СоздатьЭлемент();
   СотОр.Наименование = ИмяСотрудника;
   СотОр.Физлицо = ФизЛк.Ссылка;
   СотОр.Организация = Справочники.Организации.НайтиПоКоду("000000001");
   СотОр.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000001");
        Попытка
            СотОр.Записать();   
        Исключение
            Предупреждение("Не удалось записать объект """ + СотОр + """!
                   |" + ОписаниеОшибки(), 60);
   КонецПопытки;
КонецПроцедуры

sertak

В УПП, например, ваш код создает сотрудника, но сотрудник не отображается в списке, пока не установишь флаг в меню Действия  Показывать архив.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск