Имя: Пароль:
1C
1С v8
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) это печально; но зато с тс, наверное, вы одной волне