Ключевые
слова: Автор, редактор, создание, пользователь
Часто клиент в лице генерального директора, главного бухгалтера или какого-либо другого представителя фирмы просит вещи, связанные с определением того, кто из пользователей и когда создал или отредактировал какой-либо элемент справочника, документ, запись в регистре сведений и т. д.
Обычно это “разбор полетов” с поиском виновных или разделение прав на объекты по пользователям.
Также можно упомянуть об анализе активности пользователей, выявлении пиков и спадов работы пользователей, построение отчетов с использованием этой информации и т. д.
Штатные средства программы едва ли годятся для всего этого хотя бы потому что лог хранится в отдельном файле, а не в базе, лог текстовый, то есть не поддерживает ссылочную целостность, привязать данные из лога в отчеты можно едва ли и т. д.
Что же требуется для того, чтобы, скажем, добавить в конфигурацию регистрацию, хранение и получение информации о том, кто и когда создавал объект и кто и когда его последним редактировал?
Для полноты картины предположим также, что у нас несколько распределенных баз данных, список которых хранится в плане обмена “РаспределенныеБазы”.
Итак, для этого нам потребуется несколько вещей.
Во-первых, создать справочник “Пользователи”, если его нет.
Во-вторых, настроить авторизацию пользователей, то есть при запуске программы присваивать параметру сеанса “ТекущийПользователь” элемент справочника “Пользователи”, соответствующий текущему пользователю в конфигураторе.
Пример такой авторизации можно посмотреть в статье Книга знаний: v8: Авторизация пользователей при входе в программу.
Параметр сеанса вместо глобальной переменной лучше использовать хотя бы по двум причинам, это возможность завязки RLS на текущем пользователе и возможность вместо
В-третьих, в каждый объект метаданных, для которого предполагается делать требуемую функциональность, добавить реквизиты “Автор” и “Редактор” типа “Справочник.Пользователи”, “ДатаСоздания” и “ДатаРедактирования” типа “Дата+Время” и “РаспределеннаяБазаСоздания” и “ РаспределеннаяБазаРедактирования” типа “ПланОбмена. РаспределенныеБазы”.
В-четвертых, в модуль каждого объекта в обработчик “ПередЗаписью” прописать заполнение этих реквизитов.
Делается это с помощью примерно такого кода
Если ЭтоНовый() Тогда
Автор = ПараметрыСеанса.ТекущийПользователь;
ДатаСоздания = ТекущаяДата();
РаспределеннаяБазаСоздания = ПланыОбмена.РаспределенныеБазы.ЭтотУзел();
Иначе
Редактор = ПараметрыСеанса.ТекущийПользователь;
ДатаРедактирования = ТекущаяДата();
РаспределеннаяБазаРедактирования = ПланыОбмена.РаспределенныеБазы.ЭтотУзел();
КонецЕсли;
Собственно, на этом все.
Работа для программистов 1С
Не нам вам рассказывать, что заработная плата далеко не единственная мотивация для программистов 1С. Важен профессиональный и карьерный рост.
Именно вам присуще постоянное стремление вперед к освоению новых программ, к решению все более сложных задач, к разработке новых ПП и дальше:
Вам хочется, чтобы работа была не только хорошо оплачиваемой, но и интересной?
К сожалению, далеко не каждая компания может предложить вам работу, где вы сможете постоянно повышать уровень вашей квалификации.
Все вышеописанное позволяет нам гарантировать нашим сотрудникам 100% загрузку и возможность повышения уровня квалификации.
Обращаем ваше внимание, что мы готовы работать как с матерыми супер-специалистами, так и с теми, кто хочет ими стать. Наши сотрудники могут бесплатно пройти обучение в учебном центре компании.
Итак:
Вы хотите заниматься крупными проектами по автоматизации на 8.0?
- тогда вы - 1С-программист для проектов, з/п. 2500 - 3000 у.е.
У вас есть знания, но практики не так много, как хотелось бы? Вы хотите научиться сходу решать разнообразные задачи любой сложности?
- тогда вы - программист 1С в отдел внедрения, з/п от 1000 до 2000 у.е.