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

Разработка конфигурации

Автор Luchfan12, 16 дек 2016, 13:19

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

Luchfan12

Я новичок в 1С и пока не очень разбираюсь в программировании.
В общем есть справочник где содержатся клиенты. Имеется документ Оказание Услуги, где есть сумма, на которую воспользовался клиент услугами и товарами. Хочу сделать систему скидок, где будут выводиться скидки в зависимости от той суммы, на которую клиент купил товары и воспользовался услугами.
Код документа ОказаниеУслуги (Модуль Менеджера)


Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.ОказаниеУслуги.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОказаниеУслуги.Дата,
| ОказаниеУслуги.Клиент,
| ОказаниеУслуги.Мастер,
| ОказаниеУслуги.Номер,
| ОказаниеУслуги.Склад,
| ОказаниеУслуги.ПереченьНоменклатуры.(
| НомерСтроки,
| Номенклатура,
| Количество,
| Цена,
| Сумма
| )
|ИЗ
| Документ.ОказаниеУслуги КАК ОказаниеУслуги
|ГДЕ
| ОказаниеУслуги.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьПереченьНоменклатурыШапка = Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");
ОбластьПереченьНоменклатуры = Макет.ПолучитьОбласть("ПереченьНоменклатуры");
ОбластьИтог = Макет.ПолучитьОбласть("Всего");
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
СуммаИтог = 0;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());

ТабДок.Вывести(ОбластьПереченьНоменклатурыШапка);
ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();
Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл
ОбластьПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);
ТабДок.Вывести(ОбластьПереченьНоменклатуры, ВыборкаПереченьНоменклатуры.Уровень());
СуммаИтог = СуммаИтог + ВыборкаПереченьНоменклатуры.Сумма;
        КонецЦикла;

ВставлятьРазделительСтраниц = Истина;
ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог;
ТабДок.Вывести(ОбластьИтог);
КонецЦикла;
//}}
КонецПроцедуры

В общем я думаю, что надо обойти всю табличную часть данного документа и в зависимости от значения в поле СуммаИтог выводить определённую скидку с использованием условий Если и Иначе.
Есть вопросы:
1) Где лучше выводить скидку: в справочнике Клиенты или документе ОказаниеУслуги?
2) При выводе скидки надо создавать реквизит Скидка?
3) Процедуру установления скидок прописывать в модуле менеджера документа Оказание Услуги или справочнике Клиенты?
СуммаИтог выводится после печати!!!

Vasya Povar

Можно в Документе сделать поле на форме СуммаБезСкидки и просто Сумма(со скидкой), и тогда уже брать на печать нужную сумму. А на форме уже сделать переменную Скидка. Саму процедуру можно сделать как в модуле формы так и в модуле обьекта   

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

Рейтинг@Mail.ru Rambler's Top100

Поиск