gifts2017

Рабочее место продавца в Бухгалтерии 2.0

Опубликовал Алексей (lisav) в раздел Программирование - Практика программирования

Как настроить интерфейс и роль продавца в Бухгалтерии 2.0

 Решаемая задача:  У заказчика в штате был бухгалтер, который и оформлял продажи. Но в связи с расширением бизнеса понадобился еще один продавец. Требуется урезать продавцу возможности до выписки счета на оплату, документа "Реализация товаров услуг", счетов-фактур. Продавец не должен видеть иных цен, кроме основной цены продажи, не должен видеть остатков товаров по другим организациям в базе. Также нельзя редактировать цены и сумму в документе продажи.

Надо сказать, что Бухгалтерия для торговли плохо приспособлена. Поэтому пришлось править конфигурацию во многих местах. Пошаговая инструкция:

  1. Сперва нужно включить возможность изменения для конфигурации в целом, чтобы добавить новую роль и  новый интерфейс.  После создать пользователя "Продавец" используя их. Возможность редактировать другие объекты конфигурации добавлять по мере надобности. Добавить "ИнтерфейсПродавца": из справочников только "Номенклатура", из документов -  "Реализация товаров и услуг", "Счет на оплату", "Счёт-фактура выданный". Убрать "Операции", "Сервис", из "Справка" убрать "Панель функций".
  2. В свойствах общего интерфейса поставить галочку переключаемый.
  3. Добавить "РольПродавца:
    1. дать права на запуск толстого клиента
    2. параметры сеанса: галочки получение и установка
    3. общие формы: просмотр
    4. интерфейсы: только ИнтерфейсПродавца, с общего снять галочку
    5. константы: чтение
    6. справочники: чтение, просмотр, ввод по строке
    7. документы: в зависимости от конкретных требований: можно поставить всем чтение, добавление, изменение, проведение, просмотр, интерактивное добавление, редактирование, интерактивное проведение, ввод по строке. Документы->Последовательности: чтение и изменение, Документы->Установка цен номенклатуры - только чтение.
    8. журналы документов: чтение
    9. обработки: БухгалтерскиеИтоги, ДополнительнаяИнформация, ПодборНоменклатуры - для всех них использование и просмотр
    10. планы всех видов - чтение
    11. регистры всех видов - полный доступ
  4. ОбщийМодуль.УправлениеПользователями проц. ПроверитьВозможностьРаботыПользователя: добавить выделенное:

    Если НЕ РольДоступна("ПолныеПрава") И НЕ РольДоступна("Бухгалтер")  И НЕ РольДоступна("РольПродавца") Тогда

  5. Модуль обычного приложения: проц. ПроверитьЗапускСтартовогоПомощникаИПанелиФункций: добавить выделенное   

     

    Если НЕ РольДоступна("РольПродавца") Тогда   
        ОткрытьПанельФункций = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОткрыватьПриЗапускеПанельФункций");
        Если НЕ СПОткрыт И ОткрытьПанельФункций Тогда
           ....
        КонецЕсли;
        
        Если НЕ СПОткрыт И ОбщегоНазначения.ЭтоДемонстрационнаяБаза() Тогда
           ....
        КонецЕсли;
        
        Если НЕ СПОткрыт Тогда
           ....
        КонецЕсли;
        КонецЕсли;
    
    КонецПроцедуры


  6. ОбщаяФорма.ФормаЦеныИВалюта модуль проц. НовыйТипЦенНачалоВыбора: добавить выделенное

      

     Если РольДоступна("РольПродавца") Тогда
            НовыйТипЦен = Справочники["ТипыЦенНоменклатуры"].НайтиПоНаименованию("Основная цена продажи");
            СтандартнаяОбработка  = Ложь;
        КонецЕсли;
    
    КонецПроцедуры


  7. Справочник.Номенклатура.Форма.ФормаЭлемента проц.  ПриОткрытии() - запрет на просмотр цен:

     

    Если РольДоступна("РольПродавца") Тогда
           ЭлементыФормы.ЦеныНоменклатуры.Видимость = Ложь;
        КонецЕсли;
        
    КонецПроцедуры


  8. Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента модуль: добавить выделенное в проц. ПриОткрытии()

        
       

    Если ЭтоНовый() Тогда
            Если РольДоступна("РольПродавца") Тогда
            Организация =  Справочники.Организации.НайтиПоКоду("000000001");
            Склад =  Справочники.Склады.НайтиПоКоду("000000001");
            ТипЦен = Справочники["ТипыЦенНоменклатуры"].НайтиПоНаименованию("Основная цена продажи");
    
            ЭтаФорма.ЭлементыФормы.Организация.КнопкаВыбора = Ложь;
            ЭтаФорма.ЭлементыФормы.Организация.КнопкаСпискаВыбора = Ложь;
            ЭтаФорма.ЭлементыФормы.Организация.БыстрыйВыбор = Ложь;
            ЭтаФорма.ЭлементыФормы.Организация.ТолькоПросмотр  = Истина;
            КонецЕсли;
    .......
    
    Если РольДоступна("РольПродавца") Тогда
           ЭлементыФормы.Товары.Колонки.Цена.ТолькоПросмотр = Истина;
           ЭлементыФормы.Товары.Колонки.Сумма.ТолькоПросмотр = Истина;
        КонецЕсли;
    
    КонецПроцедуры // ПриОткрытии()
    
  9. Обработка.ПодборНоменклатуры.Форма.ОсновнаяФорма модуль: изменить выделенное в проц.  ДействияПриОткрытии()  - чтобы фильтр по умолчанию был активен

       

    ФильтрЗапроса         = ?(ПараметрФильтрЗапроса = Неопределено, Истина, ПараметрФильтрЗапроса);
    
        // Покажем соответствующее табличное поле и заполним таблицу номенклатуры текущего родителя.
        ПриИзмененииВидаПодбора(ЭлементыФормы.СписокВидовПодбора.Значение);
    
        ЭтаФорма.Заголовок = СтруктураИсходныхПараметров.Заголовок;
    
    КонецПроцедуры // ДействияПриОткрытии()

     


    Обработка.ПодборНоменклатуры.Форма.ВводПараметров модуль - запрет на изменение цены:

     

    Процедура ПриОткрытии()
    
        мПриОткрытии(ЭтаФорма);
        
        Если РольДоступна("РольПродавца") Тогда 
            
           ЭлементыФормы.Цена.ТолькоПросмотр = Истина;
           
        КонецЕсли;
    
    КонецПроцедуры


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

См. также

Подписаться Добавить вознаграждение

Комментарии

0. Алексей (lisav) 20.07.12 11:06
Как настроить интерфейс и роль продавца в Бухгалтерии 2.0

Перейти к публикации

1. Василий 1с (vkovall) 20.07.12 22:13
Поправьте пожалуйста код, показывает какие-то кракозябры. А в целом весьма интересно.
2. Алексей (lisav) 21.07.12 16:53
Спасибо за замечание, заменил шрифт - должно все правильно отображаться
3. Макас (makas) 22.07.12 22:08
Спасибо. мне как бухгалтеру изучающему код в 1С было полезно прочитать!
4. Eugeneer (Eugeneer) 23.07.12 04:14
Поставлю плюс автору за труды. НО:
он пошел самым сложным путем - редактирование конфигурации, что у многих касаемо Бухгалтерии категорически не воспринимается. Да еще такими правками. Бухгалтерия по три раз в месяц может от 1С обновлятся. И выбранный шаг ой как может принести постоянных добавочных работ с обновлениями.

Выход ИНХО был гораздо проще. Надо было написать внешнее HVV по продажам (по типу многих разработок, вот одна из них в которой есть версия для БП http://infostart.ru/public/60244/, также на Инфостарте можно найти еще с десяток аналогов).
В подобном hvv программно можно было б дописать необходимые отборы по фирме, нужные цены ну и все. Да может быть понадобилось бы создать роль дополнительную в конфигурации, это единственное чтобы не повлияло на обновления.
5. Алексей (lisav) 23.07.12 07:05
Согласен с Eugeneer. Но если конфигурация 1С:Бухгалтерии уже правленная, как в моем случае, то проще добавить туда несколько незначительных изменений в коде, чем писать / править внешнее HVV по продажам. Тем более заказчику ничего навороченного не надо, нужен простой примитивный интерфейс с необходимыми ограничениями.

Если же конфигурация Бухгалтерии типовая и обновляется через интернет, то однозначно внешнее HVV по продажам - лучший выбор.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа