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

Определение записи в справочнике в зависимости от зашедшего пользователя.

Автор lexicon22, 05 апр 2012, 18:01

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

lexicon22

День добрый. Передо мной стоит такая задача:
Существует несколько пользователей БД. При оформлении документа Заказ-наряд в форме высвечивается способ оплаты (Нал и безнал).
При выборе Нал предлагается выбрать одну из записей справочника "Касса".
Надо сделать так, чтоб для пользователя1 выбиралась касса1, пользователя2 - касса2 и т.д. и для этих пользователей нельзя было бы выбирать кассу.
Помогите пожалуйста.

sergejK74

Посмотри на процедуру из Торговля и Склад глЗначениеПоУмолчанию() и сделай для себя аналогичную
Кнопочка Спасибо - слева!

lexicon22


Herby

ну схематично примерно так:  пишешь функцию

Функция КассаПоУмолчанию()
  Перем Касса;

  Если ИмяПользователя() = "Ivanov" Тогда
    Касса = Касса1;
  ИначеЕсли ИмяПользователя() = "Petrov" Тогда
    Касса = Касса2;
  КонецЕсли;
 
  Возврат Касса;
КонецФункции

Но лучше конечно на имя пользователя не ссылаться, а к примеру сравнивать с константой, чтобы потом не менять код, в случае если придет новый сотрудник.

Эту функцию вызываешь в Процедуре которая прописана в формуле реквизита Способ оплаты:

Если СпособОплаты = Нал Тогда
Касса = КассаПоУмолчанию();
иначе
Касса = "";
КонецЕсли;

В процедуре ПриОткрытии() прописываешь доступность как требуется.

ну к примеру:

Если (ИмяПользователя() = "Ivanov") или (ИмяПользователя() = "Petrov") Тогда
Форма.Касса.Доступность(0);
КонецЕсли;

 

sergejK74

Наверное неплохо в справочнике Пользователи добавить реквизит ОсновнаяКасса.
Присваивать значения через сравнения Если ИмяПользователя() =  считается плохим тоном.
Кнопочка Спасибо - слева!

Herby

Создавать реквизит в справочнике, который будет использоваться только для двух сотрудников - тоже сомнителен для хорошего тона.

Здесь лучший вариант либо константа, как я уже написал, либо в справочнике "Кассы" создавать реквизит "Сотрудник"

sergejK74

Правила хорошо тона для каждого свои.
Во первых в примере кода справочник Пользователи. Я сомневаюсь, что у ТС там больше пары записей. Здесь можно и потерпеть реквизит. На крайний случай создать подчиненный справочник. Не принципиально для данного случая.
Константа, конечно приемлимый вариант для значения по умолчанию. Касса - Сотрудник наверное не всегда подойдет на практике (например одна касса - два кассира).
Все варианты, как это будет реализовано, не важно.
У меня есть база в которой в документе в процедуре ПриОткрытии() есть все - и имя конкретного пользователя, и данные справочника Полномочия пользователей, и глобальные значения по умолчанию, и название набора прав, и еще сами права в метаданных, и дата запрета редактирования и наверное еще что-то есть чего я не помню. Все это равномерно рассыпано по всей процедуре, повторяется несколько раз, проверяются те же параметры. Все хочу исправить, но правило "Работает-не трожь!" и встроенная собственная лень каждый раз меня бьют по рукам.
Всегда, когда нужно изменить какие-то права пользователя, мне приходится напрягать свой склероз, рыться в этой процедуре и вспоминать о том, что все это нужно переделать.
Вывод - не используйте в качестве значений для условий в процедурах и функциях пользовательские данные (напр. имя пользователя) и старайтесь делать все в одном месте. Учитесь на моих ошибках.
Замечание использовать реквизит справочника который будет использоваться у небольшого процента элементов - плохо, разумеется верный и логичный. По семерке книжки давно читал - не помню есть ли он там, в восьмерке точно есть у Габца.
Herby ПЛЮС за вклад в обучение нашей подрастающей смены! (Я бы тоже, если честно, написал для ТС кусок кода с именами пользователей, но было лень)
Кнопочка Спасибо - слева!

lexicon22

А разве функция ИмяПользователя() не является встроенной в платформу? Это же наоборот очень удобно ее пользовать. Или я еще чего-то недопонимаю

sergejK74

Является встроенной конечно. Использовать ее удобно, если список пользователей вещь постоянная и он небольшой. А если нет, то не удобно. Еще минус - твоей конфигурации, в таком случае, сложно претендовать на роль тиражного решения. Т.е. продашь ты ее соседу, а у него пользователи другие и что такое конфигуратор он не знает. Получится конфуз.
Код в документе Заказ-наряд у тебя получился наверное тоже не очень компактный. Проще было получить кассу от реквизита справочника, а не искать ее по имени. Какие- то еще действия в будущем могут зависить от того кто пользователь, и вешать в каждый документ кучу "если - тогда" может быстро надоесть.

Если удобно - используй конечно - окончательное решение за тобой, делай как умеешь, это мне лишь бы поворчать.
 
Кнопочка Спасибо - слева!

Теги:

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

Рейтинг@Mail.ru

Поиск