Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:15

Установка скидок для контрагента в бухгалтерии 2.0 8.2

Автор EritikWoW, 04 дек 2012, 20:13

0 Пользователей и 1 гость просматривают эту тему.

EritikWoW

Доброго всем времени суток !


У меня такая проблема... если бы вы могли бы помочь или хотя бы подсказать с чего лучше начать было бы ооооочень хорошо ! =)



Суть в том что на фирме каждому контрагенту дают свою скидку.. и текучка кадров тоже... оставляет желать лучшего...



Хотелось бы сделать так что бы за каждым контрагентом была закреплена своя скидка... как есть ли возможность реализации данной функции в Бухгалтерии 8.2 ?



И если есть не могли подсказать с чего начать !

EritikWoW

Я вижу решение данного вопроса так...

Новый реквезит в справочнике "Контрагенты" "Скидка" далее работа не посредственно с документом РТУ

Код как я понимаю должен быть такой

Если НЕ NULL
Тогда
Справочники.Контрагенты.Скидка
КонецЕсли

Вот ток куда и как его написать я пока не знаю !
Добавлено: 04 дек 2012, 22:50


Если
ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки
Тогда
ЭлементыФормы.Товары.Данные.СуммаСкидки = ЭлементыФормы.Контрагент.Значение.Скидка;
КонецЕсли;


mr.lefthander

Цитата: EritikWoW от 04 дек 2012, 20:13И если есть не могли подсказать с чего начать !
Есть много возможных вариантов решения задачи, но абсолютно точно это - не 5-10 строчек кода. Потребуется доработка конфигурации.

Gunner

Добавьте реквизит "скидка" в справочнике "контрагенты". Далее во всех документах, где исп. скидка, просто читайте значение по реквизиту "контрагент" и записывайте

Msoul

Выскажу свое мнение. Считаю, что все-таки скидки лучше хранить в периодическом регистре сведений. Это удобно, если документы правятся задним числом.

EritikWoW

Хм.... все сделал но почему то скидка не перекидывается в документ ! :trhregerhg:




Msoul

А где код которым скидка перекидывается?

EritikWoW

Если *********************************************** <- :dfbsdfbsdf:
Тогда СуммаСкидки = ("(СуммаБезСкидки/100)*Скидка") <- Мне нужно что бы скидка выдавалась в поле СуммаСкидки
КонецЕсли;

Также сделал видимость в документе саму скидку... с данного показателя (в документе) и опираюсь на % скидки....

То есть с Контрагента скидка показывается в Документе РТУ, а уже далее я работаю с данной ссылкой в документе !

P.S. ребят я просто ток.... ток.... начал разбираться !

Добавлено: 26 дек 2012, 17:01


Решил проблему данным образом !

Знаю что может быть и компакнее... но это мое решение если есть предложения лучше буду рад их увидеть !

Скидка по контрагентам

Справочник.Контрагенты

новый реквезит «СкидкаПоКонтрагенту»
Тип – Строка       Длина – 4

ФормаЭлемента – Новое поле ввода «Скидка»

Процедура ПриОткрытии()   

Если НЕ РольДоступна("Просмотр")
Тогда ЭлементыФормы.Скидка.РедактированиеТекста = ТолькоПросмотр=Истина
КонецЕсли;

Процедура СкидкаОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
Если НЕ РольДоступна("Просмотр")
   Тогда ТолькоПросмотр=Истина
КонецЕсли;
КонецПроцедуры

Документы.РеализацияТоваровУслуг

Новый реквизит «Скидка»
Тип – Строка       Длина – 4

ТабличныеЧасти.Товары  реквезит «СуммаСкидки»
Тип – Число       Длина – 6 Точность - 2

ФормаДокумента – Новое поле ввода данные -«Скидка»

Процедура ПриОткрытии()
   
Если Скидка<> Контрагент.СкидкаПоКонтрагенту 
Тогда Скидка = Контрагент.СкидкаПоКонтрагенту
КонецЕсли;

Процедура ОбновлениеОтображения()
Если Скидка<> Контрагент.СкидкаПоКонтрагенту 
Тогда Скидка = Контрагент.СкидкаПоКонтрагенту
КонецЕсли;

Процедура КонтрагентПриИзменении(Элемент)
   
   
Если Скидка<> Контрагент.СкидкаПоКонтрагенту 
Тогда Скидка = Контрагент.СкидкаПоКонтрагенту
КонецЕсли;

ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;



Скидка по контрагентам

Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока)
   
   ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;
   
   ЭлементыФормы.Товары.ТекущиеДанные.Сумма =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки-ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки);

Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   
   ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;
   ЭлементыФормы.Товары.ТекущиеДанные.Сумма =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки-ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки);

Процедура ТоварыНоменклатураПриИзменении(Элемент)
   ЭлементыФормы.Товары.ТекущаяСтрока.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;
   
    ЭлементыФормы.Товары.ТекущиеДанные.Сумма =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки-ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки);

Процедура ТоварыЦенаПриИзменении(Элемент)
   
   Если ЭлементыФормы.Товары.ТекущиеДанные.Цена >=0
   Тогда ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;
   КонецЕсли;


УБРАТЬ
Процедура ТоварыСкидкаПриИзменении(Элемент)
   
// Выполнить общие действия для всех документов при изменении Суммы.
ОбработкаТабличныхЧастей.ПриИзмененииСкидкиТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);

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

Процедура ТоварыСуммаСкидкиНачалоВыбора(Элемент, СтандартнаяОбработка)
   
ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки = (ЭлементыФормы.Товары.СуммаБезскидки/100)*Скидка
КонецПроцедуры   

Добавлено: 27 дек 2012, 13:13


Также в данную процедуру надо вставить данный код иначе СуммаНДС будет правильно просчитываться ток при повторном вводе цены !
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

Если ЭлементыФормы.Товары.ТекущиеДанные.СтавкаНДС = Перечисления.СтавкиНДС.НДС20
Тогда ЭлементыФормы.Товары.ТекущиеДанные.СуммаНДС = ЭлементыФормы.Товары.ТекущиеДанные.Сумма/5;
Иначе ЭлементыФормы.Товары.ТекущиеДанные.СуммаНДС = ""
КонецЕсли;

EritikWoW


Если ЭлементыФормы.Товары.ТекущиеДанные.СтавкаНДС = Перечисления.СтавкиНДС.НДС20
Тогда ЭлементыФормы.Товары.ТекущиеДанные.СуммаНДС = ЭлементыФормы.Товары.ТекущиеДанные.Сумма/5;
Иначе ЭлементыФормы.Товары.ТекущиеДанные.СуммаНДС = ""
КонецЕсли;

грамотнее будет так:


Если ЭлементыФормы.Товары.ТекущиеДанные.СтавкаНДС = Перечисления.СтавкиНДС.НДС20
Тогда ЭлементыФормы.Товары.ТекущиеДанные.СуммаНДС = (ЭлементыФормы.Товары.ТекущиеДанные.Сумма*ЭлементыФормы.Товары.ТекущиеДанные.СтавкаНДС)/100
Иначе ЭлементыФормы.Товары.ТекущиеДанные.СуммаНДС = ""
КонецЕсли;

Добавлено: 30 дек 2012, 14:26


Сопсно  посидев помозговав.... пришел вот к чему:

Справочник.Контрагенты

новый реквезит «СкидкаПоКонтрагенту»
Тип – Строка       Длина – 4

ФормаЭлемента – Новое поле ввода «Скидка»

Процедура ПриОткрытии()

Если НЕ РольДоступна("Просмотр")
Тогда ЭлементыФормы.Скидка.РедактированиеТекста = ТолькоПросмотр=Истина
КонецЕсли;


Документы.РеализацияТоваровУслуг

Новый реквизит «Скидка»
Тип – Строка       Длина – 4

ТабличныеЧасти.Товары  реквезит «СуммаСкидки»
Тип – Число       Длина – 6 Точность - 2

ФормаДокумента – Новое поле ввода данные -«Скидка»

Процедура ПриОткрытии()

Скидка = Контрагент.СкидкаПоКонтрагенту;

Процедура ОбновлениеОтображения()

Тогда Скидка = Контрагент.СкидкаПоКонтрагенту;

Процедура КонтрагентПриИзменении(Элемент)


ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;


Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока)

ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;

ЭлементыФормы.Товары.ТекущиеДанные.Сумма =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки-ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки);

Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;
ЭлементыФормы.Товары.ТекущиеДанные.Сумма =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки-ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки);


Процедура ТоварыНоменклатураПриИзменении(Элемент)

ЭлементыФормы.Товары.ТекущаяСтрока.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;

ЭлементыФормы.Товары.ТекущиеДанные.Сумма =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки-ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки);

Процедура ТоварыЦенаПриИзменении(Элемент)

Если ЭлементыФормы.Товары.ТекущиеДанные.Цена >=0
Тогда ЭлементыФормы.Товары.ТекущиеДанные.СуммаСкидки =(ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки/100)*Скидка;
КонецЕсли;


Если ЭлементыФормы.Товары.ТекущиеДанные.Цена >=0
Тогда ЭлементыФормы.Товары.ТекущиеДанные.СуммаБезСкидки= (ЭлементыФормы.Товары.ТекущиеДанные.Количество * ЭлементыФормы.Товары.ТекущиеДанные.Цена)
КонецЕсли;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск