v7: Запись значений в текстовое поле таблицы документа #664500


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

В этой группе 1С