Имя: Пароль:
1C
1С v8
Одновременная работа нескольких пользователей со свернутым регистром сведений
0 Sarmen
 
25.07.12
10:37
Здравствуйте! Прошу совета!
Ситуация:
1) Есть регистр сведений примерно такого вида:
 Номенклатура, Характеристика, Заказ 1, Количество: 10 шт.
 Номенклатура, Характеристика, Заказ 2, Количество:  5 шт.
2) Для пользователя должна выводиться информация в списке в свернутом виде: Номенклатура, Характеристика, 15 шт. И при сканировании (или поиске по штрихкоду) в форме необходимо позиционировать курсор в списке на строку с найденной номенклатурой и характеристикой.
3) Одновременно работают несколько пользователей и меняют записи в первичном регистре сведений.
4) Информация об изменениях регистра должна оперативно отражаться у всех пользователей (напомню: у них она должна отображаться в свёрнутом виде).

Задача: Как при одновременной работе нескольких пользователей предоставить им возможность позиционироваться на нужной номенклатуре в свернутом списке (полученном на основании оперативных данных первичного регистра сведений)?

Пробовал решить так:
На форме - динамический
1 Sarmen
 
25.07.12
10:38
Пробовал решить так:
На форме - динамический список. В нём обобщённые сгруппированные данные (без основной таблицы). Работает, но не могу спозиционироваться на строке в динамическом списке (может быть отбор, сортировка и т.д.)
2 Sarmen
 
25.07.12
10:42
Второй вариант - заменить динамический список на таблицу значений и позиционироваться следующим способом:
Элементы.Список1.ТекущаяСтрока = Объект.Список.НайтиСтроки(Новый Структура ("Номенклатура,Характеристика", Номенклатура, Характеристика))[0].ПолучитьИдентификатор();

Но здесь не пойму каким образом отлавливать изменения при работе нескольких пользователей и своевременной перезаполнять таблицу значений?
3 pumbaEO
 
25.07.12
10:50
(2) обработчик ожидания.
4 Sarmen
 
25.07.12
10:53
более нравится первый вариант - вполне сгодится (и относительно корректно работает позиционирование через такой же запрос как и в динамическом списке), но при условии - если запретить сортировку!
Подскажите - как запретить пользователю сортировку динамического списка? Чтобы он не сог щёлкнуть по шапке колонки и отсортировать?
5 Sarmen
 
25.07.12
10:54
(3) слишком сложно, списки могут быть большие и их внезапное обновление, запоминание текущей строки и т.д. - не совсем мне нравится...
6 Sarmen
 
25.07.12
11:05
Может через Представление? Вот вывел вместо "Номенклатура" -  Номенклатура.Представление - и всё! Сортировать по этой колонке нельзя! :)
7 hhhh
 
25.07.12
11:33
(5) всё равно ведь придется запоминать текущую строку. Независимо от того: нравится это или не нравится.
8 Sarmen
 
25.07.12
11:42
а можно программно узнать текущую сортировку в динамическом списке?
9 Sarmen
 
25.07.12
12:05
Сделал через Представление. В этом случае сортировать по колонкам нельзя. Пришлось помучиться с числами - потребовалось явное указание типов через Выразить.

Если установлен отбор и текущая строка не соответствует искомой структуре "Номенклатура,Характеристика" - вывожу сообщение про несоответствие отбору.
10 Sarmen
 
25.07.12
12:21
Зато всё остальное - на уровне платформы и без программных оповещений, очищения и перезаполнения таблицы. При этом отлично работает типовой поиск в списке + удобно искать номенклатуру и характеристику по наименованию.
11 Sarmen
 
25.07.12
15:12
Хотя обычным перебором строк списка - практически так же быстро работает. Остановился пока на этом варианте. Обычный запрос по регистру сведений с группировкой (без основной таблицы). Плюсы такого варианта: работает сортировка и отбор, в строке получаем точные ссылки, вместо представления. Плюс встроенная проверка методом ПроверитьСтроку(). Мелочь, а приятно! :)