Танцы с бубном вокруг ПриАктивизацииСтроки (серверные вызовы) #629858


#0 by Aclzz
1С 8.2.16, веб-клиент. Есть некая конфа, в которой у некоего документа есть табличная часть "Согласование" (колонки: Пользователь, Результат). Документы могут отправляться на согласование юзерам (в т.ч. нескольким одновременно), этот факт фиксируется добавлением в эту ТЧ этих юзеров, те тыкают на этом документе "Утвердить" или "Отклонить", ну и в колонке "Результат" это фиксируется. Тут всё понятно. Выбор списка юзеров, которым можно отправить на согласование строится при открытии журнала в подменюшке командной панели. Юзер встаёт на документ, кликает менюшку, менюшка раскрывается, юзер выбирает фио согласовывающего. Тут всё ОК. Но заказчик хочет, чтобы в этой менюшке те юзера, которым уже в данный момент отправлено на согласование, были недоступны или скрыты. Тут начинаются танцы с бубном. Документов много (десятки тысяч), в каждом 1-2 согласовывающего. Сначала сделал в лоб: в ПриАктивизацииСтроки сделал серверный вызов (частую проблему с зацикливанием победил стандартным способом, не в нем дело), в серверной процедуре дергаю запросом список согласовывающих, пробегаю циклом по менюшке, дизаблю соответствующих юзеров - технически всё ок, но работает похабно. Динамический список при серверных вызовах работает глюкаво - прыгает подстветка чередования строк, при клике на заявку может проскроллиться на несколько строчек сам список - короче, видно, что он зачем-то его обновляет и делает это хреново. Подцеплял серверный вызов в ПодключитьОбработчикОжидания(Вызов,0.3,Истина) - те же яйца, вид сбоку. Также глючит и дёргается. Решил всё сделать по фэн-шую (без серверных вызовов, блокировка контролов исключительно на клиенте). Для этого информацию из табличной части в момент ПриАктивизацииСтроки надо уже как-то иметь на клиенте. Если бы согласовальщик был в один момент времени один - не вопрос, добавилось бы поле в ТЧ и всё, но их может быть много одновременно. Если тупо всю табличную часть добавляю в запрос динамического списка (появляется как поле с типом ТаблицаЗначений), то форма начинает дико тормозить (по факту на клиента вытаскивается полезной информации на 20% больше, а тормозить начинает сильнее раз в 10). Была мысль список кодов согласовальщиков через запятую засунуть в одно поле выборки запроса и распарсивать уже на клиенте - но если T-SQL это позволяет, то 1Совский язык запросов, по-моему, нет. Вопрос в итоге вполне конкретный: платформа 1С позволяет технически реализовать поставленную задачу? Если да, то какими средствами.
#1 by Mort
Использовать пользовательские данные в менюшках фу.
#2 by Aclzz
>>Использовать пользовательские данные в менюшках фу Список строится динамически при открытии формы. Почему нет? Можно было бы открывать форму выбора (на тонком клиенте), но 1С-овский веб-клиент в этом случае работает не на div'ах, а открывает ужасные (не отцентрованные по экрану, с адресной строкой и прочими радостями) попап-окна, которые ваще не вариант.
#3 by vmv
напиши суть задачи в один обзац - ибо чтение потока бреда в 1-ом варианте напрягает уже с первых строк. По сути, пока не не вникнув - в сабжевом обработчике нельзя использовать методы с директивой НаСервере - если там рюшки/плюшки, то это задача УО, а не мешка травы в указанном обработчике
#4 by Aclzz
^^Суть задачи там изложена в 3 абзаца, остальное - перепробованные варианты. Задача в 1 абзац: Необходимо блочить/разблочивать некие контролы формы при активизации строки динамического списка документов этой формы. Информация о том, что блочить/что разблочить содержится в ТЧ выбранного документа сабжевого списка.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С