8.х Ограничение прав на проведение документов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Groggy7, 10 янв 2013.

  1. TopicStarter Overlay
    Groggy7
    Offline

    Groggy7

    Регистрация:
    10 янв 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Доброго всем времени суток!
    Ошибочно высоко оценивая мои способности в программировании 1С V8.0, начальство поставило задачу разгрести бардак в базе данных и в конфигурации «Управление торговлей, редакция 10.2 (10.2.9.2 переделанная под нас)», созданный за годы до меня. В свою очередь я, основываясь на опыте 2-х недельных курсов программирования и пытаясь не упасть в грязь лицом перед руководством, не осмелился пойти в отказ, и помимо прочих, пытаюсь решить такую задачу (пока на мой взгляд неразрешимую):

    - Есть справочник Номенклатура, в котором среди прочих данных есть группа Двигатели, в которой также есть и группы и данные;
    - Есть пользователь, которого поставили ответственным за двигатели;

    Возможно ли сделать так, чтобы только этот один пользователь мог проводить документы прихода, расхода, списания, перемещения, если в документе присутствуют данные из группы Двигатели, а другие пользователи могли проводить остальные документы в которых двигателей нет?

    У меня два варианта: либо в RLS документов копаться, либо это невыполнимо.
    Может если есть какие варианты, то направьте на путь истинный :)
  2. nickpugachev
    Offline

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

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    либо в RLS, либо повесить подписку на событие ПередЗаписью и проверять режим записи и проведения и ставить Отказ, если пользователю не разрешено проводить документ (можно и записывать запретить)
  3. TopicStarter Overlay
    Groggy7
    Offline

    Groggy7

    Регистрация:
    10 янв 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    «…если пользователю не разрешено проводить документ…» - возможно Вы поверхностно поняли суть вопроса - как запретить запись и/или проведение документа конкретному пользователю я примерно представляю, а вот как сделать запрет на запись и/или проведение конкретному пользователю, если в документе присутствуют позиции, заведенные в номенклатуру как двигатели? Т.е. например есть товарный остаток 20 корпусов, 10 тентов, 15 двигателей. Если отгружают корпуса и тенты, то провести документ может тётя Клава и дядя Петя, а если в документ добавили двигатели, то провести может только дядя Петя, а тётя Клава только записать. Вопрос: можно ли перед проведением организовать проверку наличия в документе двигателей?
  4. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Есть событие "ОбработкаПроведения", например. Там мы можем проверять текущего пользователя (Пупыкин, ага) и состав документа.
    В чем проблема то воткнуть веточку?
    1) Если юзер (НЕ пупкин) и (есть_двигло) - ОТКАЗ = ИСТИНА, (вывод сообщения что нельзя вам трогать движухи движков), ВОЗВРАТ.
    2) Если юзер ПУПКИН и (НЕ Есть_Двигло) - ОТКАЗ = ИСТИНА, (вывод сообщения, что вам можно двигать только движки), ВОЗВРАТ
  5. TopicStarter Overlay
    Groggy7
    Offline

    Groggy7

    Регистрация:
    10 янв 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Благодарю за помощь, но у меня осталась неясность – если этих двигателей 100 штук, каждый вносить в обработку конечно можно, но придется это делать каждый раз при заведении новой номенклатуры двигателя - можно ли в обработке прописать только номенклатурную группу «двигатели», к которой эти движки принадлежат? Прошу прощения, если вопрос для Вас очевидный, не кидайтесь сразу тапками, я ж не программист, я только учусь :))
  6. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    1) Не обязательно доводить документ до проведения. Можно проверить возможность и в событии ОбработкаПроверкиЗаполнения().
    2) Реализовать можно по разному УТ 10.2 у меня нет.
    а) Там уже есть механизм "Свойств и Значений"? Можно реализовать на основе него, не забыть проверить что произвольные пользователи не могут просто так менять свойство (или категорию) (т.е. права).
    б) Либо если известен какой-то общий признак, на основе которого надо ставить ограничение (например номенклатурная группа или вид номенклатуры), то просто реализовать на основе него.
    в) Ну или последний вариант - добавить в справочник номенклатура новый реквизит (о5 таки не забыв про права на редактирование).
  7. TopicStarter Overlay
    Groggy7
    Offline

    Groggy7

    Регистрация:
    10 янв 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Ну, вроде дошло, спасибо большое, ушел думать.
  8. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Но тут ведь еще нужно учесть следующие моменты:
    1) Нужно "запретить" не только проведение, но и его отмену. Это раз.
    2) А что делать бухам, если понадобиться перепровести документ с двигателем, а человек за это ответственный находится в отпуске или отсутствует по другим причинам?
    3) А если в документе присутствуют в куче двигатели и иные материалы а то и услуги, и документы нужно переровести (пришли оригиналы, не соответствующие проекту и т.п.?)
    4) Накладная - не единственный документ изменяющий остатки номенклатуры. Есть приход и расход, есть перемещение и инвентаризация, есть "ручная" операция бух.учета и может быть что то еще.

    2 - решается:
    а. добавлением в список разрешенных пользователей Глав.Буха и допустим одного из ИТшников (в надежде на то, что оба трое одновременно отсутствовать не будут)
    б. Делать не просто отказ в проведении/отмене проведения, а выдавать исчерпывающее предупреждение ("вам нельзя ... потом что... при необходимости обратитесь к Петрову, Ивановой или Сидорову)

    3 и 4 - возможно потребует изменения бизнеспроцессов компании. Т.е. не задача программистов.
  9. TopicStarter Overlay
    Groggy7
    Offline

    Groggy7

    Регистрация:
    10 янв 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    На примере документа ПеремещениеТоваров в ОбработкаПроведения сделал так:

    //Проверка прав на доступ к группе "Двигатель"

    ПользовательСправамиДоступа=ПользователиИнформационнойБазы.НайтиПоИмени("Вячеслав");
    ТекущийПользователь=ПользователиИнформационнойБазы.ТекущийПользователь();

    ГруппаДвигатель=Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Двигатель");

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст = "ВЫБРАТЬ
    | ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
    | ПеремещениеТоваровТовары.Номенклатура.НоменклатурнаяГруппа КАК Группа
    |ИЗ
    | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    |ГДЕ
    | ПеремещениеТоваровТовары.Ссылка = &ТекущийДокумент";


    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    Если Выборка.Группа = ГруппаДвигатель И ТекущийПользователь.Имя<>ПользовательСправамиДоступа.Имя

    тогда
    Отказ = Истина;

    Сообщить(""+Выборка.Номенклатура+" - находится в группе "+Выборка.Группа+", которую может изменять только Вячеслав");
    КонецЕсли;
    КонецЦикла;

    Остальные документы делаю по аналогии, а вот с отменой проведения - сижу и туплю - судя по форумам и учебникам, должна существовать Обработка удаления проведения, но там где у меня лежит Обработка проведения, обработки удаления проведения нет.

    Подскажите, где искать отмену проведения?

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