|
табличные части с8,2 | ☑ | ||
---|---|---|---|---|
0
KonstantinK90
26.03.15
✎
07:06
|
Здтаствуйте! Подскажите как правильно сделать. Я создаю новый документ в нем есть 2 табЧасти: 1 Прицепы 2 РасходГСМ, В Первой ТабЧасти Есть колонки такие как ТС и ОстатокТоплива и 2 ТабЧасти Есть колонки такие как ТС ОстатокТоплива как их связать что бы при изменении в 1 табЧасти ОстатокТоплива Автоматом менялся и 2 ТабЧасти ОстатокТоплива. Я понимаю что нужно повесить на событие приИзменении ОстатокТоплива в 1 ТабЧасти. Но как правильно это сделать если во 2 колонке строк 5-10.... как пробежаться по всем строкам 2 табЧасти и найти Соответсвие ТС и приравнять остаток топлива
|
|||
1
rphosts
26.03.15
✎
07:15
|
(0) Если у вас всегда 1 строке из таблицы 1 соответствует 1 строка таблицы 2 - тебе не нужны 2 ТЧ, тебе достаточно 1 ТЧ и если уж отображать в разных видах - отображать разные наборы реквизитов на разных закладках/в разных окнах.
Если такого соответствия нет: обрабатывать события ПриОкончанииРедактирования и ПослеУдаления по алгаритмо реализуещему увязывание данных одной ТЧ с другой |
|||
2
rphosts
26.03.15
✎
07:16
|
*алгоритму
|
|||
3
Chameleon1980
26.03.15
✎
07:17
|
какой нить реквизит "Ключ" и в 1й и во 2й тч
|
|||
4
KonstantinK90
26.03.15
✎
07:18
|
ключ это тс (транспортное средство)
|
|||
5
KonstantinK90
26.03.15
✎
07:19
|
пишу вот так
Процедура ТабличноеПолеПрицепыТопливоПриВыездеПриИзменении(Элемент) // Вставить содержимое обработчика. ТабПолеПрицепы = ЭлементыФормы.ТабличноеПолеПрицепы.ТекущиеДанные; ТабПолеРасходГСМ = ЭлементыФормы.ТабличноеПолеРасходГСМ.ТекущиеДанные; Если ТабПолеПрицепы.ТС.Наименование = ТабПолеРасходГСМ.ТС.Наименование Тогда ТабПолеРасходГСМ.ОстатокПриВыезде = ТабПолеПрицепы.ТопливоПриВыезде; КонецЕсли; КонецПроцедуры |
|||
6
KonstantinK90
26.03.15
✎
07:19
|
прицепы это первая таб
|
|||
7
KonstantinK90
26.03.15
✎
07:21
|
он берет тс из первой таб части и сравнивает тс из 2 таб части только 1 строку а если соответствующая тс во в 2 таблице находится в строке 2 или 5 как пробежаться по сторкам и сравнить
|
|||
8
ДенисЧ
26.03.15
✎
07:22
|
(7) Продам описание функции НайтиСтроки(), а также конструкции цикла.
|
|||
9
KonstantinK90
26.03.15
✎
07:23
|
о блин точно найти строки как это сделать скажите а тя уже голову сломал
|
|||
10
KonstantinK90
26.03.15
✎
07:26
|
как воспользоваться найтиСтроки
|
|||
11
KonstantinK90
26.03.15
✎
07:27
|
в моем случаи?
|
|||
12
rphosts
26.03.15
✎
07:31
|
Твоё ПриИзменении не отловит факта удаления строки из одной ТЧ, не отловит изменения ТС в строке и т.д.
|
|||
13
KonstantinK90
26.03.15
✎
07:32
|
ну а как нужно?
|
|||
14
аспид
26.03.15
✎
07:35
|
ТабПолеПрицепы = ЭлементыФормы.ТабличноеПолеПрицепы.ТекущиеДанные;
ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ТС", ТабПолеПрицепы.ТС); НайденныеСтроки = ТабПолеРасходГСМ.НайтиСтроки(ПараметрыОтбора); Вот как то так попробуй |
|||
15
kosts
26.03.15
✎
07:38
|
Тоже самое но компактнее )
|
|||
16
KonstantinK90
26.03.15
✎
07:39
|
спасибо сейчас по пробую
|
|||
17
Chameleon1980
26.03.15
✎
07:39
|
да блин ну что за люди.
то в СП трудно глянуть, то отладчиком поглядеть. Нет. Пойдем на форум - за кнопкой "Сделать все". |
|||
18
аспид
26.03.15
✎
07:39
|
(15)
*Для Каждого СтрокаТЧ ИЗ ... так правильнее )) |
|||
19
kosts
26.03.15
✎
07:43
|
(18) И так и так работает, но чаще я пишу проще
|
|||
20
KonstantinK90
26.03.15
✎
07:43
|
Значение не является значением объектного типа (НайтиСтроки)
НайденныеСтроки = ТабПолеРасходГСМ.НайтиСтроки(ПараметрыОтбора); |
|||
21
kosts
26.03.15
✎
07:48
|
(20) Вместо ТабПолеРасходГСМ надо написать действительное имя табличной части, а не имя табличного поля.
|
|||
22
аспид
26.03.15
✎
07:57
|
(19) Стив Макконнелл на тебя смотрит неодобрительно ))
я в таких случая обычно пишу Для Каждого СтрокаТабЧастиИмяТабЧастиИмениБорисаНуралиева из ИмяТабЧастиИмениБорисаНуралиева Цикл .. букв не жалко.. зато читать потом проще .. и мне и тому кто будет потом .. |
|||
23
KonstantinK90
26.03.15
✎
08:01
|
пишу вот так
Процедура ТабличноеПолеПрицепыТопливоПриВыездеПриИзменении(Элемент) // Вставить содержимое обработчика. ТабПолеПрицепы = ЭлементыФормы.ТабличноеПолеПрицепы.ТекущиеДанные; ТабПолеРасходГСМ = ЭлементыФормы.ТабличноеПолеРасходГСМ.ТекущиеДанные; ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ТС", ТабПолеПрицепы.ТС); НайденныеСтроки = РасходГСМ.НайтиСтроки(ПараметрыОтбора); Для Каждого Строка Из НайденныеСтроки Цикл Если Строка.ТС.Наименование = ТабПолеПрицепы.ТС.Наименование Тогда ТабПолеРасходГСМ.ОстатокПриВыезде = ТабПолеПрицепы.ТопливоПриВыезде; КонецЕсли; КонецЦикла; КонецПроцедуры выдает ошибку Значение не является значением объектного типа (ОстатокПриВыезде) ТабПолеРасходГСМ.ОстатокПриВыезде = ТабПолеПрицепы.ТопливоПриВыезде; в чем дело подскажите |
|||
24
kosts
26.03.15
✎
08:03
|
(22) В имена переменных с простым смыслом нет смысла писать полный смысл. Во как )))
|
|||
25
KonstantinK90
26.03.15
✎
08:05
|
??
|
|||
26
kosts
26.03.15
✎
08:07
|
(23) >Если Строка.ТС.Наименование = ТабПолеПрицепы.ТС.Наименование Тогда
Это так специально написано , сравнение по наименованию или по ошибке? |
|||
27
аспид
26.03.15
✎
08:07
|
"ТабПолеРасходГСМ" это элемент формы ? или табличная часть документа ?
|
|||
28
аспид
26.03.15
✎
08:12
|
(23) а впрочем пофиг..
Вместо: ТабПолеРасходГСМ.ОстатокПриВыезде = ТабПолеПрицепы.ТопливоПриВыезде; Пиши: Строка.ОстатокПриВыезде = ТабПолеПрицепы.ТопливоПриВыезде; |
|||
29
KonstantinK90
26.03.15
✎
08:15
|
уже на писал вот так. главное что интересно ошибки нет в отладчике смотрю он передает значение в Строка.ОстатокПриВыезде а при выходе из отладки значение ноль
|
|||
30
аспид
26.03.15
✎
08:19
|
(29) ээээ .. щито ? еще раз. в чем проблема ?
|
|||
31
KonstantinK90
26.03.15
✎
08:23
|
пишу вот так
Процедура ТабличноеПолеПрицепыТопливоПриВыездеПриИзменении(Элемент) // Вставить содержимое обработчика. ТабПолеПрицепы = ЭлементыФормы.ТабличноеПолеПрицепы.ТекущиеДанные; ТабПолеРасходГСМ = ЭлементыФормы.ТабличноеПолеРасходГСМ.ТекущиеДанные; ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ТС", ТабПолеПрицепы.ТС); НайденныеСтроки = РасходГСМ.НайтиСтроки(ПараметрыОтбора); Для Каждого Строка Из НайденныеСтроки Цикл Если Строка.ТС.Наименование = ТабПолеПрицепы.ТС.Наименование Тогда Строка.ОстатокПриВыезде = ТабПолеПрицепы.ТопливоПриВыезде; Сообщить(Строка.ОстатокПриВыезде); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
32
KonstantinK90
26.03.15
✎
08:24
|
он передает данные в значение строка.ОстатокПриВыезде но при выходе из отладчика значение строка.ОстатокПриВыезде пусто как будто он передает но не сохраняет что передал
|
|||
33
аспид
26.03.15
✎
08:25
|
ага ? и ? что сообщает ?
|
|||
34
KonstantinK90
26.03.15
✎
08:26
|
и главное на писал для проверки Сообщить(Строка.ОстатокПриВыезде); сообщает верон не сохраняет
|
|||
35
KonstantinK90
26.03.15
✎
08:26
|
сообщает то что я указал в ТабПолеПрицепы.ТопливоПриВыезде
|
|||
36
аспид
26.03.15
✎
08:27
|
Если Строка.ТС.Наименование = ТабПолеПрицепы.ТС.Наименование Тогда
Строка.ОстатокПриВыезде = ТабПолеПрицепы.ТопливоПриВыезде; Сообщить("1 -" + Строка.ОстатокПриВыезде); Сообщить("2 -" + ТабПолеПрицепы.ТопливоПриВыезде); КонецЕсли; Что сообщит ? |
|||
37
KonstantinK90
26.03.15
✎
08:30
|
1 -5
2 -5 |
|||
38
KonstantinK90
26.03.15
✎
08:31
|
и что это значит?
|
|||
39
KonstantinK90
26.03.15
✎
08:31
|
в поле ТабПолеПрицепы.ТопливоПриВыезде я указал число 5
|
|||
40
KonstantinK90
26.03.15
✎
08:32
|
?
|
|||
41
аспид
26.03.15
✎
08:34
|
это значит что в таб поле РасходГСМ должно появиться указанное значение.
|
|||
42
KonstantinK90
26.03.15
✎
08:34
|
это я уже сам понял но оно почему то не появляеться
|
|||
43
аспид
26.03.15
✎
08:35
|
значит что в строку таб части все передается корректно. на форме в таб части что нить появляется ?
|
|||
44
kosts
26.03.15
✎
08:36
|
Возможно где-то еще какой-то код выполняется и перезатирает
|
|||
45
аспид
26.03.15
✎
08:36
|
всё. теперь сам. пора валить на работу. я ушел.
|
|||
46
KonstantinK90
26.03.15
✎
08:37
|
сам вакт интересен если я в с Строка.ОстатокПриВыезде руками поставлю какое нибудь число а потом в поле ТабПолеПрицепы.ТопливоПриВыезде то при выполнении события в Строка.ОстатокПриВыезде = 0
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |