На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> Программно изменить интерфейс "Такси".
    Как программно можно убрать из панели функций текущего раздела что-то?
    Я нашел код, который может добавлять\удалять сами разделы, а вот как работать с конкретным элементом раздела не сказано.

    ExpandedWrap disabled
      На сервере:
       НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
       НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();
       
      // Очистить настройки состава.
        НастройкиСостава.Верх.Очистить();
        НастройкиСостава.Лево.Очистить();
        НастройкиСостава.Низ.Очистить();
        НастройкиСостава.Право.Очистить();
          
       
          
        ПанельИнструментов = Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИнструментов");
        НастройкиСостава.Лево.Добавить(ПанельИнструментов);
       
      // Загрузить настройки состава в пустой объект настроек.
        НастройкиИнтерфейса.УстановитьСостав( НастройкиСостава);
          
      // Положить объект настроек текущему пользователю в хранилище.
        ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);
       
       
      На Клиенте:
      ОбновитьИнтерфейс();


    Речь про интерфейс 8.3
      Кто-то знает? Мне нужно сделать некие настройки к базе, если галка стоит\не стоит, что-то из интерфейса удалятся\добавляется. Возможно есть какой-то другой путь.
        ^D^ima, функциональные опции подойдут?
        Для чего тебе это надо, опиши ситуацию подробнее.
          Я сделал справочник, включил его в подсистему. Некоторым пользователям(у всех 1 роль) это справочник не нужен, я хочу его программно убрать из подсистемы, чтобы он не был виден им.
            ^D^ima, как вариант завести еще одну роль именно для этих целей?

            Добавлено
            Цитата ^D^ima @
            Некоторым пользователям

            Это уже сигнал, что надо использовать роли.
              kosten
              Хорошо, как программно дать\удалить роль.

              Хотя для 1 справочника это как-то походит на костыль... :(
                Цитата ^D^ima @
                Хорошо, как программно дать\удалить роль.

                Ты хорошо подумал?
                Не должна эта задача решаться программно.
                  Есть справочник "сотрудники", связанный справочник к нему "Отдел". Есть опции в базе, при выставлении которых справочник "Проекты" виден или не виден в интерфейсе для конкретного отдела. Как это реализовать не программно? Да, саму роль я создам в конфигураторе, но потом привязка к ролям должна быть программная.
                    Цитата ^D^ima @
                    привязка к ролям должна быть программная

                    Почему???
                    Это в конфигураторе можно и нужно делать.
                      Так как я это привяжу с возможность программно менять настройки? Я поставил в базе галку, сотрудник зашел и увидел\ не увидел справочник.
                      Сообщение отредактировано: ^D^ima -
                        ^D^ima, посмотри в синтаксис помощнике "Роли". Там покопаться надо, вроде было программное добавление ролей.

                        Добавлено
                        ExpandedWrap disabled
                          Если НЕ ПользовательБД.Роли.Содержит(Метаданные.Роли.Найти("назначаемаяРоль")) Тогда
                             ПользовательБД.Роли.Добавить(Метаданные.Роли.Найти("назначаемаяРоль"));
                             ПользовательБД.Записать();
                           КонецЕсли;

                        Но действовать начнет только после следующего входа пользователя в систему.
                          ^D^ima, сделай копию интерфейса с командой и без команды и программно переключай интерфейс целиком. Увы :(
                            Так было написано что можно программно менять :(
                              К сожалению нет под рукой 8.3, а то бы поэкспериментировал :( До сих пор на 8.2 сижу.
                                Цитата ^D^ima @
                                Есть опции в базе, при выставлении которых справочник "Проекты" виден или не виден в интерфейсе для конкретного отдела. Как это реализовать не программно?

                                Если нужно чтобы справочник был просто скрыт из интерфейса - функциональные опции подойдут как нельзя кстати. Кода там вообще по минимуму будет. Могу накидать примерчик если нужно, или просто описать подробнее как сделать.
                                Сообщение отредактировано: Rust -
                                  Цитата Rust @
                                  Могу накидать примерчик если нужно, или просто описать подробнее как сделать.

                                  Если можно, или ссылку на пример, а то не хочется костыли делать на такой простой задаче.
                                    ^D^ima эту возможность обещали в 8.3.6
                                      Outlander, ты не в курсе когда она выходит?
                                        Функциональные опции подошли как нельзя хорошо. Спасибо.
                                          Цитата ^D^ima @
                                          Функциональные опции подошли как нельзя хорошо. Спасибо.

                                          Я тебе сразу про них написал ;)
                                            Я просто не знал что "функциональные опции" это объект конфигурации, а не абстрактное выражение.

                                            При чем опции вычищают все упоминание того, что включено в их состав. Из справочников, документов, отчетов и даже из динамических списков. Фантастика.
                                              Цитата ^D^ima @
                                              Я просто не знал что "функциональные опции" это объект конфигурации, а не абстрактное выражение.

                                              ^D^ima, учи матчасть - оно окупится, не будешь велик изобретать.
                                                Я прошел все курсы по программированию 1С которые были, там про это не говорилось)
                                                  Цитата ^D^ima @
                                                  Я прошел все курсы по программированию 1С которые были, там про это не говорилось)

                                                  Курсы от самой 1С вообще очень ограниченная штука. Построены по принципу "Hello world" для С++. Могу скинуть видео - Общие механизмы платформы. Про функциональные опции вырезал оттуда же.
                                                    Цитата Rust @
                                                    Могу скинуть видео - Общие механизмы платформы

                                                    Кидай конечно :D
                                                      ок, как зальется на паблик - кину ссылку.
                                                        ^D^ima, какие на фиг курсы?
                                                        Книга Радченко - обязательна к изучению в первую очередь. Вот эта...
                                                        Скрытый текст

                                                        user posted image

                                                        Добавлено
                                                        Потом есть смысл изучить двухтомник "профессиональная разработка в системе 1С:Предприятие 8.2"
                                                        Сообщение отредактировано: kosten -
                                                          Извеняюсь Эти функции уже есть...
                                                          ExpandedWrap disabled
                                                            Процедура ВыполнитьНастройкуПанелей() Экспорт
                                                                
                                                                // Для примера будем менять настройки пользователя "не глядя" на то, что он себе настроил.
                                                                // Создать пустой объект настроек.
                                                                НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
                                                                
                                                                // С помощью пустого объекта настроек получить настройки состава, установленные в конфигураторе.
                                                                НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();
                                                                
                                                                // Очистить настройки состава.
                                                                НастройкиСостава.Верх.Очистить();
                                                                НастройкиСостава.Лево.Очистить();
                                                                НастройкиСостава.Низ.Очистить();
                                                                НастройкиСостава.Право.Очистить();
                                                                
                                                                // Заполнить своими панелями.
                                                                // Для примера самый простой вариант: слева - панель инструментов.
                                                                ПанельИнструментов = Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИнструментов");
                                                                НастройкиСостава.Лево.Добавить(ПанельИнструментов);
                                                                
                                                                // Загрузить настройки состава в пустой объект настроек.
                                                                НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
                                                                
                                                                // Положить объект настроек текущему пользователю в хранилище.
                                                                ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);
                                                             
                                                                // Если же хотим менять настройки, которые установил пользователь себе,
                                                                // тогда нужно прочитать его настройки из хранилища, и метод ПолучитьСостав()
                                                                // вернёт не то, что в конфигураторе, а то, что пользователь установил себе.
                                                                //
                                                                // НастройкиИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения");
                                                                // НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();
                                                                // ... изменть настройки состава
                                                                // НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
                                                                // ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);
                                                                
                                                            КонецПроцедуры
                                                            Outlander, я так понял, что задача была исключить конкретный пункт из меню(панели).
                                                              Outlander
                                                              Я этот код вначале приводил. Мне нужно было конкретный элемент из панели функций искючить.
                                                              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                                              0 пользователей:


                                                              Рейтинг@Mail.ru
                                                              [ Script execution time: 0,0962 ]   [ 14 queries used ]   [ Generated: 9.07.25, 03:42 GMT ]