[РЕШЕНО] Программное заполнение справочника "Сотрудники"

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем Виктор13245234, 16 апр 2016.

  1. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    Всем здравствуйте! Работаю в ЗиК 7.7 последнего релиза.Заполняю программно справочник "Сотрудники" из текстового файла. Вначале распарсил файл и вывел в таблицу значений. Но при записи в объект ошибка "Код не уникален" и записывается только код и наименование и состояние "не принят на внутреннее совместительство". Код записи сотрудника прилагаю и скрин
    --- Объединение сообщений, 16 апр 2016 ---
    Код:
    СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
    Подр = СоздатьОбъект("Справочник.Подразделения");
    Должность = СоздатьОбъект("Справочник.Должности");
    ГрафикРаботы = СоздатьОбъект("Справочник.ГрафикиРаботы");
    Пол = СоздатьОбъект("Справочник.ОКИН");
    //СпрСотр.ИспользоватьРодителя(грпРаботающие);
    ТабЗнач.ВыбратьСтроки();
    Пока ТабЗнач.ПолучитьСтроку() = 1 Цикл  
    СпрСотр.Новый();
        СпрСОтр.ИспользоватьРодителя(ТабЗнач.Подразделение);
        СпрСотр.Наименование = ТабЗнач.ФИО;
        СпрСотр.Код = ТабЗнач.ТабНомер;
    
    //    Если Подр.НайтиПоНаименованию(ТабЗнач.Подразделение)=1 Тогда
    //СпрСотр.Подразделение = Подр.ТекущийЭлемент();
    //КонецЕсли;
    //    СпрОКИН = СоздатьОбъект("Справочник.ОКИН");
    Если Пол.НайтиПоНаименованию(ТабЗнач.Пол) = 1 Тогда
        СпрСотр.Пол = Пол.ТекущийЭлемент();
        КонецЕсли;
        СпрСотр.ИспользоватьДату(ТекущаяДата());   
        СпрСотр.ИНН = ТабЗнач.ИНН;
        СпрСотр.СтраховойНомерПФР = ТабЗнач.ПФР;
        СпрСотр.МестоРождения = ТабЗнач.МестоРождения;
        СпрСотр.ДатаРегистрации = ТабЗнач.ДатаРегистрации;
        Если Должность.НайтиПоНаименованию(ТабЗнач.Должность) = 1 Тогда
        СпрСотр.Должность = Должность.ТекущийЭлемент();
    КонецЕсли;
    Если ГрафикРаботы.НайтиПоНаименованию(ТабЗнач.ГрафикРаботы) = 1 Тогда
        СпрСотр.ГрафикРаботы = ГрафикРаботы.ТекущийЭлемент; 
        КонецЕсли;
        СпрСотр.Аванс = ТабЗнач.Аванс;
        СпрСотр.ТрудовойДоговорНомер = ТабЗнач.ТрудНомер;
        СпрСотр.ТрудовойДоговорДата = ТабЗнач.ТрудДата;
        СпрСотр.АдресПрописка = ТабЗнач.Прописка;
        СпрСотр.Записать();

    Вложения:

  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    обратите внимание на строку с кодом "1".. У вас наверняка создались элементы с кодом 2-9 после чего все встало колом.
    Верните лидирующие нули будит вам счастье

    + Обращаю ваше внимание, что не заполняете реквизит ОсновнойЭлемент. Это крайне важно.
  3. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    А про какую строку "обратите внимание на строку с кодом "1"" идет речь? А про какие лидирующие нули идет речь и в каком месте? Насчет реквизита "ОсновнойЭлемент" - я хз как его заполнить. У него тип Справочники.Сотрудники, а я только создаю только сотрудника. В 8.3 все намного проще :)
  4. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    код 1,2,...9 см. в списке сотрудников, если они без нулей, дополни ими либо руками, либо обработкой
    и при загрузке учти это
    основной элемент заполняй текущим элементом

    и вот здесь
    СпрСотр.ИспользоватьДату(ТекущаяДата());
    я бы брал не на текущую дату, а на начало месяца или, ещё лучше, начало года
  5. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    Добавил в цикле заполнения. Но результат тот же. Но Значение остается "не принят на внутреннее совместительство" и не заполняются остальные реквизиты.
    Код:
    СпрСотр.ИспользоватьДату(НачМесяца(ТекущаяДата()));
    СпрСотр.ОсновнойЭлемент=СпрСотр.ТекущийЭлемент();
    
  6. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    выкладывай обработину и файл текста
    matyazh нравится это.
  7. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29

    Вложения:

  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    СостояниеФизлица
    1)Пока не поправишь нумерацию - ничего не изменится.
    2)Там есть хитрый реквизит СостояниеФизлица. Это перечисление. Изменяется ТОЛЬКО документом.
    Т.е. чтобы люди были сразу в штате при загрузке - нужно формировать документы о приеме на работу. И в этом документе заполнять нужные реквизиты...
  9. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    Спасибо. Попробую сегодня, напишу о результате
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    не за что.
    1) Исправляйте нумерацию (иначе не сможете автоматически создавать новые элементы справочника)
    2) Создавайте документы и все должно заработать
  11. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    еще вопрос:есть реквизит "Оклад" в доке прием на работу, у него тип "Неопределенный". Как его заполнить? Хочу в него число записать, не получается.
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    См. в СП метод НазначитьТип
  13. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    о_О. Спасибо :)
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  15. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    Там получается алгоритм такой:
    1) СОздаем сотрудника с состоянием. Сохъраняем. У него состояние "Физическое лицо" автоматом ставится.
    2) Принимаем на работу и все нормально
    Это я делал вручную
    Вопрос: Как это состояние поставить? В перечислении ""СостоянияФизЛица" нет "ФизическоеЛицо". Заранее спасибо!
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    присвойте реквизиту ОсновнойЭлемент справочника ссылку на сам элемент....

    Т.е примерно так

    Спр.Записать();
    Спр.ОсновнойЭлемент=Спр.ТекущийЭлемент();
    Спр.Записать();

    Этот реквизит отвечает за совместительство...
  17. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    Именно так и сделал! Спасибо! Нашел здесь Ваше сообщение не сразу увидел :)
    Последнее редактирование модератором: 21 апр 2016
  18. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    Всем спасибо! Все получилось!
  19. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  20. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    179
    Симпатии:
    3
    Баллы:
    29
    еще один вопрос: Хочу сотрудника записать в группу "Основное подразделение". Пишу следующее:
    Код:
    СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
    СпрСотр.ОсновнойЭлемент=СпрСотр.ТекущийЭлемент();
         Если СпрСотр.НайтиПоНаименованию (ТабЗнач.Подразделение) = 1 Тогда
         СпрСотр.ИспользоватьРодителя = СпрСотр.ТекущийЭлемент();
         КонецЕсли;
    Что я делаю не так?
    ТабЗнач.Подразделение = "Основное подразделение". Группа есть такая в справочнике

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