|
Изменение данных поля строки табличной части | ☑ | ||
---|---|---|---|---|
0
gmax007
24.07.13
✎
15:56
|
8.2 Управляемые формы. Как изменить данные определенного поля во всех строках (в цикле) в уже открытой форме при нажатии на кнопку, новые данные рассчитываются умножением данных из других полей. В отладчике все считается, ошибок нет, а на форме ничего не меняется. Помогите
|
|||
1
ДенисЧ
24.07.13
✎
16:04
|
Беги на сервер и там меняй...
Если это ТЧ объекта, то через Объект.ТЧ, Иначе РеквизитФормыВЗначение("ТЧ"); ЗначениеВРеквизитФормы(); КОнецЕсли; |
|||
2
Поросенок Петр
24.07.13
✎
16:04
|
Ошибка в 4-й строке. Однозначно.
|
|||
3
gmax007
24.07.13
✎
16:20
|
(1) а как на сервере к полю ТЧ обратиться чтобы его перезаписать как раз. Объект.ТЧ - сама ТЧ, а его поле
|
|||
4
ДенисЧ
24.07.13
✎
16:23
|
(3) Каком кверху :-)
Для Каждого стр из Объект.Тч Цикл Стр.Реквизит3 = стр1.Реквизит1 + стр.Реквизит2; КонецЦикла; |
|||
5
banco
24.07.13
✎
16:25
|
(1) можно и на клиенте
|
|||
6
palpetrovich
24.07.13
✎
16:32
|
(5) +1
&НаКлиенте Процедура ТоварыТоварПриИзменении(Элемент) РаботаСДокументамиНаКлиенте.РасчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры |
|||
7
palpetrovich
24.07.13
✎
16:32
|
+ 6 поудалял лишнее :)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; |
|||
8
gmax007
24.07.13
✎
16:36
|
(4) + 6
Да все это я пробовал, в отладчике все считается например Для Каждого стр из Объект.Тч Цикл Сообщить(Стр.Реквизит3); КонецЦикла; честно сообщает, а вот Для Каждого стр из Объект.Тч Цикл Стр.Реквизит3 = стр1.Реквизит1 + стр.Реквизит2; КонецЦикла; ну считается реквизит3 а вот на форме не меняется |
|||
9
gmax007
24.07.13
✎
16:38
|
то же и на клиенте происходит
|
|||
10
gmax007
24.07.13
✎
16:43
|
&НаСервере
Процедура ПересчетПоКурсу(Курс) ЗакРубСумма = 0; //ТаможенныеРасходы - имя ТЧ Для Каждого стр из Объект.ТаможенныеРасходы Цикл Стр.ЗакупочнаяЦенаРуб = Стр.ЗакупочнаяЦенаДол*Курс; ЗакРубСумма = ЗакРубСумма + Стр.ЗакупочнаяЦенаРуб; КонецЦикла вот конкретный пример |
|||
11
palpetrovich
24.07.13
✎
16:57
|
все работает:
// в форме документа: &НаКлиенте Процедура ТоварыТоварПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; РаботаСДокументамиНаКлиенте.РасчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры // общий модуль, в свойствах флаг - только на "Клиент(упр.прил) Процедура РасчитатьСумму(СтрокаТабличнойЧасти) Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; КонецПроцедуры |
|||
12
gmax007
24.07.13
✎
17:00
|
Попробую, отпишусь, щас вспоминаю раньше тоже что-то подобное через общий модуль пришлось делать
А вот здесь &НаСервере Процедура ПересчетПоКурсу(Курс) ЗакРубСумма = 0; //ТаможенныеРасходы - имя ТЧ Для Каждого стр из Объект.ТаможенныеРасходы Цикл Стр.ЗакупочнаяЦенаРуб = Стр.ЗакупочнаяЦенаДол*Курс; ЗакРубСумма = ЗакРубСумма + Стр.ЗакупочнаяЦенаРуб; КонецЦикла Реквизиты readonly штоль? почему он выводит (Сообщить), а не пишет? Так уж интересно просто |
|||
13
gmax007
25.07.13
✎
09:12
|
{ОбщийМодуль.МойОбщийМодуль.Модуль(3)}: Значение не является значением объектного типа (ЗакупочнаяЦенаРуб)
СтрокаТабличнойЧасти.ЗакупочнаяЦенаРуб = СтрокаТабличнойЧасти.ЗакупочнаяЦенаДол*Курс; В чем может быть дело? |
|||
14
Капитан О
25.07.13
✎
09:14
|
(13) в СтрокаТабличнойЧасти
|
|||
15
gmax007
25.07.13
✎
09:19
|
Ну это я понял, а как мне посчитать то ее в общем модуле?
|
|||
16
Капитан О
25.07.13
✎
09:21
|
(15) присвоить туда строку ТЧ, а не всякую хню
|
|||
17
gmax007
25.07.13
✎
09:23
|
(11)
А собственно почему СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; текущие данные это же вроде когда пользователь выделяет строку в ТЧ, а у меня должен просто дату курса доллара менять и вся ТЧ тутже пересчитываться |
|||
18
Капитан О
25.07.13
✎
09:25
|
кажется, начинает работать мозг
|
|||
19
gmax007
25.07.13
✎
10:00
|
Помогите, как мне данные из поля строки передать в общий модуль и там их перезаписать
|
|||
20
cw014
25.07.13
✎
10:02
|
Я подозреваю, что на форме таблица никак не связана с ТЧ
|
|||
21
Капитан О
25.07.13
✎
10:06
|
(19) передавай данные из данных
|
|||
22
gmax007
25.07.13
✎
10:06
|
Все связано, она у меня заполняется из документа-основания, дефолтными данными которые я ей даю при обработке заполнения,там из документа-основания дата переходит в дату курса доллара и прям обработке заполнения все считается, а вот надо чтобы еще пользователь мог эту дату изменить вручную, и при изменении пересчиталось
|
|||
23
cw014
25.07.13
✎
10:08
|
(22) Ну не знаю. Если увижу картинку - отвечу, иначе вариантов мильон
|
|||
24
gmax007
25.07.13
✎
10:09
|
(21) Можно попроще я не профессионал, данные из данных это что конкретно вот например мне нужно передать в общий модуль данные строки
Я передаю стр = ЭтаФорма.Элементы.ИмяТЧ.(а здесь что только не пробовал) Я понимаю что я не сами данные а форму передаю Приведите пожалуйста пример что за данные из данных |
|||
25
Капитан О
25.07.13
✎
10:10
|
(24) пример: РассчитатьТЧ(ТЧ)
|
|||
26
gmax007
25.07.13
✎
10:19
|
(23)
Вот форма документа, функцию которая получает курс доллара на дату я написал и этот курс как раз хочу передать в общий модуль да пересчета колонки ТЧ [URL=http://radikal.ru/fp/03ce8092253049279292726195c4033a][IMG]http://s55.radikal.ru/i150/1307/83/e3483044ffdft.jpg[/IMG][/URL] |
|||
27
gmax007
25.07.13
✎
10:20
|
||||
28
cw014
25.07.13
✎
10:21
|
Код в студию
|
|||
29
gmax007
25.07.13
✎
10:28
|
Модуль формы
&НаКлиенте Процедура ПолучитьКурс(ДатаКурса) Курс = 0; ПолучениеКурса(ДатаКурса, Курс); КонецПроцедуры &НаСервере Процедура ПолучениеКурса(ДатаКурса, Курс) Обработка = РеквизитФормыВЗначение("Объект"); Курс = Обработка.ПересчетДолларовВРублиНаУказДату(ДатаКурса); ЗначениеВРеквизитФормы(Обработка, "Объект"); КонецПроцедуры &НаКлиенте Процедура ДатаОплатыПоступленияПриИзменении(Элемент) ДатаКурса = Объект.ДатаОплатыПоступления; //новая дата курса Курс = 0; ПолучениеКурса(ДатаКурса, Курс);// Курс прилетает на нужную ДатаКурса Строка = ЭтаФорма.Элементы.ТаможенныеРасходы; //СтрокаТабличнойЧасти = ЭтаФорма.Элементы.ТаможенныеРасходыЗакупочнаяЦенаРуб; // здесь незнаю что нужно получить для передачи в общий модуль ЗакРубСумма = 0; МойОбщийМодуль.ПересчитатьПоКурсуДляСебестоимости (Строка, Курс, ЗакРубСумма); // Идем в общий модуль вместе со строкой и курсом КонецПроцедуры Общий модуль (должно считаться типа того и переписать данные ТЧ) Для каждого цикл строка.ценаРуб = строка.ценаДол*Курс конеццикла |
|||
30
Капитан О
25.07.13
✎
10:30
|
(29) ПересчетДолларовВРублиНаУказДату - вот тут пиши верный код
|
|||
31
gmax007
25.07.13
✎
10:33
|
Курс = Обработка.ПересчетДолларовВРублиНаУказДату(ДатаКурса);
В Курс записывается правильный курс из регистра, а ПересчетДолларовВРублиНаУказДату(ДатаКурса) в модуле объекта у меня, тут нормально я получаю курс, который можно передать в общий модуль, а если не оптимизировано, то это потом буду смотреть |
|||
32
cw014
25.07.13
✎
10:41
|
Строка = ЭтаФорма.Элементы.ТаможенныеРасходы; //СтрокаТабличнойЧасти = ЭтаФорма.Элементы.ТаможенныеРасходыЗакупочнаяЦенаРуб; // здесь незнаю что нужно получить для передачи в общий модуль
Убирай этот фееричный бред |
|||
33
gmax007
25.07.13
✎
10:43
|
(32) что мне передать вместо моего бреда в общий модуль чтоб можно было пересчитать ТЧ
|
|||
34
Капитан О
25.07.13
✎
10:44
|
(33) дату, если она не является реквизитом
|
|||
35
cw014
25.07.13
✎
10:44
|
Элементы.ТвояТЧ.ТекущиеДанные
|
|||
36
Капитан О
25.07.13
✎
10:46
|
(35) скажи как умный товарищ, зачем без формы пересчитывать то, что живёт только на форме? (у автора так же?)
|
|||
37
cw014
25.07.13
✎
10:47
|
(36) Понятия не имею. Я весь код не вижу, да и задача до конца мне не ясна. Она так то в течение 5 минут решается
|
|||
38
Капитан О
25.07.13
✎
10:49
|
(37) задача - пересчёт ТЧ. как в букваре радченко при изменении цены пересчитывается сумма. только у радченко вынесение кода в ОМ оправдано (данные пересчитываются без формы), а зачем автор захотел использовать модуль обработки - ещё вопрос
|
|||
39
gmax007
25.07.13
✎
10:49
|
Данные = Элементы.ТаможенныеРасходы.ТекущиеДанные; уже тип Неопределено
|
|||
40
gmax007
25.07.13
✎
10:50
|
я ж пробовал так сто раз текущиеданные, текущаястрока толку нет
|
|||
41
Капитан О
25.07.13
✎
10:50
|
(39) зачем тебе элементы? зачем тебе текущая строка?
|
|||
42
cw014
25.07.13
✎
10:50
|
(39) Логично, строка то не выбрана
Делай так: Для Каждого СтрокаТЧ ИЗ Объект.ТвояТЧ Цикл МойОбщийМодуль.ПересчитатьПоКурсуДляСебестоимости (СтрокаТЧ, Курс, ЗакРубСумма); // Идем в общий модуль вместе со строкой и курсом КонецЦикла; |
|||
43
gmax007
25.07.13
✎
10:51
|
(38)
именно как у Радченко, только там строка становиться текущий, потому что пльзователь на ней стоит и меняет цену (вроде) , а у меня при изменении даты, которая в шапке а не ТЧ |
|||
44
Капитан О
25.07.13
✎
10:51
|
(43) поэтому тебе надо переработать всю таблицу
|
|||
45
cw014
25.07.13
✎
10:52
|
(43) см (42)
|
|||
46
Капитан О
25.07.13
✎
10:52
|
а я за цикл в ОМ
|
|||
47
gmax007
25.07.13
✎
10:53
|
(44) вот я и прошу, чтоб ткнули что нужно в таком случае вместо текущейстроки передавать, чтоб тип был у данных и посчитать
|
|||
48
gmax007
25.07.13
✎
10:56
|
(42) тоже самое все там передается СтрокаТЧ (которую как раз я и не знаю как получить), вопрос не вцикле и в аргументах, а в том какую строку (как получить) (или же поле) передать для подсчета
|
|||
49
gmax007
25.07.13
✎
10:56
|
(42) Напиши что есть СтрокаТЧ из приведенного примера
|
|||
50
cw014
25.07.13
✎
10:56
|
(48) Тебе готовое решение твоей проблемы написали
|
|||
51
cw014
25.07.13
✎
10:57
|
(49) СтрокаТЧ из приведенного примера - это ДанныеФормыЭлементКоллекции
|
|||
52
gmax007
25.07.13
✎
11:00
|
(51) (8)
|
|||
53
cw014
25.07.13
✎
11:02
|
(25) > (20)
|
|||
54
cw014
25.07.13
✎
11:02
|
(52) Либо данная колонка не связана с реквизитом
|
|||
55
Капитан О
25.07.13
✎
11:03
|
(54) я вообще понял, что у него всё на форме живёт
|
|||
56
gmax007
25.07.13
✎
11:13
|
(55) может я что-то непонимаю про житье на форме ну я писал что реквизиты заполняются/считаются еще при создании этого документа на основании другого
вот реквизиты, связаны они, я табличную часть наформу перетаскивал реквизитом http://s020.radikal.ru/i703/1307/ab/1ad6cb5c6fa2.jpg |
|||
57
gmax007
25.07.13
✎
11:15
|
Через Объект. можно обратиться к ТЧ
|
|||
58
gmax007
25.07.13
✎
11:21
|
То есть я могу обратиться Объект.ИмяТЧ, но не могу Объект.ИмяТЧ.Реквизит, так должно или не должно быть?
|
|||
59
Капитан О
25.07.13
✎
11:23
|
(58) какая из трёхсот строк имеется в виду во втором случае?
|
|||
60
gmax007
25.07.13
✎
11:25
|
(59) О = Объект.ТаможенныеРасходы.ЗакупочнаяЦенаРуб
Прогнал через отладчик - поле объекта не обнаружено, может заново весь док и форму построить |
|||
61
Капитан О
25.07.13
✎
11:26
|
(60) а на вопрос ответь
|
|||
62
gmax007
25.07.13
✎
11:27
|
говорю же Объект.ТаможенныеРасходы.ЗакупочнаяЦенаРуб не работает а Объект.ТаможенныеРасходы. Эти случаи имеешь виду?
|
|||
63
cw014
25.07.13
✎
11:27
|
Я пасс, я уже не знаю как объяснять. Уже на пальцах разжевали и в рот положили, он все равно свое гнет
|
|||
64
gmax007
25.07.13
✎
11:28
|
(63)не гнул бы если работало
|
|||
65
Капитан О
25.07.13
✎
11:28
|
(62) какая строка?
|
|||
66
Капитан О
25.07.13
✎
11:28
|
(64) пока будешь гнуть, не заработает
|
|||
67
gmax007
25.07.13
✎
11:29
|
(65) писал же сто раз Объект.ТаможенныеРасходы.ЗакупочнаяЦенаРуб
|
|||
68
Капитан О
25.07.13
✎
11:31
|
(67) в ТЧ тысяча строк. закупочную цену какой ты сейчас показал?
|
|||
69
gmax007
25.07.13
✎
11:32
|
Ладно, буду заново форму строить или весь документ
|
|||
70
gmax007
25.07.13
✎
15:01
|
Короче все по другому сделал. Теперь пользователь у меня не будет менять дату курса, а будет ее указывать в окне обработки (а также записываться в константу), которая создает документ и передает управление обработке заполнения на основании, которое также будет указано в окне обработки, так даже лучше потому что не будет дефолтного заполнения , которое будет не на нужную дату, а сразу. А те расчеты чот у меня не получились также считаются в заполнении но у же с нужным курсом на дату(из константы)
|
|||
71
Капитан О
25.07.13
✎
15:59
|
спорим, константа тут на фих не нужна?
|
|||
72
gmax007
25.07.13
✎
16:12
|
(71)
Возможно не нужна. Не знал как проще данные из общего модуля передать в модуль объекта моего документа, ну работает эта часть пока, оптимизировать потом мож буду |
|||
73
Капитан О
25.07.13
✎
16:19
|
(72) оптимизация - это о другом. в твоём случае делать правильно нужно
|
|||
74
gmax007
25.07.13
✎
16:23
|
(73) Да я хочу побыстрей доделать документ, регистры евошние потом ну и отчеты, показать экономистам что себестоимость так как им нужно считается)) торопют целыми днями. А вообще у меня получается что из обработки после ОткрытьФорму выполняется обработка заполнения, я не знаю как передать основание и дату курса (указанные в окне обработки) в нее из ОткрытьФорму, а вот додумался через константы. примитив конечно же, зато доволен что считается
|
|||
75
Капитан О
25.07.13
✎
16:33
|
(74) спешка нужна лишь при ловле блох
|
|||
76
gmax007
26.07.13
✎
11:28
|
странно
&НаСервере Процедура ПересчетПоКурсу(Курс) ЗакРубСумма = 0; //ТаможенныеРасходы - имя ТЧ Для Каждого стр из Объект.ТаможенныеРасходы Цикл Стр.ЗакупочнаяЦенаРуб = Стр.ЗакупочнаяЦенаДол*Курс; КонецЦикла Здесь не записывалось в Стр.ЗакупочнаяЦенаРуб Позже делал подобную вещь только распределение себестимости там было Для Каждого стр из Объект.ТаможенныеРасходы Цикл Стр.Расходы = Стр.ЗакупочнаяЦенаРуб ну и формула расчета; КонецЦикла и все в Стр.Расходы записалось |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |