|
8.2 УФ: развернуть строку динамического списка | ☑ | ||
---|---|---|---|---|
0
Kaidend
06.03.12
✎
10:08
|
Всем привет. Есть управляемая форма, в ней есть реквизит с типом ДинамическийСписок, он выводится на форму в элемент ТаблицаФормы. Список иерархический. Нужно по нажатию кнопки разворачивать теущую строку списка.
Как это сделать? У таблицы формы есть метод Развернуть, но он в качестве параметра принимает число - идентификатор строки. Как получить этот идентификатор у динамического списка. Пока не придумал ничего лучше, чем запросом заполнять дерево значений и уже его сворачивать/разворачивать, но это как-то криво. |
|||
1
Cube
06.03.12
✎
10:10
|
Элементы.МойДинамическийСписок.ТекущаяСтрока?
|
|||
2
vmv
06.03.12
✎
10:10
|
ПолучитьИдентификатор()
|
|||
3
Feanor
06.03.12
✎
10:11
|
не получится с вероятностью 0,(9)
|
|||
4
Feanor
06.03.12
✎
10:12
|
+(3) но если получится - самому очень интересно как
|
|||
5
Kaidend
06.03.12
✎
10:16
|
(1) не, не работает.
Да и СП намекает, что тип параметра в методе Развернуть() - Число, и никакой другой. (2) У динамического списка нет такого метода. |
|||
6
vmv
06.03.12
✎
10:17
|
стедентам на заметку
При первых шагах работы с УФ и ДС в частности не ленитесь смотреть в конфигураторе типы данных с которым работате и оперируйте и в мозге и в коде именно типами, а не своими бредовыми понятиями. Например я пишу так ДфСписок = Элементы.Список; // Таблица формы ДфТкСтрСписок = Элементы.Список.ТекущаяСтрока; ДфТкДнСписок = Элементы.Список.ТекущиеДанные; тогда понятно с чем ты работаешь и какков набор методов у этого нечто, а егсли городить треэтажные конструкции, то возникают глупые вопросы да и куча доступов через трочку в циклах - плохо |
|||
7
Kaidend
06.03.12
✎
10:20
|
(6) Вы вообще о чем? Метода ПолучитьИдентификатор() нет ни у таблицы формы, ни у динамического списка.
|
|||
8
vmv
06.03.12
✎
10:20
|
(3, 4) все получиться если подумать, я даже разные списки позиционирую и разворачивают в зависимости от внешних условий, причем на клиенте.
Главное знать типы ключей динамических списков и уметь по ним находить идентфикатор - 8.2. - это просто) |
|||
9
Kaidend
06.03.12
✎
10:22
|
(8) Ты напиши конкретно, как у тебя это "получиться", а если не знаешь - пройди в сад, пожалуйста.
Обожаю мисто-неадекватов. |
|||
10
Feanor
06.03.12
✎
10:23
|
(9) он намекает нам, что он знает как это сделать, но нам не скажет :)
|
|||
11
Kaidend
06.03.12
✎
10:24
|
(10) Я понял :) Терпеть этого не могу, потому что с вероятность 99% автор такого совета просто делает умный вид и ничего на самом деле не знает :)
|
|||
12
vmv
06.03.12
✎
10:26
|
(7) БСП - набор общих модулей хотя бы изучите, а потом делайте заявления без аппеляций, ога.
Идентифактор принадлежит некой коллекции на формы. Источником таблицы формы может быть: таблиц значений - тип коллекции ДанныеФормыСтруктура дерево значени - тип коллекции ДанныеФормыКоллекция дин список - тип коллекции зависит от типа основной таблицы в определениях могу быть не точен. Суть идентифкатор строки дереве ищут в коллекции строк узла, тип сами допрете какой у нее и т.д. - приведи в порядок мозг, неодекват) // Получает идентификатор (метод ПолучитьИдентификатор()) строки дерева значений для заданного значения поля строки дерева. // Используется для позиционирования курсора в иерархических списках. // Процедура ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля(ИмяПоля, ИдентификаторСтроки, КоллекцияЭлементовДерева, КлючСтроки, ПрекратитьПоиск) Экспорт Для Каждого СтрокаДерева ИЗ КоллекцияЭлементовДерева Цикл Если ПрекратитьПоиск Тогда Возврат; КонецЕсли; Если СтрокаДерева[ИмяПоля] = КлючСтроки Тогда ИдентификаторСтроки = СтрокаДерева.ПолучитьИдентификатор(); ПрекратитьПоиск = Истина; Возврат; КонецЕсли; КоллекцияЭлементов = СтрокаДерева.ПолучитьЭлементы(); Если КоллекцияЭлементов.Количество() > 0 Тогда ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля(ИмяПоля, ИдентификаторСтроки, КоллекцияЭлементов, КлючСтроки, ПрекратитьПоиск); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
13
vmv
06.03.12
✎
10:30
|
(11) ти просто ленив, признай это и не визжи тут как баба, читать смешно.
не удосужился разобраться с тем, что видишь на форме и что являться ключами таблици и простейшую задачу решить не можешь, самому не стыдно. Вопрос в (0) можно адекватно воспринять от девочки лет 18, но не от спеца со стажем) |
|||
14
Kaidend
06.03.12
✎
10:31
|
(12) "дин список - тип коллекции зависит от типа основной таблицы"
Динамический список не отображается ни в какую коллекцию, это тип такой - ДинамическойСписок, который присутствует на форме на клиенте. И ты мне будешь какие-то советы давать? :) |
|||
15
Kaidend
06.03.12
✎
10:32
|
(13) Мог бы нахамить в ответ, но лень на глупое быдло время тратить, честно говоря. Ты уж не обижайся.
|
|||
16
vmv
06.03.12
✎
10:33
|
(14) и все же он имеет ключ(и) строки - по которым можно получить ее идентфикатор.
адекватному спецу будет досточно этой скупой фразы, чтобы понять, что делать. а больше потакать вашей лени глупо) |
|||
17
vmv
06.03.12
✎
10:35
|
(15) а мог бы уже решить задачу, включив мозг по моим советам, но наверно не дано, какая жаль)
|
|||
18
Kaidend
06.03.12
✎
10:36
|
(16) Дурашко, ты выведи на форму динамический список, посмотри отладчиком какой тип имеет соответсвующий реквизит, посмотри в СП какие методы имеет этот тип :)
Может, тогда ты прекратишь строчить свой бред из серии "я знаю, как повернуть голову на 180 градусов" :) Хотя вряд ли, ты какой-то упорный слишком :) |
|||
19
Cube
06.03.12
✎
10:37
|
Открыл попкорн, считаю vmv правым и болею за него :)
|
|||
20
Kaidend
06.03.12
✎
10:42
|
(19) Быдлоиды всегда в кучу собираются :)
|
|||
21
Kaidend
06.03.12
✎
10:43
|
(19) Тем более, судя по совету, данному в (1), вас с vmw объединяет одинаково низкий уровень знаний :)
|
|||
22
vmv
06.03.12
✎
10:46
|
боже, он еще и истеричка любящая развести сплетни, с кем приходиться работать.
вот уйду я на пенсию и кто будет делать нетленки - вот эти остолопы, для которых получить идентифактор строки дс архиневозможная задача) |
|||
23
Kaidend
06.03.12
✎
10:49
|
(22) к счастью, с тобой мне работать не приходиться :)
ладно, оставлю убогих в их теплой компании :) можешь напоследок еще пару раз тявкнуть, тем более, что написать, как именно получить идентификатор строки динамического списка ты все равно не в состоянии :) |
|||
24
Feanor
06.03.12
✎
10:58
|
(16) у меня всё же несколько иная задача: мне нужно в динамическом списке найти строку с определенным значением определенного поля. Это возможно?
|
|||
25
Cube
06.03.12
✎
11:18
|
(20) (21) (23) Вот ты дятел! Тебе говорят, так ты слушай!
На вот, покури на досуге: &НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) Если Элементы.Список.Развернут(Элементы.Список.ТекущаяСтрока) Тогда Элементы.Список.Свернуть(Элементы.Список.ТекущаяСтрока); Иначе Элементы.Список.Развернуть(Элементы.Список.ТекущаяСтрока); КонецЕсли; КонецПроцедуры Это в форме списка справочника "СтруктураПредприятия" конфигурации "1С:Документооборот 8 (1.0.5.9)". Ты не поверишь - работает... |
|||
26
Kaidend
06.03.12
✎
11:23
|
(25) Это для дерева значений может работать, где ТекущаяСтрока имеет тип Число. Для динамического списка, выводящего в моем случае, например, справочник, где текущая строка имеет тип СправочникСсылка, - не сработает.
Или называй конкретную форму в Документообороте, где расположен этот код. |
|||
27
Cube
06.03.12
✎
11:25
|
(26) Чукча не читатель? Цитирую: "Это в форме списка справочника "СтруктураПредприятия"".
Код этот я добавил сам. |
|||
28
Kaidend
06.03.12
✎
11:31
|
(27) Да, в ДО этот код работает.
Странно, я это пробовал, у меня в другой конфигурации не срабатывало. Ладно, будем разбираться. |
|||
29
Cube
06.03.12
✎
11:34
|
(28) Думаю, самое время тебе извиниться за (9), (11), (15), (18), (20), (21) и (23)...
|
|||
30
Feanor
06.03.12
✎
11:34
|
очень интересует ответ на (24)
|
|||
31
DexterMorgan
06.03.12
✎
11:39
|
(26)Расширение таблицы формы для динамического списка (Form table extension for dynamic list)
Свойства: АвтоОбновление (AutoRefresh) ВосстанавливатьТекущуюСтроку (RestoreCurrentRow) ВыборГруппИЭлементов (ChoiceFoldersAndItems) ОбновлениеПриИзмененииДанных (UpdateOnDataChange) ОтображатьКорень (ShowRoot) Период (Period) ПериодАвтоОбновления (AutoRefreshPeriod) РазрешитьВыборКорня (AllowRootChoice) РодительВерхнегоУровня (TopLevelParent) Описание: Дополнительные свойства элемента управления ТаблицаФормы. Расширение предоставляет возможность доступа к свойствам динамического списка. В качестве значений для свойств ТекущаяСтрока, ТекущийРодитель и элемента коллекции, содержащейся в свойстве ВыделенныеСтроки, используются значения ссылок на объекты, которые содержит главная таблица динамического списка. Например, СправочникСсылка.Товары. |
|||
32
DexterMorgan
06.03.12
✎
11:40
|
(26)В качестве значений для свойств ТекущаяСтрока, ТекущийРодитель и элемента коллекции, содержащейся в свойстве ВыделенныеСтроки, используются значения ссылок на объекты, которые содержит главная таблица динамического списка. Например, СправочникСсылка.Товары.
|
|||
33
Cube
06.03.12
✎
11:41
|
(30) А зачем?
|
|||
34
Feanor
06.03.12
✎
11:44
|
(33) заказчик возжелал. Смысл в том, что есть 2 связанных справочника по реквизиту, нужно при позиционировании на 1-ом автоматом находить связанный элемент во втором с учетом иерархии.
|
|||
35
Feanor
06.03.12
✎
11:45
|
+(34) сделать это с помощью динамического списка у меня не получилось
|
|||
36
Cube
06.03.12
✎
11:46
|
(34) Ну, допустим, нашел, что с ним дальше делать-то будешь?
|
|||
37
Feanor
06.03.12
✎
11:46
|
(36) выделить его нужно, а так же выделить всех его родителей, но это решается условным оформлением
|
|||
38
Feanor
06.03.12
✎
11:47
|
+(37) вся загвоздка в том, что бы развернуть ДС
|
|||
39
Kaidend
06.03.12
✎
11:55
|
Мда, действительно, код, приведенный в (25) работает. С одним условием - вид отображения списка должен быть не "иерархический список", а "дерево". Я почему-то сразу не сообразил этот момент проверить и догадался только когда посмотрел на форму в Документообороте.
|
|||
40
Cube
06.03.12
✎
12:00
|
(38) Ну дык:
ИскомоеЗначение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка"); Если ВвестиЗначение(ИскомоеЗначение) Тогда Элементы.Список.ТекущаяСтрока = ИскомоеЗначение; Если Элементы.Список.Развернут(Элементы.Список.ТекущаяСтрока) Тогда Элементы.Список.Свернуть(Элементы.Список.ТекущаяСтрока); Иначе Элементы.Список.Развернуть(Элементы.Список.ТекущаяСтрока); КонецЕсли; КонецЕсли; |
|||
41
Cube
06.03.12
✎
12:02
|
(39) Прочитай (29).
|
|||
42
Feanor
06.03.12
✎
12:07
|
(40) мляяя я нуб. Спасибо, работает ))
|
|||
43
Feanor
06.03.12
✎
12:08
|
+(42) работает даже без "Развернуть"
|
|||
44
Kaidend
06.03.12
✎
12:13
|
В общем, получается, что в СП не совсем точно написано:
Развернуть (Expand) Синтаксис: Развернуть(<ИдентификаторСтроки>, <СПодчиненными>) Параметры: <ИдентификаторСтроки> (обязательный) Тип: Число. Идентификатор строки таблицы. Тип первого параметра - не обязательно число, если таблица содержит динамический список справочника (на других объектах не проверял, но, скорее всего, должно быть то же самое), то можно передавть и ссылку на справочник. Т. е. ТекущаяСтрока. Таким образом, для динамических списков нет необходимости (и, по всей видимости, нет возможности) получать ИдентификаторСтроки. |
|||
45
Kaidend
06.03.12
✎
12:13
|
Надо только надеяться, что со временем СП "синхронизируют" с действительным положением вещей, а не наоборот :)
|
|||
46
Cube
06.03.12
✎
12:14
|
(43) Без развернуть работает разворот только верхних уровней, если в качестве текущей строки будет узел, то подчиненные не развернуться, вроде.
|
|||
47
Feanor
06.03.12
✎
12:15
|
(46) а подчиненные и не нада - достаточно спозиционировать на нужном узле дерево.
|
|||
48
Cube
06.03.12
✎
12:15
|
(44) (45) Ты вообще читаешь, что тебе пишут или как? Перечитывай (31) и (32) до полного прозрения.
|
|||
49
Kaidend
06.03.12
✎
12:16
|
(41) А, ты хочешь, чтобы я извинился? Ни за что - во-первых, хамить первым начал не я, во-вторых, vmw так и не рассказал нам, как получить уникальный идентификатор строки динамического списка. У нормальных людей принято, когда они что-то говорят, при необходимости доказывать это, а не предлагать собеседникам найти доказательства самостоятельно.
Но тебе могу сказать спасибо. |
|||
50
Cube
06.03.12
✎
12:17
|
(48) Так что-то я тут промазал немного...
|
|||
51
Kaidend
06.03.12
✎
12:18
|
(48) Господи, да ты прекрати ты хамить, быдлецо.
Я отлично знаю, что у справочника в динамическом списке ТекущаяСтрока имеет тип СправочникСсылка. Ты справку к методу Развернуть() почитай - так сказано, что первый параметр должен иметь тип Число, а не "произвольный" или "число или справочникСсылка.ИмяСправочника". |
|||
52
vmv
06.03.12
✎
12:20
|
(44) для динамических списков оперируют понятием КЛЮЧ строки по которуму ее можно позиционировать или использовать этот ключ в методах, которые требуют идентификатор строки.
Ключ строки дин. списка зависит от "главного" свойства основной таблицы дс. Например для справочника это справочник. ссиылка, для документа документ.ссылка, для регистрасведений регистрсведенийключзаписи и т.д. |
|||
53
Cube
06.03.12
✎
12:22
|
(49) Вот и вся твоя натура... Оскорблять ты мастер, а извиняться не научили? Меня ты тоже оскорбил. И в (51) продолжаешь это упорно делать... Своё "спасибо" засунь себе сам знаешь куда. Я ответил на вопрос только потому, чтобы другие читатели нашли то, что искали, это же форум. А то придут прочитают, что ты умный, а все дураки и будут думать, что в 1С этого сделать нельзя... А, как оказалось...
|
|||
54
vmv
06.03.12
✎
12:23
|
хватит спорить, луччший медод обучения - вызывать истерику, чем больше истерики у хомячка, тем лучше он засвоит материал.
вседь в результате автор стал мудрее, просветленнее и даже богаче духовно, так к нему прикоснулся самый жестокий тролль рунета, в данный момент забаненный всюду, кроме мисты. миста наяшка и великолепный источник знаний для юношей-истеричек |
|||
55
Kaidend
06.03.12
✎
12:38
|
(52) Ну да. Но ты просто сравни в СП описание методов "Свернуть" и "Развернуть", и все поимешь.
(53) Ну-ну, не обижайся. (54) Все хамишь? :) Ну ладно, раз больше ничего не умеешь... |
|||
56
Новиков
06.03.12
✎
12:43
|
Если участники сего спора помиряться, то предлагаю им подарок к 8-му марту
+25 Гб к их дропбоксам ;) |
|||
57
Cube
06.03.12
✎
12:45
|
(56) А ты всё плюшки раздаешь?)) А у меня нет аккаунта дропбокса))
|
|||
58
Feanor
06.03.12
✎
12:54
|
(57) думаешь, он подарит еще и акк на 8-ое марта? )))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |