- КПП должен быть доступен только для контрагентов — юридических лиц. Доступность должна отрабатываться как при изменении типа, так и при перечитывании элемента справочника из ИБ.
- При изменении наименования полное наименование должно заполняться с разворачиванием распространённых сокращений организационно-правовых форм. Например, АО «Вектор» должно превращаться в Акционерное общество «Вектор».
- Должна быть реализована проверка корректности ИНН как для физических, так и для юридических лиц. Проверять нужно и при попытке записи — с выдачей предупреждения и отказом, и при изменении ИНН — с подсветкой поля ввода или выводом текста ошибки рядом с ним.
Которая открывается для пользователей без права доступа «Администрирование» и содержит элементы управления для реквизитов сотрудника, упорядоченные по смыслу.
- В состав ФО должны входить реквизиты, относящиеся к расчету зарплаты, справочника **«Сотрудники»**, а константа должна присутствовать флажком в общей форме **«НастройкаПрограммы»**.
Тип **«СправочникСсылка.Сотрудники»**. Должен заполняться элементом справочника **«Сотрудники»**, идентификатор пользователя ИБ которого совпадает с идентификатором текущего пользователя ИБ.
Роль **«БазовыеПрава»** должна давать права на чтение, просмотр и ввод по строке всех данных. Редактирование, добавление и изменение разрешается только для справочника **«Контрагенты»**. Роль не должна давать права на открытие настроек программы.
Создайте константу **«ВестиРасчётЗарплаты»** типа **«Булево»** и соответствующую ФО.
Константу включите в подсистему **«Настройки»**. Не забудьте снять флажок «Использовать стандартные команды», чтобы константа не появилась в командном интерфейсе сама по себе.
* Создайте справочник и наполните его указанным в Требованиях набором реквизитов.
* Включите зарплатные реквизиты в состав ФО **«ВестиРасчётЗарплаты»**.
* Создайте две формы элемента: **«ФормаАдминистратора»** и **«ФормаПользователя»**. Форма администратора будет основной.
* В модуле менеджера определите обработчик события **«ОбработкаПолученияФормы()»**. В нём, в зависимости от наличия права доступа **«Администирование»**, открывайте форму администратора или форму пользователя. Право администрирования проверяйте так:
Можно создать копированием формы **«ФормаПользователя»**.
Создайте в ней две группы: левую и правую. В левую выведите реквизиты сотрудника в разумном порядке, как в форме пользователя.
Добавьте реквизиты формы **«ВходРазрешён»** (Булево), **«ИмяДляВхода»** и **«Пароль»** и выведите их в правую группу флажком и двумя полями ввода. Для поля ввода **«Пароль»** включите режим пароля, чтобы введённое забивалось звёздочками.
В обработчике создайте случайный пароль из 5–6 букв и цифр, отключив у поля ввода **«Пароль»** режим пароля, чтобы пользователь увидел его и мог скопировать.
Найдите пользователя ИБ по идентификатору — **«ТекущийОбъект.ИдентификаторПользователяИБ»**.
Заполните по данным пользователя ИБ реквизиты формы **«ИмяДляВхода»** и **«Пароль»**. Реквизит **«ВходРазрешён»** заполните по реквизиту пользователя ИБ **«АутентификацияСтандартная»**.
Если идентификатор не заполнен, или поиск пользователя ИБ возвращает **«Неопределено»**, считайте, что вход не разрешён, а имя и пароль пусты.
Если идентификатор пользователя ИБ заполнен — найдите пользователя ИБ и обновите его реквизиты значениями реквизитов **«ВходРазрешён»**, **«ИмяДляВхода»** и **«Пароль»**.
Если идентификатор не заполнен, а флажок **«ВходРазрешён»** выставлен — создайте пользователя ИБ и добавьте ему роль **«Метаданные.Роли.БазовыеПрава»**.
После создания пользователя ИБ присвойте его идентификатор реквизиту **«ИдентификаторПользователяИБ»** записываемого объекта, чтобы найти этого пользователя ИБ при следующем открытии формы.
Обратите внимание, что учебная версия платформы не позволяет задать непустой пароль. Логику задания пароля всё равно нужно реализовать, а в тестах задавать пустой пароль.
- Создайте параметр сеанса **«ТекущийСотрудник»** типа **«СправочникСсылка.Сотрудники»**.
- В модуле сеанса определите процедуру **«УстановкаПараметровСеанса»**.
- В ней, для простоты не анализируя параметр **«ТребуемыеПараметры»**, найдите сотрудника по значению реквизита **«ИдентификаторПользователяИБ»**, используя функцию менеджера:
В модуле объекта определите обработчик **«ОбработкаЗаполнения»**, в котором заполните реквизит **«Тип»** значением по умолчанию **«ЮридическоеЛицо»**, а реквизит **«Ответственный»** — значением параметра сеанса **«ТекущийСотрудник»**.
Реализуйте управление доступностью поля ввода **«КПП»** в зависимости от типа контрагента, сделав это в обработчиках событий **«ПриОткрытии»** формы и **«ПриИзменении»** поля ввода **«Тип»**.
Реализуйте функцию определения корректности ИНН, которая работала бы со всеми ИНН и возвращала бы, кроме значения Булево (Истина — корректен, Ложь — некорректен), текстовое описание ошибки, как неявно возвращаемое значение.
1. В обработчике события **«ПередЗаписью»** формы — с отказом от записи при неверном ИНН и выводом предупреждения, содержащего текстовое описание ошибки.
2. В обработчике события **«ПриИзменении»** поля ввода ИНН — с подсветкой текста поля ввода или с выводом рядом с полем ввода текстового описания ошибки в виде декорации или подсказки.
В обработчике события **«ПриИзменении»** поля ввода **«Наименование»** реализуйте поиск распространённых сокращений организационно-правовых форм в начале строки и заполнение полного наименования по краткому с заменой сокращения ОПФ на её полное наименование. Не изменяйте полное наименование, если оно уже было изменено пользователем вручную. Чтобы это реализовать, при чтении формы получайте полное наименование из краткого и, если полученный заменой результат соответствует полному наименованию, запоминайте в невидимом булевском реквизите формы признак того, что полное наименование можно изменять автоматически.
* пометку на удаление и удаление помеченных предопределённых элементов.
В состав роли **«БазовыеПрава»** включите права на чтение, просмотр и ввод по строке всех данных, включая параметры сеанса. Разрешите также изменение, добавление, редактирование и интерактивную пометку удаления справочника **«Контрагенты»**.