|
v7: Запись значений в текстовое поле таблицы документа | ☑ | ||
---|---|---|---|---|
0
Virtmon
14.05.13
✎
09:29
|
База ТиС.
Дали задание: Если сумма документа достигает 3000, то чтоб автоматом вылазила скидка 3% и все строки соответственно ей пересчитывались. Если 5000 - 5%. Все строки без проблем пересчитываются, но вот поле "Скидка" является текстовым и не доступно для редактирования. При попытке записать туда значение выдается ошибка, мол "попытка присвоить значение недоступной для записи переменной." Можно ли как-то это обойти или придется реквизит делать и в него записывать? |
|||
1
Рэйв
14.05.13
✎
09:30
|
А чего бы не сделать это поле нормальным реквизитом таб части и не париться?
|
|||
2
mikecool
14.05.13
✎
09:30
|
а если сумма уменьшается - скидка автоматом снимается?
|
|||
3
Рэйв
14.05.13
✎
09:31
|
колонка-текст обычно используется для вывода инфы "на лету" по данным строки. Тут явно не тот случай. Вполне можно сделать реквизитом
|
|||
4
Mikeware
14.05.13
✎
09:35
|
(2) и так и будет колебаться вокруг порогового значения...
|
|||
5
Virtmon
14.05.13
✎
09:36
|
(1) чтоб меньше изменений было
|
|||
6
Mikeware
14.05.13
✎
09:37
|
(5) программиста позовите...
|
|||
7
Virtmon
14.05.13
✎
09:37
|
(2)да. Но сумма то считается вся, в сумме учета скидки нет. При удалении строк тоже пересчитывается
|
|||
8
Virtmon
14.05.13
✎
09:37
|
я он и есть)
|
|||
9
Ёпрст
14.05.13
✎
09:37
|
(0) реквизит не нужен, рассчитывай скидку от "базового" (выбранного) типа цен в документе и привет.
|
|||
10
ЧеловекДуши
14.05.13
✎
09:38
|
(8) Ты какого рода программист?
У тебя вопрос на уровне, аникейщика :) |
|||
11
ЧеловекДуши
14.05.13
✎
09:40
|
(0)Лучше вообще к делу подходить, как 1С, она цену всегда оставляет без изменения, а пересчитывает сумму.
При этом на самом деле реквизит "Скидка" присутствует в Шапке документа :) |
|||
12
Virtmon
14.05.13
✎
09:40
|
(9) рассчитывается все просто, как ее записать в это поле
(10) Паскаль в школе проходил 10 лет назад. Год назад программера уволили, мне сказали: "теперь ты программист". В принципе освоить любой язык не сложно, но опыта мало. |
|||
13
Mikeware
14.05.13
✎
09:41
|
(8) ты себе сильно льстишь...
--------- передайте программисту, пусть посмотри механизм расчета скидок, и предназначение колонки "скидка" в ТЧ |
|||
14
Virtmon
14.05.13
✎
09:42
|
(11) Реквизит "Скидка" присутствует в шапке, а в табличной части "СуммаСкидки". Ее надо пересчитывать
|
|||
15
Ёпрст
14.05.13
✎
09:42
|
(14) забудь про этот реквизит как страшный сон
|
|||
16
Mikeware
14.05.13
✎
09:42
|
(12) Тогда готовь три конверта...
Хотя проще начать с листка бумаги формата А4 |
|||
17
Virtmon
14.05.13
✎
09:43
|
Механизм рассчета скидок происходить в глобальном модуле, маленькой функцией, там сложного ничего нет
|
|||
18
Ёпрст
14.05.13
✎
09:43
|
Скидка должна быть для каждой строки своя, если надо - одинаковая для всех.
Хранить её тоже не надо. Она рассчитывается от типа цен в документе и всё. |
|||
19
Virtmon
14.05.13
✎
09:43
|
Вопрос в том, можно ли как-то в поле "СуммаСкидки" записывать данные или реквизит делать?
|
|||
20
Ёпрст
14.05.13
✎
09:45
|
(19) можно.
|
|||
21
Ёпрст
14.05.13
✎
09:45
|
реквизит делать не надо.
|
|||
22
Virtmon
14.05.13
✎
09:46
|
Каким образом? мне пишет что я записываю данные в недоступную для записи переменную
|
|||
23
Ёпрст
14.05.13
✎
09:47
|
в формулу текстового реквизита повесить функцию, которая покажет значение скидки, в предопределенной процедуре сделать ввод этой скидки, всё.
|
|||
24
Virtmon
14.05.13
✎
09:47
|
В поле СуммаСкидки данные попадают из функции:
Функция глСтрокаСкидки(Конт, РаздТриад = "'") Экспорт Возврат глФрм(Окр(Конт.Цена*Конт.Количество,2,1)-Конт.Сумма,,,РаздТриад); КонецФункции // глСтрокаСкидки() А сохраняются при проведении. |
|||
25
Virtmon
14.05.13
✎
09:48
|
Функция возвращает значение для данной строки. А мне надо пересчет провести во всех строках. Для этого приходится прощелкивать все строки.
|
|||
26
kortun
14.05.13
✎
09:48
|
меняешь скидку в шапке на нужную и вызываешь процедуру
Типа Скидка = НужнаяСкидка; глПересчитатьСкидки(Контекст); |
|||
27
kortun
14.05.13
✎
09:49
|
+(26) это если типовая ТиС
|
|||
28
Virtmon
14.05.13
✎
09:50
|
(26) это работает для текущей строки, чтоб таким методом пересчитались все строки приходится перещелкивать все строки. Автоматом как перезаписать "СуммаСкидки" во всех строках
|
|||
29
kortun
14.05.13
✎
09:51
|
(28) глПересчитатьСкидки(Контекст, 0);
|
|||
30
kortun
14.05.13
✎
09:51
|
читай описание процедуры
|
|||
31
kortun
14.05.13
✎
09:52
|
//******************************************************************************
// глПересчитатьСкидки(Конт) // // Параметры: // Конт - Контекст документа // ТекСтрока - 1 - пересчитать только текущую строку, 0 - пересчитать все строки документа |
|||
32
kortun
14.05.13
✎
09:53
|
(28) сумма скидки не перезаписывается, это просто поле для отображения, оно там считается разницей между колонкой сумма и колонками (цена * количество)
|
|||
33
Virtmon
14.05.13
✎
09:54
|
У меня релиз 939, там только это:
// глСтрокаСкидки(Конт, РаздТриад) // // Конт - контекст документа, // РаздТриад - разделитель триад // // Возвращаемое значение: // Строковое представление о скидке по текущей строке спецификации документа // // Вызывается из формул элементов диалога // Формула колонки "Скидка" табличной части документа // // Описание: // Служит для формирования строкового представления о скидке // по текущей строке табличной части документа // |
|||
34
Virtmon
14.05.13
✎
09:54
|
Спс за направление, сейчас посмотрю последний релиз
|
|||
35
Эльниньо
14.05.13
✎
09:55
|
Если Сумма > 3000 Тогда
Документ.Скидка.Вылазь(); КонецЕсли; |
|||
36
kortun
14.05.13
✎
09:55
|
глПересчитатьСкидки <> глСтрокаСкидки ты не туда смотришь, ищи правильную процедуру
|
|||
37
Virtmon
14.05.13
✎
09:58
|
Понял, я тупанул жестко)
|
|||
38
Virtmon
14.05.13
✎
10:33
|
Похоже не тупанул: При изменении скидки пересчитываются все строки, но колонка "Скидка" пересчитывается только у текущей строки.
В "глПересчитатьСкидки" строку "// ТекСтрока - 1 - пересчитать только текущую строку, 0 - пересчитать все строки документа" я не нашел. Как пересчитать все строки |
|||
39
Virtmon
14.05.13
✎
10:45
|
(38) Все строки вместе со скидкой
|
|||
40
Ganiev
14.05.13
✎
12:14
|
(38) Пробегись по строкам циклом и запусти пересчет скидки для каждой строки!
|
|||
41
Virtmon
14.05.13
✎
13:29
|
(40) 39 предыдущих постов как бы намекают что это уже было сделано и результата не дало
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |