8.х ПриНачалеРаботыСистемы и права

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Семен Сосницкий, 4 авг 2014.

  1. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Добрый день! Мне нужно реализовать следующую задачу: есть документ, в котором оформляются заявки - сначала заходит какой-нибудь сотрудник, создает заявку, пишет, что ему нужен, ну к примеру трактор. Потом со своего компьютера заходит например главный инженер, смотрит, видит, что Петру нужен трактор, и пишет "одобрено". Соответственно после этого Петр уже не может изменить свою заявку, и поменять, например "трактор" на "феррари", редактирование для него документа после положительной визы главного инженера запрещено. Потом собственно подписывает директор, и оба предыдущих тоже не должны иметь возможность что-то поменять, если директор поставит "одобрено", то Петр уже не изменит заявку, и главный инженер не сможет уже поменять свое "одобрено" на "не одобрено". Собственно вопрос - как все это реализовать? У меня появилась следующая идея - пользователей будет, получается, три - заказчик, инженер и директор. При запуске системы мы смотрим имя пользователя. Если пользователь - заказчик, то переменной "юзер" мы присваиваем значение "1", если "инженер" - то 2, если "директор" - то 3. Далее, при открытии документа мы смотрим, есть ли одобрения инженера и директора. Если нет, то присваиваем переменной "состояниедокумента" значение 1, если есть одобрение инженера - то присваиваем 2 и запрещаем пользователю со значением меньшим состояния документа его редактировать. В общем описал все сумбурно, но надеюсь понятно. Как считаете, реально ли это реализовать средствами 1с? Если да, то мне не совсем понятно, как работает процедура "ПриНачалеРаботыСистемы", точнее где она должна описываться? Пробовал уже и в модуле сеанса, и в модуле управляемого приложения, не работает и все тут. Также интересует, как можно программно запретить изменение документа?
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Проще через РС сделать, при запуске проверять значения и т.п. Посмотрите в типовых как реализованы задачи.
  3. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Вы имеете в виду регистры сведений? Хорошо, посмотрю в типовой. А что насчет запрета на изменение документа?
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    РЛС решается легко.
  5. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Вам эту штуку нужно делать настраиваемую, т.е. чтобы была возможность увеличивать количество этапов и участников. Первое что приходит на ум - это создаете справочник состояний документа (аля "Одобрено", "Составлено" и пр.) в котором помимо наименования храните ссылку порядок этого статуса в последовательности статусов (например "Заявка составлена - 1", "Согласовано - 2", "Одобрено - 3" и т.д.). В справочнике "Пользователи" добавляете числовой реквизит который будет соответствовать уровням доступа (инженер - 1, бухгалтер - 2, ген дир - 3). А дальше уже при помощи РЛС можно контролировать изменения, т.е. если у человек уровень доступа ниже чем текущий в документе, то править ничего нельзя. Ну соответственно если несколько документов таких, то реквизит с уровнем доступа не в справочник добавляете, а регистр сведений, где указываете пользователя, документ и уровень доступа.
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Я предложил бы посмотреть как реализован в типовой механизм согласования "заявок на расходование ДС".
    Но поскольку сам из типовой ни разу не пытался его выдернуть, насколько это трудоемко будет не знаю.
  7. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Не совсем понял, зачем? У меня в принципе всегда будет три пользователя с одними и теми же именами.

    РЛС - это регистры сведений? А как программно запретить править документ в целом и запретить редактировать некоторые поля? Просто заказчик, например, не должен иметь возможности править поле "одобрено/не одобрено" директора.
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    РЛС это совсем другое. Если этого не знаете, то хорошую систему вы точно не напишите, или напишите через пару лет изучения программирования на 1С. Не хочу вас обидеть, но может вам стоит почитать вот это, для начала, а потом составить грамотное ТЗ, думаю после этого ваша проблема будет решена :)
  9. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Это сейчас так, а через пол года может появиться еще кто-то или что-то и тогда придется менять конфигурацию опять. Лучше сразу учесть возможность расширения. Это будет правильно.
  10. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    по мне - так это вообще бизнес-процесс..
  11. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Ну да, так и есть, немного допиленный только :)
  12. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Спасибо за ответы! А не подскажете еще, в чем проблема: пытаюсь узнать при запуске системы имя текущего пользователя, пишу в модуле управляемого приложения:
    Код:
    Процедура ПриНачалеРаботыСистемы()
        юзер = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
    КонецПроцедуры
    
    Ругается:
    В чем проблема? Или текущего пользователя надо вызывать из общего модуля? Ответьте попроще только, пожалуйста.
  13. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    В этом обработчике не доступен этот метод.
    Если так хочется - юзайте ПослеНачалаРаботыСистемы(), т.к. при начале работы пользователь еще не определен.
  14. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Доступность:

    Сервер, толстый клиент, внешнее соединение.
  15. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Простите за вопрос, но не могли бы вы мне прямо указать, куда я должен вписать код, чтобы получить имя пользователя в переменной? При создании информационной базы указывал основной тип запуска - толстый клиент. Вот например я хочу, чтобы при запуске в предупреждении выводилось имя пользователя. Пишу:
    Код:
    Процедура ПриНачалеРаботыСистемы()
        юзер = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
        Предупреждение("Вы - " + юзер);
    КонецПроцедуры
    
    Если пишу этот код в модуле управляемого приложения, то ругается:
    Если пишу в модуле сеанса, ругается:
    Если пишу в модуле внешнего соединения - запускается без ошибок, но при запуске ничего не происходит. Я читаю книгу Радченко, которую мне посоветовали на данном форуме, но там очень непонятно написано про все эти модули и про исполнение на сервере и клиенте. Главное книга начинается с разжевываний в очевидных местах, но в таких сложных - сплошная терминология вообще без пояснений :(
  16. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Извините, вроде со всем разобрался, остался один вопрос - как можно программно запретить редактирование одного из полей документа? Как я понял .Доступность и .ТолькоПросмотр не подходят, т.к. они действуют на всю форму целиком.
  17. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Для реквизитов это тоже делается.
  18. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Да, извиняюь, нашел :) Всем спасибо за помощь!
Похожие темы
  1. atw666
    Ответов:
    2
    Просмотров:
    1.098
  2. Miller
    Ответов:
    2
    Просмотров:
    439
Загрузка...

Поделиться этой страницей