|
v7: Помогите с правильной формулой округления копеек | ☑ | ||
---|---|---|---|---|
0
Georg68
10.03.17
✎
05:42
|
Делаю двойной ценник, где одна цена со скидкой 2% и эту цену надо округлить до 50коп в меньшую сторону. А округляется только до рубля.
Цел((Число(Печрубли) + Число(Печкопейки)/100)*0.98) - это рубли ?((((число(Печрубли) + число(печкопейки)/100)*0.98) %1)*100 >= 50, "50", "00") - это копейки Что не так? |
|||
1
PuhUfa
10.03.17
✎
05:47
|
Какие страхи сутра -)
А что у тебя в Печкопейки? |
|||
2
Рэйв
10.03.17
✎
06:17
|
Если я правильно телепатирую,то..
Окр(Число(Печрубли+"."+Печкопейки),1,РежимОкругления.Окр15как10) |
|||
3
Рэйв
10.03.17
✎
06:18
|
конечно если Печрубли и Печкопейки - строковые цифры, как подразумевается в сабже
|
|||
4
Zmich
10.03.17
✎
06:47
|
(3). Неправильно. Например, 6 копеек как отработает твой код?
|
|||
5
Рэйв
10.03.17
✎
07:02
|
(4)тогда попростому по крестьянски:-)
ч=Число(Печрубли+"."+Печкопейки); А=?(ч-Цел(ч)>=0.5,Цел(ч)+0.5,Цел(ч)); Сообщить(""+Ч+"->"+А); |
|||
6
h-sp
10.03.17
✎
07:59
|
(5) это же до рубля
|
|||
7
Ёпрст
10.03.17
✎
08:08
|
(0) Во всех типовых
глОкруглить() там усё есть |
|||
8
Масянька
10.03.17
✎
08:10
|
Функция глОкруглить(Числ, ПорядокОкругления) Экспорт
Перем Рез; Если ПорядокОкругления = Перечисление.ПорядкиОкругления.ОкрТочно Тогда // арифметическое округление до 2-х знаков после запятой Рез = Окр(Числ, 2); Иначе // округление к верхней границе по заданному порядку // преобразуем порядок округления число Порядок = Число(Строка(ПорядокОкругления)); // вычислим количество интервалов, входящих в число КолвоИнтервал = Числ / Порядок; // вычислим целое количество интервалов. КолвоИнтервалЦел= Цел(КолвоИнтервал); Если КолвоИнтервал = КолвоИнтервалЦел Тогда // Числа поделились нацело. Округлять не нужно. Рез = Числ; Иначе Рез = Порядок * (КолвоИнтервалЦел + 1); КонецЕсли; КонецЕсли; Возврат Рез; КонецФункции // глОкруглить() (7) Опередил, блин... :) |
|||
9
1dvd
10.03.17
✎
08:16
|
делим число на 0,5
округляем до целых умножаем на 0,5 |
|||
10
h-sp
10.03.17
✎
08:26
|
(8) нет тут до 50 копеек
|
|||
11
Ёпрст
10.03.17
✎
08:30
|
(10) есть
|
|||
12
пипец
10.03.17
✎
08:31
|
не правильные пчелы ... )))
|
|||
13
Ёпрст
10.03.17
✎
08:32
|
//******************************************************************************
// глОкруглить(Числ, ПорядокОкругления) // // Параметры: // Числ - исходное число // ПорядокОкругления - элемент перечисления Порядки окгугления: // "шаг" округления (0.01 (арифметическое), 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100) // // Возвращаемое значение: // Округленное по заданному порядку значение // // Описание: // Округляет число вверх по заданному порядку. Т.е число 123.37 при порядке // округление 0.5 превратиться в 123.50, а число 0.1 при порядке округления // 5 станет равным 5. // Если значение перечисления ОкрТочно, то округляет арифметически до 0.01 |
|||
14
Ёпрст
10.03.17
✎
08:33
|
Просто, Масяне вломы тебе всё копипастить, в надежде на то, что ты сам посмотришь хотя-бы описалово функции, и откроешь, наконец, пофигуратор
|
|||
15
Масянька
10.03.17
✎
08:36
|
(14) - А вы что и есть за меня будете?
- Ага. (С) |
|||
16
Georg68
10.03.17
✎
08:39
|
Господа, спасибо огромное за отзывчивость, но я, признаюсь, практически простой юзер, мне эту формулу то подсказали.
Можно попроще? Что конкретно вставить в Свойства? Или всё же в модуле надо добавить? |
|||
17
НЕА123
10.03.17
✎
08:39
|
Цена2=Цена*0.98;
Цена2Окр = Окр(Цена2*2,0,Окр15как10)/2 как-то так... |
|||
18
Ёпрст
10.03.17
✎
08:41
|
(17) це клюшки, там нету Окр15как10
|
|||
19
Georg68
10.03.17
✎
08:43
|
Чет не получается
|
|||
20
Масянька
10.03.17
✎
08:43
|
(16) До чего дошел прогресс... (С)
Если простой юзер - позови спеца. Если все-таки хочешь сам - разбирайся. |
|||
21
НЕА123
10.03.17
✎
08:43
|
РежимОкругления.Окр15как10
|
|||
22
Georg68
10.03.17
✎
08:43
|
Переменная не определена (Цена2Окр)
Цена2<<?>>=Цена*0.98; |
|||
23
Georg68
10.03.17
✎
08:44
|
Нет у нас спецов в нашей деревне, так сам и маюсь
|
|||
24
Масянька
10.03.17
✎
08:47
|
(23) Тьфу! Деревня! (С)
Покажи код, где считаешь вторую цену. |
|||
25
Georg68
10.03.17
✎
08:47
|
Цел((Число(Печрубли) + Число(Печкопейки)/100)*0.98) - это рубли
Вот эта формула стоит в Свойствах рублей. Она в принципе работает. А копейки расположены в другой ячейке и у них другая формула, она округляет в меньшую сторону до рубля, хоть с 89 копеек, хоть с 5. |
|||
26
Масянька
10.03.17
✎
08:49
|
(25) А на фига отдельно?
|
|||
27
Georg68
10.03.17
✎
08:50
|
ну копейки меньше по размеру, стоят повыше рубля в ценнике
жалко, что скрины сюда не вставить |
|||
28
Georg68
10.03.17
✎
08:51
|
||||
29
Масянька
10.03.17
✎
08:51
|
(27) Скрины: клади/ложи сюда - https://pastenow.ru/. А потом сюда ссылку.
|
|||
30
1dvd
10.03.17
✎
08:51
|
(27) сначала нужно вычислить цену как число с копейками, а потом уже отделять рубли и копейки
|
|||
31
Georg68
10.03.17
✎
08:51
|
Открываются у вас скины?
|
|||
32
1dvd
10.03.17
✎
08:52
|
(28) лопни мои глаза...
|
|||
33
Georg68
10.03.17
✎
08:52
|
сам в шоке
|
|||
34
НЕА123
10.03.17
✎
08:52
|
ай, 7....
Окр((Число(Печрубли) + Число(Печкопейки)/100)*0.98*2,0,1)/2 - Цел((Число(Печрубли) + Число(Печкопейки)/100)*0.98,0,Окр15как10)/2) |
|||
35
Georg68
10.03.17
✎
08:53
|
Эту куда? В рубли или копейки?
|
|||
36
1dvd
10.03.17
✎
08:53
|
(34) иди уже отсюда, опять не правильно :)
|
|||
37
Масянька
10.03.17
✎
08:53
|
(32) Это ты мягко сказал...
(33) Сделай две цены (руб. коп.). По человечески. |
|||
38
НЕА123
10.03.17
✎
08:53
|
*Окр15как10 -> 1
|
|||
39
Масянька
10.03.17
✎
08:54
|
(35) А покажи просто ценник (без свойств).
|
|||
40
НЕА123
10.03.17
✎
08:55
|
(36)
ладно. попыток - не убыток. |
|||
41
Georg68
10.03.17
✎
08:57
|
||||
42
Georg68
10.03.17
✎
08:57
|
||||
43
Масянька
10.03.17
✎
09:08
|
(42) Покажи код, где делятся рубли и копейки.
|
|||
44
Fedor-1971
10.03.17
✎
09:11
|
(43) ТС засунул код вычисления в ячейки ТабличногоДокумента
(41)(42) вот блин, говорят же человеку "сделай по уму", нет будем доставать гланды автогеном через задний проход. Порядок действий: 1. в печатном макете делаешь нормальные выражения ЦенРуб, ЦенКоп (если уж нужно то и Коп) - именно выражениями, а не вычислениями непойми чего и как 2. исправляешь процедуру Печать (или как она у тебя называется) примерно так: ЦенРуб=глОкруглить(Цена, 1); ЦенКоп=глОкруглить(Цена-5%, 0.5); Коп=ЦенКоп-Цел(ЦенКоп); Надеюсь Цена-5% сам осилишь? |
|||
45
Рэйв
10.03.17
✎
09:12
|
(6)я так понял ему надо округление назад с шагом 50 копеек. или я тогда не понимаю какая у него схема..
|
|||
46
Масянька
10.03.17
✎
09:12
|
(44) Ну, я надеюсь сама цена не в макете вычисляется?
|
|||
47
Fedor-1971
10.03.17
✎
09:16
|
(44) и да, перед тем как что-то делать устрой себе ликбез, как минимум посмотри на типовые "как там сделано", как максимум книжки почитай
(45) По ходу, ему нужно просто отобразить две цены "Продажи" (округление до 1 рубля) и "Со скидкой" (Цена - 5% с округлением до 0,5 рубля) (46) Вроде как прямо в макете, там начало Число(????) |
|||
48
Fedor-1971
10.03.17
✎
09:17
|
(47) ошибся (44) -> 44+
|
|||
49
Georg68
10.03.17
✎
09:28
|
Даже боюсь уже вас ) Понимаю, бесят такие как я.
Это ЦенРуб=глОкруглить(Цена, 1); ЦенКоп=глОкруглить(Цена-5%, 0.5); Коп=ЦенКоп-Цел(ЦенКоп); добавляю в Модуль? А в Свойствах просто ставлю ЦенРуб ? |
|||
50
Georg68
10.03.17
✎
09:29
|
Так не работает
|
|||
51
Масянька
10.03.17
✎
09:39
|
(50) Ты покажешь, где разбиваешь цену на рубли и копейки?!
Откуда берется вот это "Печрубли" и "Печкопейки"? |
|||
52
Georg68
10.03.17
✎
09:41
|
Перем ПечФирма;
Перем ПечРубли, ПечКопейки; //****************************************************************************** // ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) // // Параметры: // Таб - таблица, в которую выполняется вывод ценника // ПечНаименование - наименование ТМЦ // ПечЕдиница - единица измерения ТМЦ // ПечРозн - цена ТМЦ // Столбик - номер столбика. // Ряд - номер ряда // |
|||
53
Georg68
10.03.17
✎
09:41
|
Это в начале модуля
|
|||
54
Georg68
10.03.17
✎
09:42
|
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена); // печатаем по розничным ценам - поэтому глРубли ПечРубли = Цел(ВремЦена); ПечКопейки = Прав("00" + ((ВремЦена*100) % 100), 2); |
|||
55
Масянька
10.03.17
✎
09:42
|
(52) Ё - очень терпеливый человек, а я нет!
Где ПечРубли=...? |
|||
56
Fedor-1971
10.03.17
✎
09:43
|
(49) это просто 5, не, даже 5+
ты прочитал (44)? я написал куда добавить просто в модуль или в процедуру Печать? На пальцах: 1. правая кнопка мыши на кнопке формы которая печатает ценники - свойства - вкладка "Дополнительно" - внимательно читаем поле "Формула" 2. идём в модуль и находим процедуру из поля "Формула" 3. Медитируем на тему "Куда вставить код из (44)" 4. По результатам - профит или "Вай-Вай ВСЁ сломал" |
|||
57
Масянька
10.03.17
✎
09:46
|
(54) Ну, наконец-то...
Вот это "ПечКопейки = Прав("00" + ((ВремЦена*100) % 100), 2)" меняй на "ПечКопейки = Прав(глОкруглить(ВремЦена, 0.5 ), 2)". |
|||
58
Georg68
10.03.17
✎
09:47
|
Таак? Поменял.
А в Свойствах всё таки что ставим? |
|||
59
Масянька
10.03.17
✎
09:48
|
(58) ПечКопейки.
|
|||
60
Georg68
10.03.17
✎
09:50
|
ПечКопейки = Прав(глОкруглить(ВремЦена, 0.5 ), 2)<<?>>
|
|||
61
Georg68
10.03.17
✎
09:53
|
Можно весь модуль сюда выложить?
|
|||
62
Fedor-1971
10.03.17
✎
09:54
|
(61) зачем?
ПечКопейки = Прав("00" + ((ВремЦена*100) % 100), 2); Чем должна заканчиваться строка? |
|||
63
Georg68
10.03.17
✎
09:56
|
Мы же заменили эту строку
Вот это "ПечКопейки = Прав("00" + ((ВремЦена*100) % 100), 2)" меняй на "ПечКопейки = Прав(глОкруглить(ВремЦена, 0.5 ), 2)". |
|||
64
Масянька
10.03.17
✎
09:56
|
(60) точку с запятой ";" в конце поставь.
|
|||
65
Масянька
10.03.17
✎
09:57
|
(62) Надо его побить... Или путь Ё его укусит...
|
|||
66
Fedor-1971
10.03.17
✎
09:57
|
(63) заменили Часть строки, а не ВСЮ.
Там ещё есть ";" в конце, так мелочь, но интерпретатору она очень нужна |
|||
67
Georg68
10.03.17
✎
09:58
|
Ура...
тупой ученик попался Но копейки сейчас везде.. копейки 97коп, 68 коп |
|||
68
Масянька
10.03.17
✎
09:59
|
(67) Не... Убить - мало... :)
В свойствах рубли оставь, а вместо той фигни про копейки напиши просто "Число(ПечКопейки)". |
|||
69
Georg68
10.03.17
✎
10:04
|
||||
70
Масянька
10.03.17
✎
10:06
|
(69) У тебя там было изначально -
?((((число(Печрубли) + число(печкопейки)/100)*0.98) %1)*100 >= 50, "50", "00") Теперь должно быть - (число(Печрубли) + число(печкопейки) |
|||
71
Fedor-1971
10.03.17
✎
10:08
|
(67) Ученик? Дружище, ученик слушает и пытается вникнуть, а не как школяр играет в "Угадал - Не угадал"
(70) просто ПечКопейки, мы их уже получили в виде строки |
|||
72
Масянька
10.03.17
✎
10:10
|
(71) Дык, надо-то чего?
|
|||
73
Georg68
10.03.17
✎
10:12
|
Я и пытаюсь вникнуть, но очень сложно когда учитель путается в показаниях все время.))
Последовательности в действиях не вижу. В модуле я исправил Вот это "ПечКопейки = Прав("00" + ((ВремЦена*100) % 100), 2)" меняй на "ПечКопейки = Прав(глОкруглить(ВремЦена, 0.5 ), 2)". Потом, после того как меня хотели побить, укусить и убить наконец... сказали что в Свойствах ставим "просто "Число(ПечКопейки)" Потом оказалось, что ставить надо "Теперь должно быть - (число(Печрубли) + число(печкопейки)" Ну как тут понять то))) |
|||
74
Fedor-1971
10.03.17
✎
10:14
|
(73) Определись: у тебя в макете дважды печатаются копейки, там параметры разные? Название ПечКопейки - там где цена со скидкой? а как называется нечто там где просто цена? (в твоей ситуации, должна быть просто строка "00")
|
|||
75
Georg68
10.03.17
✎
10:15
|
Первую цену я вообще не трогаю, ту, которая без скидки.
|
|||
76
Georg68
10.03.17
✎
10:15
|
В ней стоит ПечКопейки
|
|||
77
Масянька
10.03.17
✎
10:16
|
(73) Афигеть... Какой строптивый ученик попался...
|
|||
78
Georg68
10.03.17
✎
10:16
|
Так старый же, старше Федора на 3 года ))
|
|||
79
Масянька
10.03.17
✎
10:16
|
(76) Ты сейчас корежишь то, что на скрине в (28)?
|
|||
80
Georg68
10.03.17
✎
10:17
|
так всё уж переправил на 10 раз
обратно сделать? |
|||
81
Fedor-1971
10.03.17
✎
10:18
|
(80) не дёргайся излишне
(75) хорошо, пойдём другим путём: Смотрим на макет: ечРуб - как называется и что обозначает Копе - как я понимаю копейки, как называется и что обозначает Числ - как называется и что обозначает ечК - как называется и что обозначает |
|||
82
Fedor-1971
10.03.17
✎
10:19
|
81+ макет который в (69), если там формулы пиши их
|
|||
83
Масянька
10.03.17
✎
10:20
|
(80) Бэкап надо делать.
|
|||
84
Georg68
10.03.17
✎
10:23
|
Итак.
Первая цена, которая без скидки. Свойства рубли - ПечРубли Свойства копейки - ПечКопейки Копейки сейчас не округляются |
|||
85
Georg68
10.03.17
✎
10:25
|
Может у меня нет глОкруглить , конфигурация очень древняя и переписанная вся
|
|||
86
Fedor-1971
10.03.17
✎
10:25
|
(84) не так по каждой строке, что-бы было понимание, просто дополни мои строки данными (тут формула из макета): назначение
|
|||
87
Fedor-1971
10.03.17
✎
10:26
|
(85) ты бы получил ошибку, типа "такой функции нету"
|
|||
88
Fedor-1971
10.03.17
✎
10:27
|
86+ только пиши текущее состояние из макета
|
|||
89
Georg68
10.03.17
✎
10:27
|
ну да
|
|||
90
Fedor-1971
10.03.17
✎
10:28
|
(89) что ну да? дополни строки из (81)
|
|||
91
se85
10.03.17
✎
10:28
|
Хех это уже анекдот какой то получается, может кто нибудь подключится к нему удаленно да сделает?!
|
|||
92
Fedor-1971
10.03.17
✎
10:29
|
(91) а смысл? Он и дальше будет непонимать, что делает. Раз записался в ученики будет насильно учиться
|
|||
93
Georg68
10.03.17
✎
10:32
|
Нет, ну делов то в принципе на копейку. Только упорядочить надо этот мозговой штурм.
1. Что правим в модуле? 2. Что пишем в Свойствах. |
|||
94
se85
10.03.17
✎
10:32
|
(92) Что б чему то обучить, обучаемый должен хотя бы что то понимать!!! Наш же клиент не понимает что и как работает ибо ни когда с этим не сталкивался :(
|
|||
95
Georg68
10.03.17
✎
10:33
|
Согласен, в формулах я не понимаю, я ценники сам делаю, размеры и простые выражения.
Но это сложная формула. |
|||
96
Georg68
10.03.17
✎
10:34
|
Потому и прошу помощи. Форум же для этого и придумали или я не прав? Погнобить тупых юзеров придумали форум?)) Ну так с этим нормально.)
|
|||
97
Fedor-1971
10.03.17
✎
10:35
|
(93) блин, вежливо, матом тебя прошу, дополни строки из (81)
потом до модуля доберёмся (94) вот и разберётся и станет аксакалом и будет других учить |
|||
98
Georg68
10.03.17
✎
10:38
|
Первая цена, которая без скидки.
Свойства рубли - ПечРубли Свойства копейки - ПечКопейки Вторая Рубли - (число(Печрубли) + число(печкопейки)) Копейки свою вставил обратно ?((((число(Печрубли) + число(печкопейки)/100)*0.98) %1)*100 >= 50, "50", "00") |
|||
99
Georg68
10.03.17
✎
10:40
|
В ценнике сейчас такая фигня
https://dl.dropboxusercontent.com/u/80917909/Безымянный.jpg Поменялись местами цены, так как переменную в первой цене мы не трогали |
|||
100
Fedor-1971
10.03.17
✎
10:40
|
(98) ну просил же, оставь начало потом - потом в () формула из макета, потом словами назначение. что бы получилось одной строкой привязка ячейки макета и её смысла
|
|||
101
Georg68
10.03.17
✎
10:41
|
))) ваще понятно
а написать просто выражение не проще |
|||
102
Fedor-1971
10.03.17
✎
10:43
|
(101) нет, ты потом запутаешься при изменении и сколь нибудь сложная логика заполнения ячейки окончится вешалкой при реализации
|
|||
103
Fedor-1971
10.03.17
✎
10:43
|
102+ давай как-то ускорься, мне тоже работать надо
|
|||
104
Georg68
10.03.17
✎
10:47
|
Так затык полный уже
|
|||
105
Georg68
10.03.17
✎
10:47
|
если до того была какая-то смутная картинка, теперь нет совсем
|
|||
106
Fedor-1971
10.03.17
✎
10:48
|
(104) Ещё нет, так движемся самым простым путём:
Устанавлиай в макете: ечРуб - ЦенаПродажи Копе - КопейкиПродажи Числ - СкидкаЦена ечК - СкидкаКопейки Поясни: ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); - это цена со скидкой или продажи |
|||
107
Georg68
10.03.17
✎
10:49
|
Это цена продажи была
|
|||
108
Это_mike
10.03.17
✎
10:50
|
(93) это не "мозговой штурм". это какой-то "безмозглый"
|
|||
109
se85
10.03.17
✎
10:51
|
(107) Не скромный вопрос, а ты все эти операции делаешь на тестовой базе или рабочей?!
|
|||
110
Georg68
10.03.17
✎
10:52
|
это какой-то "безмозглый"
Не спорю. В каждом деле должны быть профессионалы. Вы в моем деле тоже наверняка не шарите, а я ас )) Я и прошу помочь с формулой, а вы от меня много ожидаете просто )) |
|||
111
Georg68
10.03.17
✎
10:52
|
Макет ценника то можно на любой править
|
|||
112
Fedor-1971
10.03.17
✎
11:09
|
(107) замечтательно:
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); ЦенаПродажи=глОкруглить(ВремЦена , 1); КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2); // на случай если вздумаешь оставить копейки в Цене продажи СкидкаЦена=глОкруглить(Окр(ВремЦена-(ВремЦена*0.05)),2,1), 0.5); //отняли 5% и округлили до 50 коп. СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки Теперь соотноси в голове: в макете ты указал выражение в ячейке (не длинную формулу, а именно переменную, которую можешь заполнять любым способом, хоть двумя экранами кода). В процедуре заполнения макета просто вычисляешь нужное тебе значение (110) Нескромный вопрос: ас в чём? (торговля? металлообработка (зубофрезерные станки? Электроэррозионные станки? компрессорное оборудование?), экспедирование?, документооборот? - конфигурации делал, компрессоры - до уровня конструктора) Это типа я похвастался |
|||
113
Fedor-1971
10.03.17
✎
11:14
|
112+ Хотя немного не так, вот так
|
|||
114
Georg68
10.03.17
✎
11:22
|
Это в Модуль ставим? В начале можно?
А в Свойствах всё таки что оставляем? |
|||
115
Fedor-1971
10.03.17
✎
11:34
|
(114) код ставим после
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); - если процедура глобальная, то ничего не заменяем, просто добавляем код. В свойствах ячейки макета как в (106) или по смыслу, где какая цифра должна быть - название заполненной переменной |
|||
116
Georg68
10.03.17
✎
12:04
|
Не могу понять я Вас , Федор. Переоцениваете мои способности всё же.
|
|||
117
Fedor-1971
10.03.17
✎
12:12
|
(116) Которая часть непонятна?
По макету: открываем свойства ячейки и вместо "бла-бла" пишем наименование переменной, например, открываем свойства ячейки, где должна быть цена продажи, всё чистим и пишем "ЦенаПродажи" и т.д. имена переменных известны из (113) По коду: ищем строку ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); и после неё вставляем (113) |
|||
118
Georg68
10.03.17
✎
12:17
|
ЦенаПродажи<<?>>
Переменная не определена (ЦенаПродажи) |
|||
119
Fedor-1971
10.03.17
✎
12:21
|
(118) информативно, это откуда?
|
|||
120
Georg68
10.03.17
✎
12:21
|
Это после изменений выдает при попытке вывести ценник
|
|||
121
Georg68
10.03.17
✎
12:22
|
В Свойствах пишу СкидкаКопейки ?
|
|||
122
Georg68
10.03.17
✎
12:24
|
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда Продолжить; КонецЕсли; КонецЕсли; ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); ЦенаПродажи=глОкруглить(ВремЦена , 1); КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2); // на случай если вздумаешь оставить копейки в Цене продажи ЦенаПродажи=Цел(ЦенаПродажи); СкидкаЦена=глОкруглить(Окр(ВремЦена-(ВремЦена*0.02),2,1), 0.5); //отняли 5% и округлили до 50 коп. СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки СкидкаЦена=Цел(СкидкаЦена); ПечРозн = глФРМ(ВремЦена); // печатаем по розничным ценам - поэтому глРубли |
|||
123
Fedor-1971
10.03.17
✎
12:27
|
(120) понятно, глФРМ(ВремЦена) - вот это выводит ценник или делает нечто другое?
где реализован вывод ценника? Вылаживай всю процедуру печати из модуля (121) Да для ячейки, где должны быть скидочные копейки |
|||
124
Georg68
10.03.17
✎
12:28
|
Перем ПечФирма;
Перем ПечРубли, ПечКопейки; //****************************************************************************** // ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) // // Параметры: // Таб - таблица, в которую выполняется вывод ценника // ПечНаименование - наименование ТМЦ // ПечЕдиница - единица измерения ТМЦ // ПечРозн - цена ТМЦ // Столбик - номер столбика. // Ряд - номер ряда // // Возвращаемое значение: // Нет. // // Описание: // Добавляет ценник в таблицу. // Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд,Производитель, ПечКод="") Экспорт Столбик = Столбик + 1; Колонка = ((Столбик - 1) % 3) + 1; Ряд = Цел(((Столбик - 1) % 5)/1) + 1; Если (Колонка = 1) И (Ряд = 1) И (Столбик > 1) Тогда Таб.НоваяСтраница(); КонецЕсли; Если Колонка = 1 Тогда Таб.ВывестиСекцию("Товар|Ценник"); Иначе Таб.ПрисоединитьСекцию("Товар|Ценник"); КонецЕсли; КонецПроцедуры // ДобавитьЦенник() //****************************************************************************** // Печать(Докум, Устройство=0, КолвоКопий=1) // // Параметры: // Докум - контекст выводимого документа (ПереоценкаРозница, ПоступлениеТМЦРозница), // Устройство - если 0, то вывод на экран, иначе - на принтер, // необязателен, по умолчанию - на экран, // КолвоКопий - количество копий, по умолчанию - 1. // // Возвращаемое значение: // Нет // // Описание: // Формирует таблицу с ценниками. // Процедура Печать(Докум, Устройство=0, КолвоКопий=1) ДокумВид = Докум.Вид(); Если ДокумВид = "ПереоценкаРозница" Тогда ИдРознЦена = "ЦенаНовая"; ИначеЕсли ДокумВид = "ПоступлениеТМЦРозница" Тогда ИдРознЦена = "РозничнаяЦена"; ИначеЕсли ДокумВид = "РеализацияРозница" Тогда ИдРознЦена = "Цена"; ИначеЕсли ДокумВид = "ПеремещениеТМЦ" Тогда Если Докум.СкладПолучатель.РозничныйСклад = 1 Тогда ИдРознЦена = "Цена"; Иначе Предупреждение("Нельзя печатать ценники при перемещении |ТМЦ на оптовый склад!", 60); Возврат; КонецЕсли; Иначе Возврат; КонецЕсли; // Создание Таблицы для выходного отчета Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); ПечФирма = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование); Столбик = 0; Ряд = 0; Докум.ВыбратьСтроки(); Пока Докум.ПолучитьСтроку() = 1 Цикл Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда Продолжить; КонецЕсли; КонецЕсли; ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); ЦенаПродажи=глОкруглить(ВремЦена , 1); КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2); // на случай если вздумаешь оставить копейки в Цене продажи ЦенаПродажи=Цел(ЦенаПродажи); СкидкаЦена=глОкруглить(Окр(ВремЦена-(ВремЦена*0.02),2,1), 0.5); //отняли 5% и округлили до 50 коп. СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки СкидкаЦена=Цел(СкидкаЦена); ПечРозн = глФРМ(ВремЦена); // печатаем по розничным ценам - поэтому глРубли // ((( dk 16/04/2013 ПечРубли = Цел(ВремЦена); ПечКопейки = Прав("00" + ((ВремЦена*100) % 100), 2); //сообщить("--------------------------------------------------------------------------------"); // Сообщить(ВремЦена); //сообщить(ПечКопейки); // dk ))) ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "")+"/"+Докум.Номенклатура.Код+"/"; ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд,СокрЛП(Докум.Номенклатура.СтранаПроисхождения)); глОживить(1); КонецЦикла; Если Устройство = 0 Тогда Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников"); Таб.ТолькоПросмотр(1); Таб.Показать("Товарные ценники",""); Иначе Таб.ПараметрыСтраницы(,,,,,,,,,1,,); Таб.КоличествоЭкземпляров(КолвоКопий); Таб.Напечатать(0); КонецЕсли; КонецПроцедуры // Печать() //****************************************************************************** // ПоКнопкеПечать() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // Кнопка "Печать" // // Описание: // Процедура ПоКнопкеПечать() Если Док.Выбран() = 0 Тогда Предупреждение("Не выбран документ!", 60); Возврат; КонецЕсли; Печать(Док); КонецПроцедуры // ПоКнопкеПечать() //****************************************************************************** // Предопределенная процедура // Процедура ПриОткрытии() Если ПустоеЗначение(Форма.Параметр) = 0 Тогда Докум = Форма.Параметр.Получить("Контекст"); Устройство = Форма.Параметр.Получить("Устройство"); КолвоКопий = Форма.Параметр.Получить("КоличествоКопий"); Печать(Докум, Устройство, КолвоКопий); Статусвозврата(0); Возврат; КонецЕсли; КонецПроцедуры // ПриОткрытии() |
|||
125
Злопчинский
10.03.17
✎
12:28
|
помедленнее, я записываю!
|
|||
126
Fedor-1971
10.03.17
✎
12:40
|
(124)измени:
глФРМ(ВремЦена) - если это вычисление цены со скидкой, то СкидкаЦена=глОкруглить(глФРМ(ВремЦена),2,1), 0.5); Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд,Производитель, ПечКод="", ЦенаПродажи="", КопейкиПродажи="", СкидкаЦена="", СкидкаКопейки="") Экспорт ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд,СокрЛП(Докум.Номенклатура.СтранаПроисхождения), ЦенаПродажи, КопейкиПродажи, СкидкаЦена, СкидкаКопейки); и будет тебе счасце |
|||
127
Fedor-1971
10.03.17
✎
12:44
|
(125) стенограмма заседания совета профилактики безграмотности?
ТС реально далёк от программирования, круто вляпался пытаясь что-то исправить |
|||
128
Fedor-1971
10.03.17
✎
12:47
|
126+ вот так: СкидкаЦена=глОкруглить(глФРМ(ВремЦена), 0.5); Остались лишние параметры. Пока можешь не менять, отладь то что сейчас есть
|
|||
129
Georg68
10.03.17
✎
12:56
|
Нет счастья
{G:\1CBASES\DB\EXTFORMS\PRNFORMS\___ЦЕНА_6ШТ_2_СМЕСИ.ERT(127)}: Переменная не определена (Таб) Таб<<?>>.Напечатать(0); {G:\1CBASES\DB\EXTFORMS\PRNFORMS\___ЦЕНА_6ШТ_2_СМЕСИ.ERT(128)}: Переменная не определена (Таб) КонецЕсли;<<?>> {G:\1CBASES\DB\EXTFORMS\PRNFORMS\___ЦЕНА_6ШТ_2_СМЕСИ.ERT(129)}: Обнаружено логическое завершение исходного текста модуля |
|||
130
Fedor-1971
10.03.17
✎
12:59
|
(129) показывай код, что у тебя получилось
|
|||
131
Georg68
10.03.17
✎
12:59
|
А вот так
СкидкаЦена=глОкруглить(глФРМ(ВремЦена), 0.5); вот так КолвоИнтервал = Числ / Порядок; {Глобальный модуль(243)}: Операция деления не определена для строковых величин |
|||
132
Fedor-1971
10.03.17
✎
12:59
|
130+ опять где-то не поставил ";"
|
|||
133
Georg68
10.03.17
✎
13:00
|
Перем ПечФирма;
Перем ПечРубли, ПечКопейки; //****************************************************************************** // ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) // // Параметры: // Таб - таблица, в которую выполняется вывод ценника // ПечНаименование - наименование ТМЦ // ПечЕдиница - единица измерения ТМЦ // ПечРозн - цена ТМЦ // Столбик - номер столбика. // Ряд - номер ряда // // Возвращаемое значение: // Нет. // // Описание: // Добавляет ценник в таблицу. // Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд,Производитель, ПечКод="", ЦенаПродажи="", КопейкиПродажи="", СкидкаЦена="", СкидкаКопейки="") Экспорт Столбик = Столбик + 1; Колонка = ((Столбик - 1) % 3) + 1; Ряд = Цел(((Столбик - 1) % 5)/1) + 1; Если (Колонка = 1) И (Ряд = 1) И (Столбик > 1) Тогда Таб.НоваяСтраница(); КонецЕсли; Если Колонка = 1 Тогда Таб.ВывестиСекцию("Товар|Ценник"); Иначе Таб.ПрисоединитьСекцию("Товар|Ценник"); КонецЕсли; КонецПроцедуры // ДобавитьЦенник() //****************************************************************************** // Печать(Докум, Устройство=0, КолвоКопий=1) // // Параметры: // Докум - контекст выводимого документа (ПереоценкаРозница, ПоступлениеТМЦРозница), // Устройство - если 0, то вывод на экран, иначе - на принтер, // необязателен, по умолчанию - на экран, // КолвоКопий - количество копий, по умолчанию - 1. // // Возвращаемое значение: // Нет // // Описание: // Формирует таблицу с ценниками. // Процедура Печать(Докум, Устройство=0, КолвоКопий=1) ДокумВид = Докум.Вид(); Если ДокумВид = "ПереоценкаРозница" Тогда ИдРознЦена = "ЦенаНовая"; ИначеЕсли ДокумВид = "ПоступлениеТМЦРозница" Тогда ИдРознЦена = "РозничнаяЦена"; ИначеЕсли ДокумВид = "РеализацияРозница" Тогда ИдРознЦена = "Цена"; ИначеЕсли ДокумВид = "ПеремещениеТМЦ" Тогда Если Докум.СкладПолучатель.РозничныйСклад = 1 Тогда ИдРознЦена = "Цена"; Иначе Предупреждение("Нельзя печатать ценники при перемещении |ТМЦ на оптовый склад!", 60); Возврат; КонецЕсли; Иначе Возврат; КонецЕсли; // Создание Таблицы для выходного отчета Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); ПечФирма = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование); Столбик = 0; Ряд = 0; Докум.ВыбратьСтроки(); Пока Докум.ПолучитьСтроку() = 1 Цикл Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда Продолжить; КонецЕсли; КонецЕсли; ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); ЦенаПродажи=глОкруглить(ВремЦена , 1); КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2); // на случай если вздумаешь оставить копейки в Цене продажи ЦенаПродажи=Цел(ЦенаПродажи); СкидкаЦена=глОкруглить(глФРМ(ВремЦена), 0.2); //отняли 5% и округлили до 50 коп. СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки СкидкаЦена=Цел(СкидкаЦена); ПечРозн = глФРМ(ВремЦена); // печатаем по розничным ценам - поэтому глРубли // ((( dk 16/04/2013 ПечРубли = Цел(ВремЦена); ПечКопейки = Прав("00" + ((ВремЦена*100) % 100), 2); //сообщить("--------------------------------------------------------------------------------"); // Сообщить(ВремЦена); //сообщить(ПечКопейки); // dk ))) ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "")+"/"+Докум.Номенклатура.Код+"/"; ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд,СокрЛП(Докум.Номенклатура.СтранаПроисхождения), ЦенаПродажи, КопейкиПродажи, СкидкаЦена, СкидкаКопейки); глОживить(1); КонецЦикла; Если Устройство = 0 Тогда Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников"); Таб.ТолькоПросмотр(1); Таб.Показать("Товарные ценники",""); Иначе Таб.ПараметрыСтраницы(,,,,,,,,,1,,); Таб.КоличествоЭкземпляров(КолвоКопий); Таб.Напечатать(0); КонецЕсли; КонецПроцедуры // Печать() //****************************************************************************** // ПоКнопкеПечать() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // Кнопка "Печать" // // Описание: // Процедура ПоКнопкеПечать() Если Док.Выбран() = 0 Тогда Предупреждение("Не выбран документ!", 60); Возврат; КонецЕсли; Печать(Док); КонецПроцедуры // ПоКнопкеПечать() //****************************************************************************** // Предопределенная процедура // Процедура ПриОткрытии() Если ПустоеЗначение(Форма.Параметр) = 0 Тогда Докум = Форма.Параметр.Получить("Контекст"); Устройство = Форма.Параметр.Получить("Устройство"); КолвоКопий = Форма.Параметр.Получить("КоличествоКопий"); Печать(Докум, Устройство, КолвоКопий); Статусвозврата(0); Возврат; КонецЕсли; КонецПроцедуры // ПриОткрытии() |
|||
134
Fedor-1971
10.03.17
✎
14:40
|
(131) тогда засада,
делай так СкидкаЦена=глОкруглить(Число(глФРМ(ВремЦена)), 0.5); или верни назад то что было (133) по коду ошибки не видно, кликни в конфигураторе по тексту ошибки и увидишь где она |
|||
135
Georg68
10.03.17
✎
14:44
|
Вооот. Пальцев то было у всех, а уж если профи умывают руки, нефиг на простого юзера наезжать ))
|
|||
136
Масянька
10.03.17
✎
14:46
|
Я-то думала, что уже всё работает...
|
|||
137
Fedor-1971
10.03.17
✎
14:47
|
(135) о как простой юзер, ты откуда взял текст ошибки?
|
|||
138
Fedor-1971
10.03.17
✎
14:48
|
137+ или предлагаешь угадать что в твоём коде строка 127?
|
|||
139
Georg68
10.03.17
✎
14:50
|
Чего уж я ошибку скопировать не могу.
|
|||
140
Georg68
10.03.17
✎
14:51
|
Ничего не работает, возвращаюсь первоначальному варианту, там хоть до рубля округлял.
|
|||
141
Fedor-1971
10.03.17
✎
14:52
|
(140) ну это как знаешь. Так и не ответил где вылезла ошибка в конфигураторе или в пользовательском режиме
|
|||
142
Georg68
10.03.17
✎
14:53
|
В пользовательском, когда на печать вывожу
|
|||
143
Масянька
10.03.17
✎
14:55
|
(135) Профи (это не про меня) - не умывают руки. Просто сложно "на пальцах" объяснять.
Если есть TeamViewer - давай, пока есть время. |
|||
144
Fedor-1971
10.03.17
✎
14:55
|
(142) и не даёт возможности щёлкнуть по ошибке? Чай обманываешь, ученик.
|
|||
145
Georg68
10.03.17
✎
14:57
|
Есть ТИМ
|
|||
146
Georg68
10.03.17
✎
14:57
|
Готовы?
|
|||
147
Fedor-1971
10.03.17
✎
14:59
|
(146) давай ID и Пароль
|
|||
148
Fedor-1971
10.03.17
✎
15:00
|
(147) есть 10 минут
|
|||
149
Georg68
10.03.17
✎
15:03
|
477 396 503
|
|||
150
Georg68
10.03.17
✎
15:03
|
a4k3m4
|
|||
151
Georg68
10.03.17
✎
15:04
|
2 монитора
|
|||
152
Fedor-1971
10.03.17
✎
15:04
|
(151) ща обновлюсь
|
|||
153
Fedor-1971
10.03.17
✎
15:06
|
869 320 753 добавь в белый список
|
|||
154
Georg68
10.03.17
✎
15:07
|
и так пройдет
|
|||
155
Fedor-1971
10.03.17
✎
15:08
|
(154) "Вы находитесь в чёрном списке этого партнёра или не входите в белый список"
|
|||
156
Fedor-1971
10.03.17
✎
15:10
|
уже вернул?
|
|||
157
Georg68
10.03.17
✎
15:10
|
угу
|
|||
158
Fedor-1971
10.03.17
✎
15:11
|
ладно, чего не хватает в таком раскладе?
|
|||
159
Georg68
10.03.17
✎
15:12
|
округление в минус до рубля
хот елось бы до 50коп |
|||
160
Масянька
10.03.17
✎
15:15
|
(147) Вот чего раньше молчал?
|
|||
161
Fedor-1971
10.03.17
✎
15:18
|
тут надо копейки?
|
|||
162
Georg68
10.03.17
✎
15:18
|
до 50коп
|
|||
163
Fedor-1971
10.03.17
✎
15:25
|
пробуй
|
|||
164
Fedor-1971
10.03.17
✎
15:40
|
Держи и радуйся, 15 минут
|
|||
165
Fedor-1971
10.03.17
✎
15:40
|
с наведением красоты
|
|||
166
Georg68
10.03.17
✎
15:41
|
Математически округляет сейчас.
Ну фиг с ним |
|||
167
Fedor-1971
10.03.17
✎
15:42
|
(166) а как тебе нужно?
|
|||
168
Georg68
10.03.17
✎
15:42
|
в меньшую сторону
|
|||
169
Georg68
10.03.17
✎
15:43
|
в первом топике написал
|
|||
170
Georg68
10.03.17
✎
15:43
|
да ладно
|
|||
171
Georg68
10.03.17
✎
15:44
|
номер телефона или карточку для дотации можно?
|
|||
172
Fedor-1971
10.03.17
✎
15:46
|
(171) В РБ тебе золотой платёж будет
тогда так СкидкаКопейки=?(СкидкаКопейки > 50, 50, 0); |
|||
173
Fedor-1971
10.03.17
✎
15:47
|
Сам модернизируешь или показать?
|
|||
174
Fedor-1971
10.03.17
✎
16:03
|
173 Только, Бога ради, в модуле, а не в ячейке печатной формы
|
|||
175
Georg68
10.03.17
✎
16:05
|
вот эту строку изменить?
СкидкаКопейки=?(СкидкаКопейки=0,"00",Строка(СкидкаКопейки)); |
|||
176
Fedor-1971
10.03.17
✎
16:07
|
(175) да, СкидкаКопейки=?(СкидкаКопейки >= 50, "50", "00");
|
|||
177
Georg68
10.03.17
✎
16:13
|
только <= надо знак
|
|||
178
Georg68
10.03.17
✎
16:15
|
Всё равно он непонятно считает, но с процентами всегда так
|
|||
179
azernot
10.03.17
✎
16:25
|
Функция ОкруглитьДО(ИсходноеЧисло, РазрядОкругления = 0.5, РежимОкругления = 3);
ОстатокОтДеления = ИсходноеЧисло % РазрядОкругления; Если РежимОкругления = 1 Тогда //Обычный по мат. правилам Результат = ИсходноеЧисло - ?(ОстатокОТДеления>=(РазрядОкругления/2), -РазрядОкругления + ОстатокОТДеления, ОстатокОТДеления); ИначеЕсли РежимОкругления = 2 Тогда //Обычный по мат. правилам, 0.5 округляется в меньшую сторону Результат = ИсходноеЧисло - ?(ОстатокОТДеления>(РазрядОкругления/2), -РазрядОкругления + ОстатокОТДеления, ОстатокОТДеления); ИначеЕсли РежимОкругления = 3 Тогда //В меньшую сторону Результат = ИсходноеЧисло - ОстатокОтДеления; ИначеЕсли РежимОкругления = 4 Тогда //В большую сторону Результат = ИсходноеЧисло - ОстатокОтДеления + РазрядОкругления; КонецЕсли; Возврат Результат; КонецФункции |
|||
180
Fedor-1971
10.03.17
✎
16:48
|
(177) в таком варианте 205,2 = 205,50, а 205,52 = 205,00 как-то гнутенько и даже близко на округление не похоже.
Там где идёт вычисление СкидкаКопейки замени 0,5 на 0,01 и получишь цену округлённую до копеек, дальше строка из (176) |
|||
181
Fedor-1971
10.03.17
✎
16:55
|
180 не, исправляй в вычислении СкидкаЦена, там есть округление до 0,5
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |