Имя: Пароль:
1C
1С v8
Установить начальное значение в динамическом списке
, , ,
0 borrman
 
04.11.11
23:48
Добрый день.
Столкнулся со следующей задачей:

есть форма в которой есть динамический список с номенклатурой и ценами. эта форма вызывается из табличной части документа при выборе номенклатуры (колонка Номенклатура). Мне необходимо установить курсор на тот элемент, который уже выбран в документе (как это делается, если мы просто открываем справочник стандартными средствами 1С - оно позиционируется на уже выбранный элемент)?

Спасибо
1 Поручик
 
05.11.11
00:38
(0) Брошу код, надеюсь поймёшь. Ключевое "ТекущаяСтрока"

       ПараметрыФормы = Новый Структура;
       ПараметрыФормы.Вставить("РежимВыбора", Истина);
       ПараметрыФормы.Вставить("ТекущаяСтрока", Ссылка_На_Элемент_На_Который_Надо_Спозиционироваться);
       ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", ПараметрыФормы, Элемент);
2 borrman
 
05.11.11
00:47
не работает.
3 ll13
 
05.11.11
00:49
работает.
4 borrman
 
05.11.11
00:50
Просто. немного другая ситуация. Это не справочник.
У меня есть документ.
В нем специальная форма (произвольная форма) в которой 2 дин. списка:

1й - список номенклатуры с ценами (где нужно спозиционироваться)
2й - связанные с номенклатурой элементы (поставщики и пр. не важно)

вот мне нужно в первом дин. списке установить начальное значение.
5 borrman
 
05.11.11
00:50
Нужно ли ставить Динамический список (первый) как основной реквизит формы?
6 NcSteel
 
05.11.11
00:50
(4) "Брошу код, надеюсь поймёшь. Ключевое "ТекущаяСтрока"


       ПараметрыФормы = Новый Структура;
       ПараметрыФормы.Вставить("РежимВыбора", Истина);
       ПараметрыФормы.Вставить("ТекущаяСтрока", Ссылка_На_Элемент_На_Который_Надо_Спозиционироваться);
       ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", ПараметрыФормы, Элемент);" (с)Поручик
7 borrman
 
05.11.11
00:52
вот код открытия формы:

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

не позиционируется
8 Поручик
 
05.11.11
01:05
(7) Ещё теории. Как установить курсор на необходимую строку 1C 8.2 http://www.sky1c.ru/node/343
В открываемой форме в ПриСозданииНаСервере смотришь параметр ТекущаяСтрока и в динамическом списке устанавливаешь нужную строку.
9 borrman
 
05.11.11
01:17
как в ДС ее найти? у него нет ни функций поиска, ни выгрузки в ДЗ. хоть куда-то.
10 МишельЛагранж
 
05.11.11
01:19
(8) это жна до такое придумать:
"Дело в том, что таблица, которая в форме, элемент формы, и таблица, которая в реквизите (ДанныеФормыКоллекция) - это разные таблицы. "
- т.е. таблица на динамике (выводимая на динамической форме пользователю), и реквизит (содержащий ТЗ), который привязан к этому элементу на динамике - ЭТО РАЗНЫЕ ТАБЛИЦЫ, которые еще и требуют отдельного обхождения, каждое свое!
это могла придумать только больная фантазия 1с.
или я не атк понял?
11 borrman
 
05.11.11
01:22
Ну есть ЭлементФормы, а есть реквизит, в котором хранятся непосредственно данные. Первый отвечает за внешний вид, а второй за данные. Как-то так
12 МишельЛагранж
 
05.11.11
01:30
(11) так какого ляда элемент формы (болванка по сути) не подчиняется своему реквизиту (для которого она вторична - раз уж в 1с работает и обрабатываем данные реквизитов, а не элементов), и не принимает детерминацию последнего??
Здоровое программирование выглядит так: задаешь порядок следования в одном месте, и не заморачиваешься.
Взгляд 1с - разбирайтесь, кто тут у нас за чем следует, и делайте как-нибудь сами.
13 Поручик
 
05.11.11
01:33
(11) Ещё вброс

Элементы.Табличное_Поле_Связанное_С_Какими_То_Табличными_Данными.ТекущаяСтрока = ИдентификаторСтроки;

Короче, цена вопроса от полторы штуки, если самостоятельно не догонишь.
14 iamnub
 
05.11.11
01:46
(10)
Паттерн MVVM весь об этом. Только куцому 1С-нику, да еще пришедшему с 7-ки придет в голову назвать это "больной фантазией".
15 borrman
 
05.11.11
01:55
Блин.
Вобщем заработало. НО!

ВЫБРАТЬ
   СправочникНоменклатура.Ссылка,
   СправочникНоменклатура.ВерсияДанных,
   СправочникНоменклатура.ПометкаУдаления,
   СправочникНоменклатура.Предопределенный,
   СправочникНоменклатура.Родитель,
   СправочникНоменклатура.ЭтоГруппа,
   СправочникНоменклатура.Код,
   СправочникНоменклатура.Наименование,
   СправочникНоменклатура.ВЕБСсылка,
   СправочникНоменклатура.Производитель,
   СправочникНоменклатура.Категория,
   СправочникНоменклатура.ОбработаноОператором
ИЗ
   Справочник.Номенклатура КАК СправочникНоменклатура
ГДЕ
   СправочникНоменклатура.ОбработаноОператором

Так вот - если фильтр убрать все работает, а если есть - не позиционируется. Хотя значение в списке найти можно.
16 borrman
 
05.11.11
01:56
Кстати, заработал код из (1) :)
17 МишельЛагранж
 
05.11.11
02:00
(14) да что там какой-то паттерн! вся 1с о том, как вылезти из себя самой, пройти сотни релизов, и прийти к началу с тем же самым, с чего начали.
18 borrman
 
05.11.11
22:25
Не позиционируется только, если отображение изначальное - иерархический список.
Если дерево или просто список - все хорошо.

Сделал следующим образом:

1) сделал запрос без фильтра
2) используя код из (1) открыл форму
3) ПриСозданииНаСервере сделал отбор через отбор динамического списка и скрыл его от пользователей.

Все-таки остался вопрос - почему не срабатывает позиционирование при выводе иерархического дерева с отбором.