Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 13:55
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Определение записи в справочнике в зависимости от зашедшего пользователя.  (Прочитано 3518 раз)

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

Оффлайн lexicon22

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-04-05
  • Сайт: 
  • Профессия: Ученик 1С
День добрый. Передо мной стоит такая задача:
Существует несколько пользователей БД. При оформлении документа Заказ-наряд в форме высвечивается способ оплаты (Нал и безнал).
При выборе Нал предлагается выбрать одну из записей справочника "Касса".
Надо сделать так, чтоб для пользователя1 выбиралась касса1, пользователя2 - касса2 и т.д. и для этих пользователей нельзя было бы выбирать кассу.
Помогите пожалуйста.


Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Посмотри на процедуру из Торговля и Склад глЗначениеПоУмолчанию() и сделай для себя аналогичную
Кнопочка Спасибо - слева!

Оффлайн lexicon22

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-04-05
  • Сайт: 
  • Профессия: Ученик 1С
У меня нет Торговли и Склада. Не могу посмотреть(((

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
ну схематично примерно так:  пишешь функцию

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

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

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

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

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

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

ну к примеру:

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

 

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Наверное неплохо в справочнике Пользователи добавить реквизит ОсновнаяКасса.
Присваивать значения через сравнения Если ИмяПользователя() =  считается плохим тоном.
 
Кнопочка Спасибо - слева!

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Создавать реквизит в справочнике, который будет использоваться только для двух сотрудников - тоже сомнителен для хорошего тона.

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

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Правила хорошо тона для каждого свои.
Во первых в примере кода справочник Пользователи. Я сомневаюсь, что у ТС там больше пары записей. Здесь можно и потерпеть реквизит. На крайний случай создать подчиненный справочник. Не принципиально для данного случая.
Константа, конечно приемлимый вариант для значения по умолчанию. Касса - Сотрудник наверное не всегда подойдет на практике (например одна касса - два кассира).
Все варианты, как это будет реализовано, не важно.
У меня есть база в которой в документе в процедуре ПриОткрытии() есть все - и имя конкретного пользователя, и данные справочника Полномочия пользователей, и глобальные значения по умолчанию, и название набора прав, и еще сами права в метаданных, и дата запрета редактирования и наверное еще что-то есть чего я не помню. Все это равномерно рассыпано по всей процедуре, повторяется несколько раз, проверяются те же параметры. Все хочу исправить, но правило "Работает-не трожь!" и встроенная собственная лень каждый раз меня бьют по рукам.
Всегда, когда нужно изменить какие-то права пользователя, мне приходится напрягать свой склероз, рыться в этой процедуре и вспоминать о том, что все это нужно переделать.
Вывод - не используйте в качестве значений для условий в процедурах и функциях пользовательские данные (напр. имя пользователя) и старайтесь делать все в одном месте. Учитесь на моих ошибках.
Замечание использовать реквизит справочника который будет использоваться у небольшого процента элементов - плохо, разумеется верный и логичный. По семерке книжки давно читал - не помню есть ли он там, в восьмерке точно есть у Габца.
Herby ПЛЮС за вклад в обучение нашей подрастающей смены! (Я бы тоже, если честно, написал для ТС кусок кода с именами пользователей, но было лень)
Кнопочка Спасибо - слева!

Оффлайн lexicon22

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-04-05
  • Сайт: 
  • Профессия: Ученик 1С
А разве функция ИмяПользователя() не является встроенной в платформу? Это же наоборот очень удобно ее пользовать. Или я еще чего-то недопонимаю

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Является встроенной конечно. Использовать ее удобно, если список пользователей вещь постоянная и он небольшой. А если нет, то не удобно. Еще минус - твоей конфигурации, в таком случае, сложно претендовать на роль тиражного решения. Т.е. продашь ты ее соседу, а у него пользователи другие и что такое конфигуратор он не знает. Получится конфуз.
Код в документе Заказ-наряд у тебя получился наверное тоже не очень компактный. Проще было получить кассу от реквизита справочника, а не искать ее по имени. Какие- то еще действия в будущем могут зависить от того кто пользователь, и вешать в каждый документ кучу "если - тогда" может быстро надоесть.

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


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
156 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
47 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 288
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal