Решаемая задача: У заказчика в штате был бухгалтер, который и оформлял продажи. Но в связи с расширением бизнеса понадобился еще один продавец. Требуется урезать продавцу возможности до выписки счета на оплату, документа «Реализация товаров услуг», счетов-фактур. Продавец не должен видеть иных цен, кроме основной цены продажи, не должен видеть остатков товаров по другим организациям в базе. Также нельзя редактировать цены и сумму в документе продажи.
Надо сказать, что Бухгалтерия для торговли плохо приспособлена. Поэтому пришлось править конфигурацию во многих местах. Пошаговая инструкция:
- Сперва нужно включить возможность изменения для конфигурации в целом, чтобы добавить новую роль и новый интерфейс. После создать пользователя «Продавец» используя их. Возможность редактировать другие объекты конфигурации добавлять по мере надобности. Добавить «ИнтерфейсПродавца»: из справочников только «Номенклатура», из документов — «Реализация товаров и услуг», «Счет на оплату», «Счёт-фактура выданный». Убрать «Операции», «Сервис», из «Справка» убрать «Панель функций».
- В свойствах общего интерфейса поставить галочку переключаемый.
- Добавить «РольПродавца:
- дать права на запуск толстого клиента
- параметры сеанса: галочки получение и установка
- общие формы: просмотр
- интерфейсы: только ИнтерфейсПродавца, с общего снять галочку
- константы: чтение
- справочники: чтение, просмотр, ввод по строке
- документы: в зависимости от конкретных требований: можно поставить всем чтение, добавление, изменение, проведение, просмотр, интерактивное добавление, редактирование, интерактивное проведение, ввод по строке. Документы->Последовательности: чтение и изменение, Документы->Установка цен номенклатуры — только чтение.
- журналы документов: чтение
- обработки: БухгалтерскиеИтоги, ДополнительнаяИнформация, ПодборНоменклатуры — для всех них использование и просмотр
- планы всех видов — чтение
- регистры всех видов — полный доступ
- ОбщийМодуль.УправлениеПользователями проц. ПроверитьВозможностьРаботыПользователя: добавить выделенное:
Если НЕ РольДоступна(«ПолныеПрава») И НЕ РольДоступна(«Бухгалтер») И НЕ РольДоступна(«РольПродавца») Тогда
- Модуль обычного приложения: проц. ПроверитьЗапускСтартовогоПомощникаИПанелиФункций: добавить выделенное
Если НЕ РольДоступна("РольПродавца") Тогда ОткрытьПанельФункций = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОткрыватьПриЗапускеПанельФункций"); Если НЕ СПОткрыт И ОткрытьПанельФункций Тогда .... КонецЕсли; Если НЕ СПОткрыт И ОбщегоНазначения.ЭтоДемонстрационнаяБаза() Тогда .... КонецЕсли; Если НЕ СПОткрыт Тогда .... КонецЕсли; КонецЕсли; КонецПроцедуры - ОбщаяФорма.ФормаЦеныИВалюта модуль проц. НовыйТипЦенНачалоВыбора: добавить выделенное
Если РольДоступна("РольПродавца") Тогда НовыйТипЦен = Справочники["ТипыЦенНоменклатуры"].НайтиПоНаименованию("Основная цена продажи"); СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры - Справочник.Номенклатура.Форма.ФормаЭлемента проц. ПриОткрытии() — запрет на просмотр цен:
Если РольДоступна("РольПродавца") Тогда ЭлементыФормы.ЦеныНоменклатуры.Видимость = Ложь; КонецЕсли; КонецПроцедуры - Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента модуль: добавить выделенное в проц. ПриОткрытии()
Если ЭтоНовый() Тогда Если РольДоступна("РольПродавца") Тогда Организация = Справочники.Организации.НайтиПоКоду("000000001"); Склад = Справочники.Склады.НайтиПоКоду("000000001"); ТипЦен = Справочники["ТипыЦенНоменклатуры"].НайтиПоНаименованию("Основная цена продажи"); ЭтаФорма.ЭлементыФормы.Организация.КнопкаВыбора = Ложь; ЭтаФорма.ЭлементыФормы.Организация.КнопкаСпискаВыбора = Ложь; ЭтаФорма.ЭлементыФормы.Организация.БыстрыйВыбор = Ложь; ЭтаФорма.ЭлементыФормы.Организация.ТолькоПросмотр = Истина; КонецЕсли; ....... Если РольДоступна("РольПродавца") Тогда ЭлементыФормы.Товары.Колонки.Цена.ТолькоПросмотр = Истина; ЭлементыФормы.Товары.Колонки.Сумма.ТолькоПросмотр = Истина; КонецЕсли; КонецПроцедуры // ПриОткрытии() - Обработка.ПодборНоменклатуры.Форма.ОсновнаяФорма модуль: изменить выделенное в проц. ДействияПриОткрытии() — чтобы фильтр по умолчанию был активен
ФильтрЗапроса = ?(ПараметрФильтрЗапроса = Неопределено, Истина, ПараметрФильтрЗапроса); // Покажем соответствующее табличное поле и заполним таблицу номенклатуры текущего родителя. ПриИзмененииВидаПодбора(ЭлементыФормы.СписокВидовПодбора.Значение); ЭтаФорма.Заголовок = СтруктураИсходныхПараметров.Заголовок; КонецПроцедуры // ДействияПриОткрытии()
Обработка.ПодборНоменклатуры.Форма.ВводПараметров модуль — запрет на изменение цены:
Процедура ПриОткрытии() мПриОткрытии(ЭтаФорма); Если РольДоступна("РольПродавца") Тогда ЭлементыФормы.Цена.ТолькоПросмотр = Истина; КонецЕсли; КонецПроцедуры
Буду рад, если данный алгоритм кому-нибудь будет полезен и сэкономит время, а так же замечаниям, как данную задачу можно было решить проще, более красиво и правильней.




Как настроить интерфейс и роль продавца в Бухгалтерии 2.0
Перейти к публикации
Поправьте пожалуйста код, показывает какие-то кракозябры. А в целом весьма интересно.
Спасибо за замечание, заменил шрифт — должно все правильно отображаться
Спасибо. мне как бухгалтеру изучающему код в 1С было полезно прочитать!
Согласен с Eugeneer. Но если конфигурация 1С:Бухгалтерии уже правленная, как в моем случае, то проще добавить туда несколько незначительных изменений в коде, чем писать / править внешнее HVV по продажам. Тем более заказчику ничего навороченного не надо, нужен простой примитивный интерфейс с необходимыми ограничениями.
Если же конфигурация Бухгалтерии типовая и обновляется через интернет, то однозначно внешнее HVV по продажам — лучший выбор.