|
1с 8.3 Как сравнить элемент при изменении с другим реквизитом в той же строке таблицы? | ☑ | ||
---|---|---|---|---|
0
King-SD
18.02.19
✎
10:18
|
Добрый день! Такой вопрос - Есть таблица со значениями такого вида:
Номенклатура Остаток Запросить Яблоко 4 4 Апельсин 3 0 Банан 6 5 Как программно сделать так, чтоб при изменении значения 0 он в условии сравнил его со значением 3 в этой же строке? |
|||
1
ДенисЧ
18.02.19
✎
10:19
|
В событии приИзменении() ?
|
|||
2
King-SD
18.02.19
✎
10:19
|
Либо другое значение Реквизита Запросить с реквизитом Остаток в той же строке
|
|||
3
King-SD
18.02.19
✎
10:20
|
(1) Не, это понятно, не функция интересует, а как правильно указать элементы строки
|
|||
4
King-SD
18.02.19
✎
10:21
|
К примеру...
Если Запросить > Остаток Тогда Отказ = Истина ; КонецЕсли ; |
|||
5
ДенисЧ
18.02.19
✎
10:21
|
(3) ТвоеПоле.ТекущиеДанные
|
|||
6
JeHer
18.02.19
✎
10:21
|
Элементы.ТвояТЧ.ТекущиеДанные - если УФ
|
|||
7
King-SD
18.02.19
✎
10:31
|
Спасибо за ответ, это уже кое-что дало.. Но попрошу отета на более сложную задачу... Есть такая таблица -
Номенклатура Остаток Запросить Запросить2 Запросить3 запросить4 Яблоко 4 4 4 5 6 Апельсин 3 0 2 7 3 Банан 6 5 34 34 34 Как в таком случае при изменении значения в строке любого из Запросить оно сравнивалось с Остаток? |
|||
8
King-SD
18.02.19
✎
10:34
|
Для всех указать одну функцию ПриИзменении, это ясно,, но как в условие попадало значение именно изменяемого элемента на место Запросить в моём примере?
|
|||
9
breezee
18.02.19
✎
10:37
|
(8) Какая разница, вы изменяете текущий элемент или любой другой?
|
|||
10
Василий Алибабаевич
18.02.19
✎
10:39
|
(9) Он не может понять как внутри функции определить кого изменили.
|
|||
11
King-SD
18.02.19
✎
10:39
|
(10) именно..
|
|||
12
Василий Алибабаевич
18.02.19
✎
10:41
|
(11) У табличного поля есть свойство "ТекущаяКолонка". А у поля есть свойство "Имя". Оно вполне доступно внутри "ПриИзменении".
|
|||
13
Жан Пердежон
18.02.19
✎
10:41
|
(11) там в функции параметр есть...
|
|||
14
Василий Алибабаевич
18.02.19
✎
10:42
|
(13) У меня нет. У меня особенная 1С?
|
|||
15
King-SD
18.02.19
✎
10:45
|
Я изменяю одну из ячеек на которые указана функция ПриИзменении,, в функции код -
Если ИзменяемыйЭлемент > Элементы.ТабличнаяЧасть.ТекущиеДанные.Остаток Тогда Отказ = Истина; КонецЕсли ; Как сделать, чтоб вместо ИзменяемыйЭлемент он тянул данные той колонки, которую изменяем? |
|||
16
Василий Алибабаевич
18.02.19
✎
10:46
|
(15) Ты (12) уже прочитал? Проверил?
|
|||
17
King-SD
18.02.19
✎
10:48
|
(16) Так он тянет Имя колонки в таблице, а не её значение
|
|||
18
Василий Алибабаевич
18.02.19
✎
10:50
|
Звиздетц. Окончательный и бесповоротный. Иметь имя колонки, данные текущей строки и ... Короче :
Элементы.ТабличнаяЧасть.ТекущиеДанные[<ИмяКолонки>] |
|||
19
Василий Алибабаевич
18.02.19
✎
10:51
|
+ (18) Вместо "<ИмяКолонки>" собственно переменная с именем колонки.
|
|||
20
Жан Пердежон
18.02.19
✎
10:51
|
(18) шо, появилось?)
|
|||
21
Василий Алибабаевич
18.02.19
✎
10:57
|
(20) Параметром функции? - Неа.
Как было в свойствах табличного документа так и осталось. |
|||
22
King-SD
18.02.19
✎
11:02
|
Не, не понимаю.... Имея Элементы.ТабличнаяЧасть.ТекущиеДанные.Остаток он выводит значение "34" ,
А если Элементы.ТабличнаяЧасть.ТекущийЭлемент то значение "Поле формы", а не цифра, которую ввёл |
|||
23
King-SD
18.02.19
✎
11:03
|
(19) Эти имя разное ведь, в зависимости от того, какая колонка выделена
|
|||
24
Василий Алибабаевич
18.02.19
✎
11:11
|
(23) Например у тебя есть колонка с именем "Запросить2". Тогда в своей функции пишешь :
ИмяКолонки = Элементы.<ИмяТабличнойЧасти>.ТекущаяКолонка.Имя; Отредактировали = Элементы.<ИмяТабличнойЧасти>.ТекущиеДанные[ИмяКолонки]; ЗЫ. После выполнения в переменной "Отредактировали" будет лежать значение. ЗЫ.ЗЫ. Вместо "<ИмяТабличнойЧасти>" нужно подставить реальное имя табличного поля. Все остальное пишешь буква в букву. |
|||
25
catena
18.02.19
✎
11:15
|
Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя]
|
|||
26
Василий Алибабаевич
18.02.19
✎
11:19
|
(25) ТС не может понять смысл квадратных скобок. А попробовать в отладчике никто до сих пор не подсказал...
|
|||
27
King-SD
18.02.19
✎
11:21
|
(25) Ну он же имя выводит, а не значение этой ячейки
|
|||
28
Василий Алибабаевич
18.02.19
✎
11:23
|
(27) То, что указано в (25) выведет значение. Стань в отладчике внутри ПриИзменении и проверь.
|
|||
29
King-SD
18.02.19
✎
11:30
|
{Документ.Заявки.Форма.ФормаДокумента.Форма(751)}: Поле объекта не обнаружено (ТекущаяКолонка)
ИмяКолонки = Элементы.ТабличнаяЧасть.ТекущаяКолонка.Имя; |
|||
30
Василий Алибабаевич
18.02.19
✎
11:32
|
(29) У тебя идентификатор табличная часть точно имеет имя "ТабличнаяЧасть"?
|
|||
31
King-SD
18.02.19
✎
11:33
|
(30) Табличная часть так и называется ТабличнаяЧасть
|
|||
32
King-SD
18.02.19
✎
11:37
|
(30) а при Ячейка = Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя] ;
выводит {Документ.Заявки.Форма.ФормаДокумента.Форма(749)}: Поле объекта не обнаружено (ТабличнаяЧастьЗапросить1) Ячейка = Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя] ; |
|||
33
catena
18.02.19
✎
11:45
|
(32)Так ты дай имена нормальные элементам формы-то... 3 года стаж на форуме, епта...
|
|||
34
Василий Алибабаевич
18.02.19
✎
11:46
|
(32) "Поле объекта не обнаружено (ТабличнаяЧастьЗапросить1)" не хватеат точки между ТабличнаяЧасть и Запросить1.
|
|||
35
catena
18.02.19
✎
11:51
|
(34)Да у него имена полей на форме по-умолчанию сформированы. Их надо привести к единому с именами колонок. Управляемые такие управляемые)))
|
|||
36
Василий Алибабаевич
18.02.19
✎
11:54
|
(35) Птля...
|
|||
37
НЕА123
18.02.19
✎
11:57
|
Ячейка = Элементы.ТабличнаяЧасть.ТекущиеДанные[СтрЗаменить(Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя, "ТабличнаяЧасть", "")] ;
|
|||
38
King-SD
18.02.19
✎
11:58
|
(37)Спасибо, но это уже бог с ним, имена поменяю..
|
|||
39
King-SD
18.02.19
✎
12:01
|
Почему вот так работает -
Если Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя] > Элементы.ТабличнаяЧасть.ТекущиеДанные.ПоФинПлану Тогда Отказ = Истина ; КонецЕсли ; А вот так нет - Ячейка = Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя]; // //Элементы.ТабличнаяЧасть.ТекущийЭлемент ; Если Ячейка > Элементы.ТабличнаяЧасть.ТекущиеДанные.ПоФинПлану Тогда Отказ = Истина ; КонецЕсли ; ?? |
|||
40
King-SD
18.02.19
✎
12:06
|
Если мы виделим Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя] и вычислим выражение, он выдаст то, что нужно, если просто наведу на Элементы.ТабличнаяЧасть.ТекущиеДанные он выдаст ДанныеФормыЭлементКоллекции , наведу на Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя она выдаст Запросить,,
Соответственно Ячейка не получает своё значение почему-то.. |
|||
41
King-SD
18.02.19
✎
12:09
|
а Элементы.ТабличнаяЧасть.ТекущиеДанные.Остаток вычисляет как надо, просто навожу и значение показывает
|
|||
42
Василий Алибабаевич
18.02.19
✎
12:14
|
(41) ТекущийЭлемент - это именно элемент управления. Объект. Связанный с данными, имеющий собственные свойства, события ... Оно собственно иледует из имени.
ТекущиеДанные - это коллекция данных. Именно данных. Не обязательно для данных задан элемент управления. И имя элемента не обязательно совпадает с именем данных. |
|||
43
catena
18.02.19
✎
12:15
|
(40)Это может быть только по одной причине - если тип переменной Ячейка не принимает тип значения.
|
|||
44
King-SD
18.02.19
✎
12:17
|
(43) так вот так тоже не работает ведь -
Если Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя] > Элементы.ТабличнаяЧасть.ТекущиеДанные.Остаток Тогда Отказ = Истина ; КонецЕсли ; А тип значения у них одинаковый, число,, В чём дело тогда? |
|||
45
catena
18.02.19
✎
12:18
|
(44)Вы врач или где? Что значит "не работает"?
|
|||
46
King-SD
18.02.19
✎
12:46
|
(45) он не вычисляет Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя] сам
|
|||
47
King-SD
18.02.19
✎
12:47
|
(45) Соответственно условие не работает
|
|||
48
Василий Алибабаевич
18.02.19
✎
12:49
|
(46) Давай по шагам. Что отладчик показывает вот здесь :
"Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя" |
|||
49
catena
18.02.19
✎
12:50
|
(46)Скрин из отладчика в студию. В табле:
Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя] Элементы.ТабличнаяЧасть.ТекущиеДанные.Остаток Элементы.ТабличнаяЧасть.ТекущиеДанные[Элементы.ТабличнаяЧасть.ТекущийЭлемент.Имя] > Элементы.ТабличнаяЧасть.ТекущиеДанные.Остаток |
|||
50
King-SD
18.02.19
✎
12:54
|
(48) "Запросить" - имя в ковычках
|
|||
51
King-SD
18.02.19
✎
12:55
|
(48) С типом строка
|
|||
52
Василий Алибабаевич
18.02.19
✎
12:59
|
(50) Должно работать.
|
|||
53
King-SD
18.02.19
✎
13:04
|
(52) Вот и я думаю, что должно.. значение то вычисляется,.. ладно, спасибо всем, и так хорошо помогли. буду дальше колупать..
|
|||
54
Жан Пердежон
18.02.19
✎
13:22
|
(21) это печально; но зато с тс, наверное, вы одной волне
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |