Имя: Пароль:
1C
1C 7.7
v7: Распределение скидки по чеку
,
0 san4ez1008
 
22.05.17
12:15
Доброго времени суток всем! Помогите пожалуйста с реализацией алгоритма распределения скидки. На бумажке то все написано, не хватает мозгов реализовать программно...
На входе:
•Структура чека: номер позиции, код товара, количество товара, стоимость товара;
•Сумма скидки списания бонусов r1, которую нужно распределить по позициям чека;
•Максимальная скидка по позициям чека в кассе x1...xn;
На выходе:
•Распределение скидки по позициям чека - z1...zn;

Описание алгоритма:
1.В x1...xn заполняется суммами из входных данных;
2.Выполняется вычисление значений z1...zn, как показано в таблице ниже:
http://s019.radikal.ru/i617/1705/ed/746f51d276fc.jpg
1 1dvd
 
22.05.17
12:16
Что конкретно не получается?
2 san4ez1008
 
22.05.17
12:23
код написать не получается =/
3 cw014
 
22.05.17
12:23
За тебя нужно написать?
4 HawkEye
 
22.05.17
12:25
(2) ну показывай, что ты уже написал...
5 Злопчинский
 
22.05.17
12:26
задача рюкзака с дополнительными ограничениями?
.
позиций в чеке много?
6 san4ez1008
 
22.05.17
12:27
(3) по возможности направить в нужное русло. Для начала надо для каждой строки вычислить сумму последующих значений строк. (5) сколько набьют, столько и будет..
7 san4ez1008
 
22.05.17
12:29
+ (6) сумму последующих значений включая текущую
8 igorPetrov
 
22.05.17
12:30
(7) Кто мешает вычислить?
9 HawkEye
 
22.05.17
12:32
(6) писать нужно в конфигураторе...
(7) зачем?
10 san4ez1008
 
22.05.17
12:36
(9) чтобы потом разделить на эту сумму
11 san4ez1008
 
22.05.17
13:05
все так плохо,господа прожженые 1С-ники? никто не может сообразить?
12 Джинн
 
22.05.17
13:13
(11) Сообразить что? Как перебрать строки и применить арифметические операции? Или как за Вас решить тестовое задание при приеме на работу?
13 san4ez1008
 
22.05.17
13:20
(12) то что я пытаюсь реализовать не так просто на мой взгляд
14 Garykom
 
гуру
22.05.17
13:22
В (0) фигня, правильные пацаны несколько видов оплаты (нал, терминал, сертификат, кредит, бонусы) по позициям чека распределяют!
15 Garykom
 
гуру
22.05.17
13:24
Короче:
1. Выкинуть 77
2. Поставить Розница 2.2.5.27
16 san4ez1008
 
22.05.17
13:25
(14) ну если для Вас это фигня, попробуйте реализовать алгоритм, который мне дали, может и мне поможете. у меня по крайней мере в голове не укладывается, как для каждой строки получить сумму текущей и последующих строк. сижу думаю уже часа полтора-ничего в голову не приходит, только 5 строчек кода
17 Garykom
 
гуру
22.05.17
13:28
(16) Начни с цикла по позициям и переменной которая вначале хранит полную сумму "скидки" а затем все меньшую и меньшую...
18 Джинн
 
22.05.17
13:28
(16) Коллега, это тестовое задание. Причем достаточно примитивное. Оно как раз повод для Вас подумать. Включайте мозг. Там ТЗ, перебор строк и несколько переменных для хранения данных расчета.

Если Вы с таким не справляетесь, то как работать будете?
19 Garykom
 
гуру
22.05.17
13:28
(17)+ Внутри цикла вычисляем нечто (в таблице все прописано) и Если...Тогда...
20 Garykom
 
гуру
22.05.17
13:30
(18) Тестовое задание на 77 ? Интересно это где нынче такое?
21 san4ez1008
 
22.05.17
13:33
(20) меня на работу взяли без знания 1С, вот сижу,учусь.. дали проект на внедрение бонусной программы, вот и надо распределить скидку по позициям. С перебором строк все понятно, как в текущей строке получить сумму ее и последующей-не могу понять..
22 san4ez1008
 
22.05.17
13:33
Для стр=1 по ТЗ.КоличествоСтрок() цикл
        Остаток=0;
        Если стр=1 тогда
            ТЗ.УстановитьЗначение(стр,"СкидкаОст",ТЗ.Итог("МаксСкидка"));
        иначе
            Остаток=Остаток+ТЗ.ПолучитьЗначение(стр,"МаксСкидка");
            ТЗ.УстановитьЗначение(стр,"СкидкаОст",ТЗ.Итог("МаксСкидка")-Остаток);
        КонецЕсли;
    КонецЦикла;
это вообще бред бредом..
23 HawkEye
 
22.05.17
13:51
(10) что будет для последней строки? 1? какой в этом сакраментальный смысл?
24 san4ez1008
 
22.05.17
13:52
для первой строки-сумма всех позиций, для последней-сумма последней позиции
25 HawkEye
 
22.05.17
13:52
(21) что мешает отнять от общей суммы - сумму предыдущих?
26 HawkEye
 
22.05.17
13:54
(24) ок. пусть будет этот бред... и что в нем не получается?

для каждой строки считаешь (ИтоговаяСумму - СуммаПредыдущихСтрок).
27 san4ez1008
 
22.05.17
14:03
Ост=0;
    Остаток=ТЗ.Итог("МаксСкидка");
    Для стр=1 по ТЗ.КоличествоСтрок() цикл
        Если стр=1 тогда
            ТЗ.УстановитьЗначение(стр,"СкидкаОст",Остаток);
        иначе
            Ост=Ост+ТЗ.ПолучитьЗначение(стр,"МаксСкидка");
            Остаток=ТЗ.Итог("МаксСкидка")-ТЗ.ПолучитьЗначение(стр-1,"МаксСкидка");//ТЗ.ПолучитьЗначение(стр,"МаксСкидка");
            ТЗ.УстановитьЗначение(стр,"СкидкаОст",Остаток);//ТЗ.Итог("МаксСкидка")-Остаток);
        КонецЕсли;
    КонецЦикла;

не могу понять,во второй строке нормально, дальше-хуже...
28 Garykom
 
гуру
22.05.17
14:11
Как раз вторая строка "Остаток=ТЗ.Итог("МаксСкидка");" полный дурдом
29 san4ez1008
 
22.05.17
14:11
(28) ну так мне же надо от общей суммы отталкиваться..
30 Garykom
 
гуру
22.05.17
14:12
(28)+ У тя есть макс скидка на каждую отдельную позицию, какого ты их складываешь???
31 Garykom
 
гуру
22.05.17
14:13
(29) Признавайся ты кто по образованию?
32 san4ez1008
 
22.05.17
14:14
(31) не поверишь,бакалавр информационных систем и технологий
33 san4ez1008
 
22.05.17
14:14
(30) где я их складываю?? оО
34 Злопчинский
 
22.05.17
14:15
тут у нас все программисты-геодезисты и программисты-бетонщики. не, конечно встречаются "инженеры-минус-математики"
35 HawkEye
 
22.05.17
14:16
(32) сдай свой диплом назад...
36 san4ez1008
 
22.05.17
14:17
(35) может по теме поможете,а не г***м поливать?
37 Злопчинский
 
22.05.17
14:18
(36) не кпипишуй, нормально все.. сначал поиздеваются...
1сник должен в начале карьеры быть махохистом, а по мере становления - перетекать в садиста

"Каждый автоматизатор - в душе гестаповец"
38 HawkEye
 
22.05.17
14:19
(29) закрывая глаза на бредовость интерпретации задания..
ОБщаяСумма = ТЗ.Итог("МаксСкидка");
СуммаПройденныхСтрок = 0;
ТЗ.выбратьСтроки();
Пока Тз.получитьСтроку() = 1 Цикл
нужнаянамсумма = ОБщаяСумма - СуммаПройденныхСтрок ;
СуммаПройденныхСтрок = СуммаПройденныхСтрок  + ТЗ.МаксСкидка;
КонецЦикла
39 mistеr
 
22.05.17
14:20
(32) Если ты не осилил программирование за 4 года в инсте, почему ты думаешь, что осилишь за два дня на Мисте?
40 HawkEye
 
22.05.17
14:20
(36) так тебя и спрашивают русским языком, что не получается..

для составления алгоритма, абсолютно не нужно знание 1С...
41 san4ez1008
 
22.05.17
14:26
(38) бл***...пора по ходу в отпуск идти,мозг уже совсем не варит
42 san4ez1008
 
22.05.17
14:27
(40) спасибо тебе,добрый человек
43 Злопчинский
 
22.05.17
14:27
(41) "сгорел на работе"
44 san4ez1008
 
22.05.17
14:28
(43) да я тут вторую неделю по 12 часов на работе сижу из-за этих СПАСИБО...
45 Злопчинский
 
22.05.17
14:34
(44) ну тады тебе должны бабла овердохрена платить, чтобы после 12 часов ты зашел например а "Азия бьюти спа" - посидел в хамамчике, тебе сделали массаж от головы (я думал мне бошку раздавят - ходим с женой изредка) до ступней ну и т.д.
46 Злопчинский
 
22.05.17
14:34
.. чтобы на след день нормально работать
47 san4ez1008
 
22.05.17
15:49
(46) овердохрена это сколько по Вашему?
48 Злопчинский
 
22.05.17
16:12
(47) ровно столько и больше сколько не противоречит твоему чувству прекрасного.