|
Таблица формы | ☑ | ||
---|---|---|---|---|
0
KuJIT
05.02.14
✎
12:02
|
Добрый день. Есть такой тип, как ТаблицаФормы.
Описание: Элемент управляемой формы, предназначенный для отображения и редактирования реквизитов формы табличных типов. Сегодня впервые с ним столкнулся. В помощнике не нашел информации по тому, как по этой таблице двигаться, т.е. менять ТекущиеДанные. Кто с этим элементом работал, подскажите, пожалуйста, можно ли это сделать и, если можно, то как? |
|||
1
jsmith82
05.02.14
✎
12:02
|
мышкой, курсором двигаться надо
|
|||
2
jsmith82
05.02.14
✎
12:03
|
есть ещё свойство у неё ТекущаяСтрока для программного позиционирования, если таблица формы связана с ДанныеФормаКоллекция, но там с умом надо подходить
|
|||
3
jsmith82
05.02.14
✎
12:04
|
если же связана с динамическим списком, то ТекущаяСтрока не число, а тип данных основной таблицы
|
|||
4
KuJIT
05.02.14
✎
12:05
|
(2) Так ведь программно же. Вообще мне нужно конкретный элемент выцепить. С определенным названием/именем
|
|||
5
jsmith82
05.02.14
✎
12:05
|
что конкретно надо?
|
|||
6
KuJIT
05.02.14
✎
12:07
|
ТекущаяСтрока у меня Справочники.Номенклатура.
Нужно найти текущую строку с определенной номенклатурой, и получить ТекущиеДанные |
|||
7
KuJIT
05.02.14
✎
12:07
|
(6) СправочникСсылка.номенклатура
|
|||
8
Рэйв
05.02.14
✎
12:07
|
(4)У источника по индексу бери строку
|
|||
9
KuJIT
05.02.14
✎
12:08
|
А где мне источник найти?
|
|||
10
KuJIT
05.02.14
✎
12:08
|
Это жлемент формы?
|
|||
11
Рэйв
05.02.14
✎
12:08
|
(6)>>ТекущаяСтрока у меня Справочники.Номенклатура
сам то понял что сказал? |
|||
12
KuJIT
05.02.14
✎
12:09
|
(11) Я ж исправился -_- (7)
|
|||
13
jsmith82
05.02.14
✎
12:09
|
у тебя динамический список?
|
|||
14
Рэйв
05.02.14
✎
12:09
|
(10)Любой элемент формы долен быть с чем то связан.Чьи данные он должен отображать
|
|||
15
jsmith82
05.02.14
✎
12:09
|
или табличная часть документа / обработки
|
|||
16
jsmith82
05.02.14
✎
12:10
|
если табличная часть, то
Отбор = Новый Структура("Номенклатура", МояНоменклатура); МассивСтрок = Объект.Товары.НайтиСтроки(Отбор); Если МассивСтрок.Количество() > 0 Тогда СтрокаТабЧасти = МассивСтрок[0]; КонецЕсли; |
|||
17
jsmith82
05.02.14
✎
12:11
|
Если динамический список, то в нём невозможно найти какую-то номенклатуру, это по сути запрос. Поэтому надо делать запрос к базе данных
|
|||
18
Defender aka LINN
05.02.14
✎
12:11
|
(6) "Нужно найти текущую строку с определенной номенклатурой"
Это вообще как? |
|||
19
KuJIT
05.02.14
✎
12:11
|
Дело в том, что форма какая-то хитрая. На сколько я понял, та часть, где эта ТаблицаФормы живет, она создается как-то динамически. Через модуль "ДинамическоеПолеФормы"
|
|||
20
KuJIT
05.02.14
✎
12:13
|
Например свойство "ПутьКДанным" имеет значение "Ошибка чтения значения"
|
|||
21
jsmith82
05.02.14
✎
12:13
|
йопт. какие данные у таблицы формы?
|
|||
22
jsmith82
05.02.14
✎
12:13
|
реквизит формы, объекта, ДС?
|
|||
23
jsmith82
05.02.14
✎
12:14
|
а, понял
|
|||
24
jsmith82
05.02.14
✎
12:14
|
Путь к данным где смотришь? на клиенте или сервере
|
|||
25
KuJIT
05.02.14
✎
12:15
|
(24) Ну, смотрю в отладчике :D
|
|||
26
HEKPOH
05.02.14
✎
12:15
|
(19) обработка КорректировкаДвижений в БП 3.0 почти все таблички динамически создает. там можно подсмотреть, как пути прописываются и тд и тп
|
|||
27
jsmith82
05.02.14
✎
12:16
|
(25) в клиентской или серверной процедуре останов
|
|||
28
KuJIT
05.02.14
✎
12:16
|
(18) имел в виду, чтобы текущая строка стала нужной (с определенной номенклатурой
|
|||
29
1Сергей
05.02.14
✎
12:17
|
(28) сфотографируй свою 1С
|
|||
30
KuJIT
05.02.14
✎
12:17
|
(27) Клиентской
|
|||
31
KuJIT
05.02.14
✎
12:17
|
(29) Какую ее часть?
|
|||
32
jsmith82
05.02.14
✎
12:17
|
(30) останов на серверной процедуре сделай, прочитай заново
|
|||
33
1Сергей
05.02.14
✎
12:18
|
(31) самую красивую
|
|||
34
jsmith82
05.02.14
✎
12:19
|
>>чтобы текущая строка стала нужной
чтобы курсор сам прыгнул на эту строчку? |
|||
35
jsmith82
05.02.14
✎
12:25
|
Отбор = Новый Структура("Номенклатура", МояНоменклатура);
МассивСтрок = ЭтаФорма.ДинамическиСозданнаяТаблицаЗначений.НайтиСтроки(Отбор); Если МассивСтрок.Количество() > 0 Тогда СтрокаТЗ = МассивСтрок[0]; НомерСтроки = СтрокаТЗ.ПолучитьИдентификатор(); Элементы.ДинамическиСозданнаяТаблицаФормы.ТекущаяСтрока = НомерСтроки; КонецЕсли; |
|||
36
KuJIT
05.02.14
✎
12:27
|
(34) Ну вообще мне нужно переделать типовую обработку. В типовой выбираешь из таблицы строку (двойным кликом) - происходит куча всякого полезного. Мне нужно сделать так, чтобы по кнопочке куча всякого полезного произошло с несколькими определенными элементами из этой таблицы.
|
|||
37
KuJIT
05.02.14
✎
12:27
|
(33) Так что конкретно хотите увидеть?
|
|||
38
KuJIT
05.02.14
✎
12:30
|
(32) Не нашел серверную процедуру, в которой бы жил нужный элемент =/
|
|||
39
jsmith82
05.02.14
✎
12:31
|
(36)
Отбор = Новый Структура("Номенклатура", МояНоменклатура); МассивСтрок = ЭтаФорма.ДинамическиСозданнаяТаблицаЗначений.НайтиСтроки(Отбор); Для Каждого Строка Из МассивСтрок Цикл СделатьМногоПолезного(Строка); КонецЦикла; Процедура СделатьМногоПолезного(Строка) Строка.Цена = 0; КонецПроцедуры |
|||
40
jsmith82
05.02.14
✎
12:33
|
в общем тебе осталось найти реальное название реквизита "ДинамическиСозданнаяТаблицаЗначений"
чтобы найти название, надо посмотреть путь к данным сделай на серверной процедуре останов если нет процедуры, напиши процедуру, которая будет вызываться из клиентской |
|||
41
jsmith82
05.02.14
✎
12:33
|
а лучше прочитай Радченко и Разработка управляемых форм
|
|||
42
KuJIT
05.02.14
✎
12:35
|
(39) (40) Спасибо за помощь. Поковыряюсь. Последите за темой еще немножко, пожалуйста, если, вдруг, чего опять спросить придется =)
|
|||
43
KuJIT
05.02.14
✎
13:34
|
Нет нифига такого реквизита -_- ДинамическиСозданнаяТаблицаЗначений
Все по три раза пересмотрел =/ |
|||
44
jsmith82
05.02.14
✎
13:43
|
(43) плят, это я так придумал
|
|||
45
jsmith82
05.02.14
✎
13:43
|
у тебя есть таблица формы
тебе надо знать имя реквизита формы, с которой связана таблица формы |
|||
46
jsmith82
05.02.14
✎
13:43
|
ты имя таблицы формы знаешь?
|
|||
47
Infsams654
05.02.14
✎
13:45
|
(43)прочитай еще раз 1-ю строку в (40)
|
|||
48
KuJIT
05.02.14
✎
14:25
|
(44) Ну это очеведно. Я уж скопипастил, чтобы понятно было о чем -_-
|
|||
49
KuJIT
05.02.14
✎
14:25
|
(48) Очевидно*
|
|||
50
KuJIT
05.02.14
✎
14:26
|
Имею в виду, что нет реквизита, который бы хранил в себе эту штуку. Не нашел как минимум. Хотя очень старался!
|
|||
51
KuJIT
05.02.14
✎
14:28
|
(46) Ну могу посмотреть во время отладки.
|
|||
52
jsmith82
05.02.14
✎
14:28
|
имя таблицы формы знаешь?
|
|||
53
jsmith82
05.02.14
✎
14:29
|
ну как не можешь
на клиенте напиши Элементы, вычисли смотри имена элементов формы |
|||
54
KuJIT
05.02.14
✎
14:29
|
И есть реквизит строковый, в котором то же самое имя написано.
|
|||
55
KuJIT
05.02.14
✎
14:33
|
Элементы.ДФФормированиеЗаказа01234567890123Список
|
|||
56
KuJIT
05.02.14
✎
14:33
|
(53) Вот это помогает. Появилась куча элементов, которых в форме не было. Видимо нужный
|
|||
57
KuJIT
05.02.14
✎
14:40
|
Это оно?)
|
|||
58
jsmith82
05.02.14
✎
14:57
|
(57) ещё в отладке вычисли ЭтаФорма и посмотри реквизиты формы
|
|||
59
jsmith82
05.02.14
✎
14:57
|
>>ДФФормированиеЗаказа01234567890123Список
Ахринеть |
|||
60
KuJIT
05.02.14
✎
15:06
|
(59) Чего охренеть то?
|
|||
61
KuJIT
05.02.14
✎
15:10
|
(58) в ЭтаФорма есть параметр типа "динамическийсписок" с таким же именем
|
|||
62
jsmith82
05.02.14
✎
15:17
|
(61) ну молодец
нашёл, вычислил теперь надо писать запрос |
|||
63
jsmith82
05.02.14
✎
15:17
|
а, щас вытащи сам текст запроса
ЭтаФорма.ДФФормированиеЗаказа01234567890123Список.ТекстЗапроса |
|||
64
KuJIT
05.02.14
✎
15:25
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
СправочникНоменклатура.Артикул КАК НоменклатураАртикул, СправочникНоменклатура.Наименование КАК НоменклатураНаименование, СправочникНоменклатура.ВидМедицинскойУслуги, ВЫБОР КОГДА СправочникНоменклатура.ЭтоГруппа = ЛОЖЬ ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Лупа, ВЫБОР КОГДА СправочникНоменклатура.ЭтоГруппа = ИСТИНА ТОГДА 0 КОГДА &СегментНоменклатуры <> ЗНАЧЕНИЕ(Справочник.СегментыНоменклатуры.ПустаяСсылка) И (НЕ СправочникНоменклатура.Ссылка В (ВЫБРАТЬ НоменклатураСегмента.Номенклатура ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента ГДЕ НоменклатураСегмента.Сегмент = &СегментНоменклатуры)) ТОГДА 0 КОГДА ЕСТЬNULL(МедУслугиСоглашения.Цена, 0) > 0 ТОГДА МедУслугиСоглашения.Цена * ВЫБОР КОГДА &ВалютаДокумента <> СоглашениеШапка.Валюта ТОГДА ВЫБОР КОГДА ЕСТЬNULL(КурсыСрезПоследнихВалютаСоглашения.Кратность, 0) > 0 И ЕСТЬNULL(КурсыСрезПоследнихВалютаСоглашения.Курс, 0) > 0 И ЕСТЬNULL(КурсыСрезПоследнихВалютаДокумента.Кратность, 0) > 0 И ЕСТЬNULL(КурсыСрезПоследнихВалютаДокумента.Курс, 0) > 0 ТОГДА КурсыСрезПоследнихВалютаСоглашения.Курс * КурсыСрезПоследнихВалютаДокумента.Кратность / (КурсыСрезПоследнихВалютаДокумента.Курс * КурсыСрезПоследнихВалютаСоглашения.Кратность) ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 1 КОНЕЦ КОГДА ЕСТЬNULL(РегистрЦен.Цена, 0) > 0 ТОГДА РегистрЦен.Цена * ВЫБОР КОГДА &ВалютаДокумента <> РегистрЦен.Валюта ТОГДА ВЫБОР КОГДА ЕСТЬNULL(КурсыСрезПоследнихВалютаЦены.Кратность, 0) > 0 И ЕСТЬNULL(КурсыСрезПоследнихВалютаЦены.Курс, 0) > 0 И ЕСТЬNULL(КурсыСрезПоследнихВалютаДокумента.Кратность, 0) > 0 И ЕСТЬNULL(КурсыСрезПоследнихВалютаДокумента.Курс, 0) > 0 ТОГДА КурсыСрезПоследнихВалютаЦены.Курс * КурсыСрезПоследнихВалютаДокумента.Кратность / (КурсыСрезПоследнихВалютаДокумента.Курс * КурсыСрезПоследнихВалютаЦены.Кратность) ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 1 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК Цена, ВЫБОР КОГДА СправочникНоменклатура.ЭтоГруппа = ЛОЖЬ ТОГДА МедУслугиСоглашения.Исполнение КОНЕЦ КАК ИсполнениеУслуги, ВЫБОР КОГДА СправочникНоменклатура.ЭтоГруппа = ЛОЖЬ ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ПризнакГруппы, ВЫБОР КОГДА СправочникНоменклатура.ЭтоГруппа = ИСТИНА ТОГДА 0 КОГДА ОсновныеСпецификацииМедицинскихУслуг.Номенклатура ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ИмеетсяСпецификация, ВЫБОР КОГДА СправочникНоменклатура.ЭтоГруппа = ЛОЖЬ ТОГДА СостоянияНоменклатуры.Состояние КОНЕЦ КАК СостояниеУслуги ИЗ РегистрСведений.ИерархияНоменклатуры КАК ОсновнаяНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами.МедицинскиеУслуги КАК МедУслугиСоглашения ПО (МедУслугиСоглашения.Ссылка = &ТекСоглашение) И ОсновнаяНоменклатура.Ссылка = МедУслугиСоглашения.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами КАК СоглашениеШапка ПО (СоглашениеШапка.Ссылка = &ТекСоглашение) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами.ЦеновыеГруппы КАК СоглашениеЦеновыеГруппы ПО (СоглашениеШапка.Ссылка = СоглашениеЦеновыеГруппы.Ссылка) И ОсновнаяНоменклатура.ЦеноваяГруппа = СоглашениеЦеновыеГруппы.ЦеноваяГруппа ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК РегистрЦен ПО ОсновнаяНоменклатура.Ссылка = РегистрЦен.Номенклатура И (РегистрЦен.ВидЦены = ВЫБОР КОГДА ЕСТЬNULL(МедУслугиСоглашения.Цена, 0) > 0 ТОГДА ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) КОГДА МедУслугиСоглашения.ВидЦены <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) И МедУслугиСоглашения.ВидЦены ЕСТЬ НЕ NULL ТОГДА МедУслугиСоглашения.ВидЦены КОГДА (МедУслугиСоглашения.ВидЦены = ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) ИЛИ МедУслугиСоглашения.ВидЦены ЕСТЬ NULL ) И СоглашениеЦеновыеГруппы.ВидЦен ЕСТЬ НЕ NULL И СоглашениеЦеновыеГруппы.ВидЦен <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) ТОГДА СоглашениеЦеновыеГруппы.ВидЦен КОГДА (МедУслугиСоглашения.ВидЦены = ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) ИЛИ МедУслугиСоглашения.ВидЦены ЕСТЬ NULL ) И (СоглашениеЦеновыеГруппы.ВидЦен ЕСТЬ NULL ИЛИ СоглашениеЦеновыеГруппы.ВидЦен = ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)) И СоглашениеШапка.ВидЦен <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) ТОГДА СоглашениеШапка.ВидЦен ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) КОНЕЦ) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияНоменклатуры.СрезПоследних(&Дата, ) КАК СостоянияНоменклатуры ПО ОсновнаяНоменклатура.Ссылка = СостоянияНоменклатуры.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОсновныеСпецификацииМедицинскихУслуг.СрезПоследних(&Дата, ) КАК ОсновныеСпецификацииМедицинскихУслуг ПО ОсновнаяНоменклатура.Ссылка = ОсновныеСпецификацииМедицинскихУслуг.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыСрезПоследнихВалютаЦены ПО (КурсыСрезПоследнихВалютаЦены.Валюта = РегистрЦен.Валюта) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &ВалютаДокумента) КАК КурсыСрезПоследнихВалютаДокумента ПО (ИСТИНА) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &ВалютаДокумента) КАК КурсыСрезПоследнихВалютаСоглашения ПО (ИСТИНА) ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура ПО ОсновнаяНоменклатура.НоменклатураИГруппы = СправочникНоменклатура.Ссылка И (ИСТИНА И ОсновнаяНоменклатура.ВладелецНоменклатуры = ЗНАЧЕНИЕ(Справочник.ВладельцыНоменклатуры.ПустаяСсылка)) И (ОсновнаяНоменклатура.ЭтоГруппа = ЛОЖЬ) И (СправочникНоменклатура.ЭтоГруппа <= &ОтображатьГруппы) И (СправочникНоменклатура.ПометкаУдаления = ЛОЖЬ) |
|||
65
jsmith82
05.02.14
✎
15:32
|
ну вот по команде топай в серверную процедуру, делай запрос, вытаскивай нужные строки и манипулируй данными
таблица формы в данном случае лишь динамически отображает состояние запроса, то есть для динамического списка невозможна итерация как для таблицы значений или табличной части |
|||
66
KuJIT
05.02.14
✎
15:52
|
Ясно-понятно. Спасибо большое!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |