Имя: Пароль:
1C
1С v8
Как назначить скидку контрагенту из обработки в документе реализация товаров
,
0 amadeus2010
 
26.08.14
10:45
Добрый день очень извиняюсь что уже достал всех своими вопросами, но хотел бы задать еще один вопрос. Есть обработка которая показывает скидки по контрагентам исходя из оборота продаж за прошлый месяц, наличия оформленной витрины по стандартам компании. Теперь надо сделать так чтобы при открытии документа реализация товаров при выборе контрагента в поле скидка например подставлялся общий процент скидки из обработки.Потому что заказчик не хочет через документ установка скидок вручную для каждого клиента выставлять общую скидку.
1 МойКодУныл
 
26.08.14
10:47
Сделать это регламентным заданием. Чтобы документы установка скидки создавала программа а не заказчик.
2 amadeus2010
 
26.08.14
11:06
Вопрос и заключается в том чтобы как сделать так чтобы при выборе покупателя А отображалась его скидка исходя из перечисленных условий, т.е из строки обработки общая скидка подставлялась в поле автомат скидка для конкретного клиента
3 Ёпрст
 
26.08.14
11:09
(2) вестимо написать запрос который подсчитает скидку при выборе клиентоса.
4 amadeus2010
 
26.08.14
11:15
такой запрос есть
////////////////////////////////////////////////////////
Процедура ОсновныеДействияФормыРассчитатьСкидку(Кнопка)
    Запрос= Новый Запрос ("ВЫБРАТЬ
|    Продажи.Контрагент КАК Клиент,
|    СУММА(Продажи.Стоимость) КАК Оборот,
|    Продажи.Контрагент.ExtraBonus КАК ExtraBonus,
|    Продажи.Контрагент.Vitrina КАК Vitrina,
|    Продажи.Контрагент.VitrinaExclusive КАК VitrinaExclusive
|ИЗ
|    РегистрНакопления.Продажи КАК Продажи
|ГДЕ
|    Продажи.Период МЕЖДУ &НачДата И &КонДата
|
|СГРУППИРОВАТЬ ПО
|    Продажи.Контрагент");

Запрос.УстановитьПараметр("НачДата", НачалоДня(ЭлементыФормы.ПериодС.Значение));
Запрос.УстановитьПараметр("КонДата", КонецДня(ЭлементыФормы.ПериодПо.Значение));
    
Результат = Запрос.Выполнить();
Выборка= Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Строка= Клиенты.Добавить();
Строка.Клиент= Выборка.Клиент;
        
Если Выборка.Оборот>=1000
    Тогда Строка.ОборотПродаж = 2;
     ИначеЕсли Выборка.Оборот>=600
      Тогда Строка.ОборотПродаж= 1;
КонецЕсли;
        
Если Выборка.ExtraBonus = Истина Тогда
     Строка.ExtraBonus = 2;
КонецЕсли;
          
Если Выборка.Vitrina = Истина Тогда
     Строка.Витрина = 2;
КонецЕсли;

Если Выборка.VitrinaExclusive = Истина Тогда
     Строка.ВитринаExclusive = 2;
КонецЕсли;

Строка.ОбщаяСкидка = Строка.ExtraBonus + Строка.Витрина + Строка.ВитринаExclusive + Строка.ОборотПродаж;
    
КонецЦикла;

КонецПроцедуры
////////////////////////////////////////////////////////
даже целая процедура которая выводит общую скидку по клиенту.Теперь как это все подставить в док.реализация, чтобы при выборе контрагента автоматом выводилась его скидка если она есть
5 amadeus2010
 
26.08.14
11:21
можно создать процедуру в документе Заполнить по скидкам, выбрать этот запрос, добавить параметр в запросе как Котрагент, Ссылка.Контрагент, а вот как с датами быть?
6 Галахад
 
гуру
26.08.14
11:23
(5) С начала времен и по текущий день.
7 Kalambur
 
26.08.14
11:24
"Потому что заказчик не хочет через документ установка скидок вручную для каждого клиента выставлять общую скидку."
он хочет чтоб 1с ему еще и попу подтирала сама?
8 Kalambur
 
26.08.14
11:26
+ если надо для всех, в документе есть галка "Для всех получателей"
9 amadeus2010
 
26.08.14
11:28
(5) в документе нет же период с начало по конец, есть только дата создания документа, а как определить что именно эта скидка выбирается например за июль месяц?
10 Kalambur
 
26.08.14
11:30
(9) а где у тебя есть данные что именно эта скидка идет именно в тот месяц?
11 amadeus2010
 
26.08.14
11:31
(8) я про это знаю, даже можно и по все номенклатуре поставить и тогда в документе реализация автоматом выходит назначенная скидка. Вопрос в том чтобы либо в документ реализация по кнопке заполнялась скидка для конкретного клиента либо в документе установка скидок выставлять скидку исходя из обработки
12 amadeus2010
 
26.08.14
11:32
(10) так я же этот код из обработки взял, в ней есть поле нач период и конеч период
13 Kalambur
 
26.08.14
11:33
тебе всего то надо установить в
Запрос.УстановитьПараметр("НачДата", НачалоДня(ЭлементыФормы.ПериодС.Значение));
Запрос.УстановитьПараметр("КонДата", КонецДня(ЭлементыФормы.ПериодПо.Значение));

прошлый месяц
14 Kalambur
 
26.08.14
11:34
Запрос.УстановитьПараметр("НачДата", началоМесяца(НачалоМесяца(ЭлементыФормы.ПериодС.Значение)-1)));

конецмесяца сам делай
15 amadeus2010
 
26.08.14
11:39
(14) в документе реализация нет полей нач дата, кон дата, есть только Дата
16 Kalambur
 
26.08.14
11:42
ты че хочешь то в итоге? обороты за месяц или поля в реализации?
17 amadeus2010
 
26.08.14
11:49
(16) обороты за месяц не проблема получить, вопрос в том что надо поле обработки общая скидка подставить в автоматические скидки ТЧ документа или автоматом создавать документ Установка скидок в котором будет создаваться контрагент  как получатель, процент скидки.
18 amadeus2010
 
26.08.14
17:05
в итоге создал документ назначения скидок исходя из перечисленных условий. На его основании пользователь будет создавать документ Установка скидок и в документе реализация товаров оставил поле Скидка для расчета скидок по товарам в строках.
19 amadeus2010
 
29.08.14
10:10
всем добрый день, хочу выразить всем благодарность за помощь.
Вопрос с выводом скидок в ТЧ документа реализация решил созданием новой процедуры в которую перенес условия проверки от суммы, потом сделал вызов этой процедуры в в процедуре ТоварыСуммаПриИзменении, а также добавил в количество, цену и ДокСкидкаПриИзменении. Для расчета Всего в ТЧ пришлось подправить код в ТоварыПриВыводеСтроки, в подвале теперь показывает общую скидку по полю ДокСкидка и Всего за минусом всех скидок.
Также создал отдельный документ в котором отображаются все типы скидок которые он хотел видеть,далее эти скидки записываются в отдельный регистр накопления. Теперь хочу из этого регистра подставлять общую скидку по клиенту в док. Установка скидок, чтобы потом в док. реализация в ТЧ автоматические скидки отображалась текущая скидка на месяц.
Только заказчик немного неадекватный, просит в одном документе показать скидку от месячного оборота продаж и скидку от продажи товаров за сегодняшний день.
20 Kalambur
 
29.08.14
10:19
"Только заказчик немного неадекватный, просит в одном документе показать скидку от месячного оборота продаж и скидку от продажи товаров за сегодняшний день"

ты объясни, что это смотрят не в документе, а в отчете.
21 amadeus2010
 
29.08.14
10:47
пытаюсь это объяснить заказчику уже 2-й день, но он не хочет слушать
22 amadeus2010
 
29.08.14
11:10
тем более что как я уже написал был создан отдельный документ в который выводятся все варианты скидок по клиенту за исключением того что какую скидку получит клиент от текущей покупки за день
23 amadeus2010
 
29.08.14
11:28
кстати такой вопрос в док. Установка скидок добавил кнопку Заполнить которая должна в ТЧ Получатели скидки добавлять контрагентов и в поле Процент выставлять их процент скидки.
////////////////////////////////////////////////////////////
Запрос = Новый Запрос ("ВЫБРАТЬ
       |    ПредоставленныеСкидки.ПолучательСкидки КАК Клиент,
       |    СУММА(ПредоставленныеСкидки.СуммаСкидки) КАК СуммаСкидки
       |ИЗ
       |    РегистрНакопления.ПредоставленныеСкидки КАК ПредоставленныеСкидки
       |ГДЕ
       |    ПредоставленныеСкидки.Период МЕЖДУ &Начало И &Конец
       |
       |СГРУППИРОВАТЬ ПО
       |    ПредоставленныеСкидки.ПолучательСкидки");
      
     Запрос.УстановитьПараметр("Начало", НачалоДня(ЭлементыФормы.ДатаНачала.Значение));
     Запрос.УстановитьПараметр("Конец",  КонецДня (ЭлементыФормы.ДатаОкончания.Значение));
    
     Результат = Запрос.Выполнить();
     Выборка  = Результат.Выбрать();
     Пока Выборка.Следующий() Цикл
         ТекСтрока = ПолучателиСкидки.Добавить();
         ТекСтрока.Контрагент = Выборка.Клиент;
         ТекСтрока.Получатель = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(Выборка.Клиент);
    КонецЦикла;    
         ЭлементыФормы.ПроцентСкидкиНаценки = Выборка.СуммаСкидки;
////////////////////////////////////////////////////////

при нажатии на кнопку выходит такая ошибка

{Документ.УстановкаСкидокНоменклатуры.Форма.ФормаДокумента(1574)}: Поле объекта недоступно для записи (ПроцентСкидкиНаценки)
         ЭлементыФормы.ПроцентСкидкиНаценки = Выборка.СуммаСкидки;
24 amadeus2010
 
29.08.14
11:37
отзываю свой вопрос так как учитывая что у контрагентов за период времени могут быть разные скидки то невозможно установить общую скидку одним документом, надо для каждого назначать скидку индивидуально