Создать сотрудника программно 1с
(1)Тоже сначала брал за основу (20), но при программном создании пользователя в 1С:Документооборот с ОбменДанными.Загрузка = Истина не выполняются процедуры при записи пользователя и в итоге не хватает прав на объекты.
Для создания пользователя без использования ОбменДанными.Загрузка = Истина, необходимо заполнение структуры:
И передачи ее в дополнительные свойства:
А зачем заполнять реквизиты формы, если её нет, да и сама форма не нужна? (элемент создается программно) (2) Если эти реквизиты не заполнены, пользователь не сможет зайти в базу. (3) А что мешает их заполнить на сервере?И вообще вопрос, заааачееем создавать пользователя программно? (4) Если у тебя 250 пользователей, все они есть в соседней базе, и их нужно быстро создать в новой базе, программное создание обработкой это выход. (3) Реквизиты формы на это влиять никак не могут, она не используется при входе в 1С. Может реквизиты объекта? Но в чем тогда проблема их заполнить?
Авторизация не выполнена. Работа системы будет завершена.
Пользователь "Такой то" не найден в справочнике "Пользователи".
Обратитесь к администратору.
Это потому, что в справочнике Пользователи не заполнено поле ПользовательИБИмя.
А это реквизит формы элемента.
Связь между пользователем и пользователем ИБ устанавливаю так:
НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
А это реквизит формы элемента.
Вы путаете реквизит справочника и реквизит формы. Это разные вещи, реквизит справочника существует независимо от формы. Насколько понял, вам в этот реквизит( справочника ) нужно просто записать имя пользователя информационной базы, так, как он в меню "Администрирование"-"Пользователи" написан (17) Я ничего не путаю. Это реквизит формы элемента справочника, и в него надо записать имя пользователя информационной базы, так, как он в меню "Администрирование"-"Пользователи" написан. Но как это сделать, я не знаю. ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Пользователь.ИдентификаторПользователяИБ);
Авторизация не выполнена. Работа системы будет завершена.
Пользователь "Такой то" не найден в справочнике "Пользователи".
Обратитесь к администратору.
Это потому, что в справочнике Пользователи не заполнено поле ПользовательИБИмя.
А это реквизит формы элемента.
Связь между пользователем и пользователем ИБ устанавливаю так:
НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
Я эту задачу решил, и хочу поделиться с вами своим опытом.
Лирическое отступление
Я потратил на попытки понять, в какие регистры надо записать Сотрудника, практически целый день. Смотрел код нескольких форм справочника Сотрудники, нажимал F12, погружаясь в дебри общих модулей, некоторые из которых не делали ничего, кроме вызова функции из другого общего модуля. Зачем так было сделано, почему функции модуля содержат только возврат функций другого модуля? Достаточно сложно было разобраться в хитросплетениях этого кода.
Программное создание Сотрудника
Итак, что же нужно сделать, чтобы создать Сотрудника?
- Создать элемент справочника ФизическиеЛица. При этом желательно заполнить ИНН и СНИЛС.
- Создать элемент справочника Сотрудники. Установить ему реквизиты ФизическоеЛицо и ГоловнаяОрганизация.
- Сделать запись в регистр ДокументыФизическихЛиц
- Сделать запись в регистр МестаВыплатыЗарплатыСотрудников и создать для этого элемент справочника БанковскиеСчетаКонтрагентов
- Самое неочевидное - запись в регистр РолиСотрудников с ролью Договорник либо Работник. Я потратил на это больше всего времени и долго недоумевал, почему у меня не открывается в режиме Предприятия созданный Сотрудник.
- Сделать запись в регистр ДанныеДляПодбораСотрудников.
Также у меня в комментариях упоминается регистр ТекущиеКадровыеДанныеСотрудников, но он, судя по всему, необязателен - у меня заработало и без него.
После всех этих магических записей, наконец, можно создать договор ГПХ с Сотрудником.
Программное создание Договора ГПХ или Авторского договора
С созданием договоров было проще. В ЗУП есть два вида договоров для внештатных сотрудников: ДоговорРаботыУслуги для ГПХ и ДоговорАвторскогоЗаказа для авторов или, например, журналистов. Также я устанавливал признак УдалитьОплатаПоАктамВыполненныхРабот. Остальное можно посмотреть в коде
Код
В коде предполагается, что есть ТаблицаЗначений, загруженная из файла Excel. Пара нюансов: в колонке ВидРаботАвторский предполагается, что находится либо строка "АвторскийДоговор", либо "ДоговорГПХ", руководителя брал из регистра СведенияОбОтветственныхЛицах, организацию заполнял на форме обработки. Для получения сведений о руководителе есть функция в общем модуле СведенияОбОтветственныхЛицах, но я использовал свою - на случай, если данные не заполнены, нужно было подставить значения по умолчанию.
Как в 1С создать карточку сотрудника, если в справочнике Физические лица он уже есть?
В программе есть два самостоятельных справочника:
Физическое лицо добавляется в справочник только один раз. Элементов Сотрудник , соответствующих данному лицу, может быть столько, сколько раз это лицо принималось на работу.
Оформить сотрудника, если физическое лицо в справочнике уже есть, можно несколькими способами:
- из карточки физического лица;
- из журнала Сотрудники ;
- из документа Прием на работу .
Создание сотрудника из карточки физического лица
Откройте карточку физического лица, которое нужно принять на работу (раздел Справочники — Зарплата и кадры — Физические лица ).
Перейдите по ссылке Работа .
По ссылке Новое место работы создайте нового сотрудника. При этом данные физического лица будут перенесены в карточку сотрудника автоматически.
Создание сотрудника из журнала Сотрудники
Создайте сотрудника в разделе Зарплата и кадры — Кадры — Сотрудники — кнопка Создать .
Начните вводить данные в поле ФИО и нажмите Enter. Если физическое лицо с такими данными в программе уже введено, программа выдаст подсказку Найден человек с похожим именем .
Создание сотрудника из документа Прием на работу
Создайте документ Прием на работу в разделе Зарплата и кадры — Кадры — Кадровые документы — Кнопка Создать — Прием на работу .
Установите курсор мыши в поле Сотрудник , выберите в выпадающей подсказке команду Создать . Далее алгоритм создания сотрудника аналогичен предыдущему пункту.
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
Карточка публикации
(1 оценок, среднее: 5,00 из 5)
Данную публикацию можно обсудить в комментариях ниже.Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Все комментарии (1)
Благодарю за полезную информацию
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявкуНажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Как не попасть в ловушку, работая с контрагентами из ЕАЭС
[17.11.2021 запись] Практический переход на ФСБУ 6 и ФСБУ 26 в 1С
Переход на ФСБУ 6/2020 «Основные средства» в 1С по альтернативному алгоритму
Изменения в 2021 году, о которых нужно знать бухгалтеру
[11.10.2021 запись] Учет ОС по-новому: ФСБУ 6/2020, ФСБУ 26/2020, ФСБУ 25/2018
[29.10.2021 запись] Пообъектный учет ОС и подходы к определению и пересмотру СПИ
Актуальный и своевременный семинар, помог учесть некоторые моменты в отчете за 2020г.
Для начала проверим, как все работает в БП3, наверное в ЗУП3 должно работать аналогично? Если там будет своя специфика, то поправим на месте.
Вообще говоря, 1С предполагает ручное создание пользователей и прав и тема автоматизации этого процесса не документирована, а значит, требуется разбираться и смотреть, что можно использовать из готового кода 1С.
Ручное создание пользователя
Создадим пользователя вручную:
Добавим ему права путем включения в нужную группу доступа:
При всех этих манипуляциях я запустил замер производительности и при запуске 1С выключил режим отладки, чтобы не запускало фоновые задания.
Таким образом я нашел код, где программа создает/обновляет пользователя:
Этот код дает нам примерное понимание, как создавать пользователя программно.
Программное включение/исключение пользователя в группы доступа. Неоптимальное
Теперь нужно разобраться, как включить пользователя в группы доступа. Для этого, на самом деле я не анализировал БСП, а посмотрел ссылки на созданного пользователя в базе:
Пользователям назначаются почему-то персональные группы доступа:
Очищаются они и в конфигураторе:
Теперь попробуем программно изменить группу доступа, написав такой код:
Получилось, при первом запуске у пользователя включилась и группа доступа:
И появились роли в конфигураторе:
Проверил, что повторный запуск кода убирает группу доступа и роли в конфигураторе.
Программное включение/исключение пользователя в группы доступа. Правильное
Пока я разбирался с группами доступа, задал вопрос на Мисте и мне подсказали, как более просто включать пользователя в группы доступа.
В функции ВключитьПрофильПользователю можно указывать идентификатор профиля, но к сожалению, предопределенный только один Администратор:
Поэтому для универсальности будем искать профиль по наименованию:
Проверки и тестирование показали, что нужные профили подключаются к пользователю и нужные роли создаются у пользователя информационной базы. При этом должны создаваться сами и группы, если их нет. Это упрощает нашу работу.
Программное создание пользователя и назначение ему прав доступа
Попробуем создать пользователя ГБ3 программно и назначить права доступа:
Также устанавливаются роли и профили групп доступа.
Теперь настало время проверить, как код работает в Обновляторе. Код смотрите в конце статьи.
Скрипт отработал успешно:
Проверяем, при входе в базу пользователь есть, под пользователем в базу заходит:
В списке пользователей пользователь есть:
Права те, что заказывали:
Как быть с не упрощенными правами (ЗУП3)
Аналогично проверяем на ЗУП 3, получаем ошибку:
К сожалению (и это недостаток 1С), эта процедура не вынесена в общий модуль, но она несложная и ее можно упрощенно вставить даже в наш код.
В итоге получился универсальный код, который работает и для упрощенной и для не упрощенной системы прав.
В упрощенной каждому профилю и пользователю ставится в соответствие персональная группа доступа. В не упрощенном в одну группу доступа можно включать несколько пользователей.
Итоговый код скрипта для Обновлятора
Важно! Если добавляете администратора и других пользователей, начинайте с администратора, т.к. иначе получите ошибку, что вы не создали администратора.
Вот какой код получился:
Как видно, можно использовать один скрипт для разных баз, прописывая пользователей для разных типов баз (БП, ЗУП) отдельно.
Прежде чем мы будем добавлять нового сотрудника, мы должны добавить новый элемент в справочник «Физические лица». Заходим «Зарплата и кадры», «Физические лица».
Здесь мы должны создать, с помощью кнопки «Создать», элемент Физическое лицо, которое в дальнейшем мы оформим в программе как сотрудника.
Заполняем полное имя (Фамилия, Имя, Отчество), заполняем все необходимые данные: дату рождения, ИНН, Снилс, вид документа, место рождения, гражданство.
Обязательно заполняем правильным образом, адрес по прописки и адрес места проживания.
После того как мы все эти данные, всю информацию занесли, мы записываем наш элемент. У нас в справочнике «Физические лица» появился Иванов Иван Иванович.
После чего, мы переходим к созданию нового элемента в справочнике «Сотрудники». Заходим в «Зарплата и кадры», справочник «Сотрудники».
Создание нового элемента.
Начинаем набирать Фамилию, Имя, Отчество нашего сотрудника, нажимаем Enter. Программа нам говорит, что она нашла физическое лицо с похожим именем Иванов Иван Иванович. Если это полный тезка, то мы можем сказать «Нет, это – другой человек» и продолжить создание сотрудника дальше, либо говорим «Да, это тот, кто мне нужен», то самое физическое лицо, которое мы создаем как сотрудника.
И тогда программа нам, соответственно, подтягивает к нашему сотруднику все необходимые данные, которые заполняются для него (Иванова Ивана Ивановича), как для физического лица. После чего, мы можем эту карточку сотрудника «Записать и закрыть».
У нас соответственно появляется в справочнике сотрудника, новый сотрудник Иванов Иван Иванович.
Читайте также: