Имя: Пароль:
1C
 
Вычисления в ТЧ документа
, ,
0 amadeus2010
 
19.08.14
14:17
Добрый день в документе реализация товаров услуг пытаюсь создать вычисляемую строку, которая будет заполняться значением.
//////////////////////////////////////////
Процедура ТоварыСкидкаПриИзменении(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Если СтрокаТабличнойЧасти.Сумма>= 500 Тогда
         СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма*0.03;
     ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 300 Тогда
        СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма*0.02;
     ИначеЕсли СтрокаТабличнойЧасти.Сумма>= 150 Тогда
         СтрокаТабличнойЧасти.Скидка = СтрокаТабличнойЧасти.Сумма*0.01;

КонецЕсли;

    
    
КонецПроцедуры
////////////////////////////////////////////////////\
в режиме предприятие поле скидка остается пустым
1 Галахад
 
гуру
19.08.14
14:19
А сумма чему равна?
2 salvator
 
19.08.14
14:21
(0) Отладчиком пользоваться умеешь?
3 Chum
 
19.08.14
14:22
Что-то мне подсказывает, что товарищ использует элементы формы, а не источник данных для этого элемента
4 amadeus2010
 
19.08.14
14:22
сумма-определенное значение которое получается стандартной процедурой рассчитатьсумму() т.е цена*количество
5 amadeus2010
 
19.08.14
14:23
(2) конечно умею пользоваться отладчиком
6 anatoly
 
19.08.14
14:24
это же уже было, не?
знакомые числа - 500/300/150...
7 amadeus2010
 
19.08.14
14:25
(6) это другая история уже
8 Chum
 
19.08.14
14:25
(6) угу, в прошлый раз он условие скидки оформил неверно
9 Крошка Ру
 
19.08.14
14:25
А мне вот интересно: кто ТСа научил систему скидок прям в коде прописывать?
10 amadeus2010
 
19.08.14
14:25
заказчик меняет условие задачи
11 Крошка Ру
 
19.08.14
14:26
(10) Прям сейчас??
12 Dmitriy_76
 
19.08.14
14:27
(9) +1
13 amadeus2010
 
19.08.14
14:29
заказчик желает чтобы когда в документе реализация оформлялся документ на каждую строку товара была своя скидка в зависимости от суммы строки ТЧ плюс включена автоматическая скидка = всего.
Т.е ТЧ.Сумма-ТЧ.Скидка-ТЧ.Автомат скидка=Всего в строке таб. части
14 StaticUnsafe
 
19.08.14
14:29
(9) +1

скидки в коде - лютый трэш
15 Крошка Ру
 
19.08.14
14:31
Сейчас ещё окажется, что это Розница.
16 Dmitriy_76
 
19.08.14
14:32
(14) а как же... чтоб заказчик сам не смог менять..только через тс ....
только это тссссссссс!!!
17 amadeus2010
 
19.08.14
14:34
(14) таково пожелание заказчика. Я сделал обработку которая учитывала все скидки по клиенту за период, и оставалось только заполнить документ установка скидок, но добавилось условие чтобы по приведенной схеме вычислять скидку по строке документа. Кстати это УТ 10.3
18 amadeus2010
 
19.08.14
14:34
Потом мне придется подобную схему реализовать в агент плюс
19 amadeus2010
 
19.08.14
14:41
есть какие-нибудь предложения
20 salvator
 
19.08.14
14:43
(19) в отладчике сумма скидки рассчитывается в этой процедуре?
21 Крошка Ру
 
19.08.14
14:51
(17)>>таково пожелание заказчика

О_о То есть, ты заказчику говоришь: "А давайте виды скидки будем хранить в справочнике, назначать-убирать будем документом", а заказчик тебе: "нет, только в коде, только хардкор"?
22 MUXACb
 
19.08.14
15:04
(0) Эта процедура используется при пользовательском изменении суммы в табличной части, а у Вас она программно вычисляется.

Добавьте в "рассчитатьсумму()" вычисление скидки
23 amadeus2010
 
19.08.14
15:17
(21)  я заказчику изначально предлагал цивилизованный вариант назначения скидок через типовой документ и справочник, также сделал обработку которая выводит все варианты скидок заказчика по каждому контрагенту и заказчику оставалось только в типовом документе прописать эти скидки.
24 StaticUnsafe
 
19.08.14
15:18
(17) ну и что

зачем потенциально изменяемые значения зашивать в код? Или заказчик так и сказал: "Чувак, сделай мне убого, чтоб я не мог  поменять настройку в режиме предприятия".
25 amadeus2010
 
19.08.14
15:27
(24) заказчик так захотел и не хочет слушать что ему говорит наш аналитик и я по поводу скидок
26 amadeus2010
 
19.08.14
15:31
(22)имели ввиду эту процедуру ПриИзмененииСуммыТабЧасти() из общего модуля? потому что кроме этой процедуры нет другой для подсчета суммы
27 amadeus2010
 
19.08.14
16:13
есть какие-нибудь предложения?
28 amadeus2010
 
19.08.14
16:29
я в процедуру ПриИзмененииСуммыТабЧасти() добавил следующий код
////////////////////////////////////////////////////
   //SIP-DIMA
                Если СуммаБезСкидок>= 500 Тогда
                     СтрокаТабличнойЧасти.Скидка = СуммаБезСкидок*0.03;
                     ИначеЕсли СуммаБезСкидок>= 300 Тогда
                        СтрокаТабличнойЧасти.Скидка = СуммаБезСкидок*0.02;
                         ИначеЕсли СуммаБезСкидок>= 150 Тогда
                             СтрокаТабличнойЧасти.Скидка = СуммаБезСкидок*0.01;
                КонецЕсли;
/////////////////////////////////////////////////////////
также в процедуру ТоварыСкидкаПриИзменении() добавил
//////////////////////////////////////////////
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
//////////////////////////////////////////////////

но все равно не выводит значения скидок. Не подскажите как можно решить вопрос.
29 Dmitriy_76
 
19.08.14
16:30
отладчик то что говорит ? тупо пролетает мимо ?
30 salvator
 
19.08.14
16:31
(28) Этот код

СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

Надо в событие при изменении Суммы, а не Скидки сделать!!!
31 amadeus2010
 
19.08.14
16:42
(30) там и так этот код есть
32 salvator
 
19.08.14
16:45
(31) "ТоварыСкидкаПриИзменении" у тебя привязано к полю "Сумма"? Не "Скидка"?
33 amadeus2010
 
19.08.14
16:57
(32) я пытаюсь изменить стандартную УТ 10.3 в которой поле сумма рассчитывается  РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

внутри этой процедуры идет расчет ручных и автоматических скидок и я туда же вставил свой код, но сейчас он ничего не выполняет в поле скидка. Если ввести значение процента в поле ручная скидка то идет расчет суммы с учетом этой скидки
34 salvator
 
19.08.14
17:28
(33) Ты на вопрос чётко можешь ответить или нет?
35 Fram
 
19.08.14
17:35
(28) а то что эта процедура у тебя просто не вызывается тебе в голову не приходило?
36 amadeus2010
 
19.08.14
17:36
(34) привязано к полю скидка
37 salvator
 
19.08.14
17:38
(36) А теперь подумай, как этот код будет выполняться при изменении поля "Сумма".
38 del123
 
19.08.14
17:45
аналогичная ошибка была и в прошлый раз, не туда код свой пихаешь
39 amadeus2010
 
19.08.14
17:46
(37) этот код надо поставить в при изменении поле сумма?
40 del123
 
19.08.14
17:49
(39) лучше в "ПриОкончанииРедактированияСтроки"
41 salvator
 
19.08.14
17:49
(39) Логично, правда?
42 amadeus2010
 
19.08.14
17:50
имеете ввиду этот код
//SIP-DIMA

                Если СуммаБезСкидок>= 500 Тогда
                     СтрокаТабличнойЧасти.Скидка = СуммаБезСкидок*0.03;
                     ИначеЕсли СуммаБезСкидок>= 300 Тогда
                        СтрокаТабличнойЧасти.Скидка = СуммаБезСкидок*0.02;
                         ИначеЕсли СуммаБезСкидок>= 150 Тогда
                             СтрокаТабличнойЧасти.Скидка = СуммаБезСкидок*0.01;
                КонецЕсли;
43 Fram
 
19.08.14
17:53
бедный заказчик
44 Fram
 
19.08.14
17:53
ему же бизнес на этом вести
45 amadeus2010
 
19.08.14
17:53
(43)заказчик не бедный
46 amadeus2010
 
19.08.14
17:54
сам так пожелал
47 Fram
 
19.08.14
17:55
(46) он тебе прямо код этот написал и сказал вставить в конфигурацию?
48 amadeus2010
 
19.08.14
17:57
нет код пришлось писать самому
49 Fram
 
19.08.14
17:58
(48) А что в УТ 10.3 нет механизма скидок в зависимости от суммы?
50 amadeus2010
 
19.08.14
18:00
есть типовые механизмы как в справочнике так и в документе, но заказчик желает использовать свою поделку
51 Fram
 
19.08.14
18:03
если ты сумел продать клиенту "снега зимой", конечно, хвала тебе как продавцу, но как консультанту-разработчику порицание
52 amadeus2010
 
19.08.14
18:04
(51) я не собирался продавать ему поделку, потому что приходится мучатся
53 salvator
 
19.08.14
18:05
(52) За еду работаешь?
54 amadeus2010
 
19.08.14
18:06
(40) в модуле формы есть Окончание ввода текста, а ПриОкончанииРедактированияСтроки нет
55 amadeus2010
 
19.08.14
18:07
(53) нет конечно же за фиксированную зарплату
56 amadeus2010
 
20.08.14
11:23
добрый день я поставил код в процедуру СуммаПриИзменении() но ничего не получилось.
57 salvator
 
20.08.14
11:25
(56) Есть один выход...