Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Видимость элементов командной панели в управляемых формах , изменение видимости элементов УФ без перерисовки          
azamatnadyrkulov Подменю пользователя
сообщение 19.12.14, 14:46
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте уважаемые формучане!
Проблема заключается в следующем, есть форма списка (журнал документа) в котором имеется кнопка в командной панели, необходимо изменять ее видимость в зависимости от состояния выделенного документа журнала. Состояние документов журнала хранится в регистре сведений. Все это в принципе реализовано, но имеется неприятная штука. Так как при изменении видимости кнопки "Статусы" форма обращается на сервер и соответственно перерисовывается что вызывает центрирование динамического списка документов на выделенной строке и от этого этот список "скачет". Как решить данную задачу без "скачков"

Пытался найти способ отключения автоцентрирования выделенной строки динамического списка, но так и не нашел.

azamatnadyrkulov,
код выложу чуть позже

Процедура при активизации строки на форме
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)

    ВыполнитьОбработкуСтроки(Элементы.Список.ТекущаяСтрока, ЭтаФорма);

        
КонецПроцедуры


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

logist Подменю пользователя
сообщение 19.12.14, 15:02
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Какой тип возвращает ПолучитьТипОбъекта() ? Если саму форму на сервер не гоняете, то список не должен перепозиционироваться.
А вообще, раз статусы хранятся в регистре сведений, то я бы изменил сам запрос списка, получал бы нужный статус уже в список и при нажатии на строку устанавливал необходимую видимость, вместо вызова непонятных пяти сторонних процедур. У Вас судя по коду слишком "мудрено" сделано, использование попыток (еще и вложенных) там где это, по логике, не нужно, наталкивает на эту мысль.

Сообщение отредактировал logist - 19.12.14, 15:03


Signature
Личные бесплатные консультации не даю, для этого есть форум!

azamatnadyrkulov Подменю пользователя
сообщение 19.12.14, 15:42
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Получитьтипобъекта() возвращает строку типа документ.искомыйдокумент

Получитьтипобъекта() возвращает строку типа документ.искомыйдокумент

В том то и проблема что изменение видимости сама обращается на сервер

sava1 Подменю пользователя
сообщение 19.12.14, 16:00
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

для прочтения
[необходимо зарегистрироваться для просмотра ссылки]

logist Подменю пользователя
сообщение 19.12.14, 16:01
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(azamatnadyrkulov @ 19.12.14, 15:42) *
В том то и проблема что изменение видимости сама обращается на сервер

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

azamatnadyrkulov Подменю пользователя
сообщение 19.12.14, 16:47
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 19.12.14, 20:00) *
для прочтения
[необходимо зарегистрироваться для просмотра ссылки]


Большое спасибо это уже читал там метод вкладок страниц

Цитата(logist @ 19.12.14, 20:01) *
Ну, так перепишите все это, что бы все было в запросе списка, и тогда не надо будет обращаться к серверу даже в самой форме.


можете подробнее объяснить что значит чтобы все былов запросе
динамический список не имеет запроса он обращается на прямую к документу

Petre Подменю пользователя
сообщение 19.12.14, 17:06
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Цитата(azamatnadyrkulov @ 19.12.14, 16:47) *
динамический список не имеет запроса он обращается на прямую к документу

Динамический список построен на СКД и использует либо дефолтовый запрос при указании объекта, либо произвольный запрос.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

azamatnadyrkulov Подменю пользователя
сообщение 19.12.14, 17:15
Сообщение #8

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Petre @ 19.12.14, 21:06) *
Динамический список построен на СКД и использует либо дефолтовый запрос при указании объекта, либо произвольный запрос.


спасибо буду знать
но все же как изменять видимость кнопки не обращаясь на сервер
если использовать элементы.моякнопка.видимость - срабатывает перерисовка

даже если я получу статус в списке запросом
мне ведь нужно менять видимость кнопки которая находится на командной панели в зависимости от статуса выделенной строки

Petre Подменю пользователя
сообщение 19.12.14, 17:27
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Цитата(azamatnadyrkulov @ 19.12.14, 17:15) *
но все же как изменять видимость кнопки не обращаясь на сервер

Обратиться к фирме 1с и попросить ее убрать обращение на сервер при изменении свойства "видимость".

Попробуйте "доступность". В СП по поводу изменения этого свойства у кнопки ничего не сказано на счет обращения на сервер.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

azamatnadyrkulov Подменю пользователя
сообщение 19.12.14, 17:29
Сообщение #10

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Petre @ 19.12.14, 21:27) *
Попробуйте "доступность". В СП по поводу изменения этого свойства у кнопки ничего не сказано на счет обращения на сервер.


большое спасибо пробовал но почему то сервер вызывается даже при изменении доступности, хоть и про доступность пишут что она не должна вызывать сервер

Petre Подменю пользователя
сообщение 19.12.14, 17:31
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Значит просто не дописали СП. Увы.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

azamatnadyrkulov Подменю пользователя
сообщение 19.12.14, 17:37
Сообщение #12

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Ребята выручайте уже 3 день ищу ответ на данный вопрос. может я подхожу не стой стороны к проблеме так как опыт не такой уж и большой в 1С

может что - то еще рассказать о форме в которой я пытаюсь сделать эту видимость

logist Подменю пользователя
сообщение 19.12.14, 19:36
Сообщение #13

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(azamatnadyrkulov @ 19.12.14, 17:15) *
даже если я получу статус в списке запросом
мне ведь нужно менять видимость кнопки которая находится на командной панели в зависимости от статуса выделенной строки

Если Вы получите статус в запросе динамического списка, то он у вас будет как бы колонкой этого списка (не видимой) и когда происходит ПриАктивизацииСтроки то это значение находится в строке списка
Элементы.Список.ТекущиеДанные.ИмяМоейКолонкиКотороеСодержитСтатус
Судя по запросу выше, таких колонок у вас должно быть 5, 4 на каждое право и одна на ТекущийСтатус, соответственно дальше вы пишите в этом же событии примерно такой код
ТекущаяСтрока = Элементы.Список.ТекущиеДанные;
Если ТекущаяСтрока  <> Неопределено Тогда
  ГруппаСтатусов.ПодчиненныеЭлементы.ФормаОбработкаИзменениеСтатусаЗавершить.Видимость = ТекущаяСтрока.ИмяМоейКолонкиКотороеСодержитСтатус;
  // и дальше еще строки для каждой кнопки/группы
КонецЕсли

Запрос формируете таким образом, что он в ИмяМоейКолонкиКотороеСодержитСтатус помещал нужный вам вариант булево.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

azamatnadyrkulov Подменю пользователя
сообщение 20.12.14, 12:35
Сообщение #14

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(logist @ 19.12.14, 23:36) *
Если Вы получите статус в запросе динамического списка, то он у вас будет как бы колонкой этого списка (не видимой) и когда происходит ПриАктивизацииСтроки то это значение находится в строке списка
Элементы.Список.ТекущиеДанные.ИмяМоейКолонкиКотороеСодержитСтатус
Судя по запросу выше, таких колонок у вас должно быть 5, 4 на каждое право и одна на ТекущийСтатус, соответственно дальше вы пишите в этом же событии примерно такой код
ТекущаяСтрока = Элементы.Список.ТекущиеДанные;
Если ТекущаяСтрока  <> Неопределено Тогда
  ГруппаСтатусов.ПодчиненныеЭлементы.ФормаОбработкаИзменениеСтатусаЗавершить.Видимость = ТекущаяСтрока.ИмяМоейКолонкиКотороеСодержитСтатус;
  // и дальше еще строки для каждой кнопки/группы
КонецЕсли

Запрос формируете таким образом, что он в ИмяМоейКолонкиКотороеСодержитСтатус помещал нужный вам вариант булево.


спасибо буду пробовать, извините за пробел были дела

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 0:42
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!