Помогите с написание модуля оплаты , 1С Предприятие 8.2, самописная конфигурация
2 страниц
< 1 2
03.07.12, 11:29
Завсегдатай
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0
И опять же, хочется автоматом расскидывать по курсам, а получается ступор. Вот тут все гут: Документ - Создание договора студента
//Цена за первый курс Движения.ОплатыСтудентов.Записывать = Истина; Движение = Движения.ОплатыСтудентов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Студент = Студент; Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование; Движение.Курс=Перечисления.НомерКурса.Первый; Движение.СуммаОплаты = Студент.Цена1курс; //Цена за второй курс Движения.ОплатыСтудентов.Записывать = Истина; Движение = Движения.ОплатыСтудентов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Студент = Студент; Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование; Движение.Курс=Перечисления.НомерКурса.Второй; Движение.СуммаОплаты = Студент.Цена2курс; //Цена за третий курс Движения.ОплатыСтудентов.Записывать = Истина; Движение = Движения.ОплатыСтудентов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Студент = Студент; Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование; Движение.Курс=Перечисления.НомерКурса.Третий; Движение.СуммаОплаты = Студент.Цена3курс; //Цена за четвертый курс Движения.ОплатыСтудентов.Записывать = Истина; Движение = Движения.ОплатыСтудентов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Студент = Студент; Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование; Движение.Курс=Перечисления.НомерКурса.Червертый; Движение.СуммаОплаты = Студент.Цена4курс; //Цена за пятый курс Движения.ОплатыСтудентов.Записывать = Истина; Движение = Движения.ОплатыСтудентов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Студент = Студент; Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование; Движение.Курс=Перечисления.НомерКурса.Пятый; Движение.СуммаОплаты = Студент.Цена5курс;
Теперь Документ - Прием Оплаты
Процедура ОбработкаПроведения(Отказ, Режим) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОплатыСтудентовОстатки.Студент, | ОплатыСтудентовОстатки.ВидУслуги, | ОплатыСтудентовОстатки.Курс, | ОплатыСтудентовОстатки.СуммаОплатыОстаток |ИЗ | РегистрНакопления.ОплатыСтудентов.Остатки КАК ОплатыСтудентовОстатки |ГДЕ | ОплатыСтудентовОстатки.Студент = &Студент | И ОплатыСтудентовОстатки.ВидУслуги = &ВидУслуги"; Запрос.УстановитьПараметр("ВидУслуги", ВидУслуги); Запрос.УстановитьПараметр("Студент", Студент); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Первый Тогда х1=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток; ИначеЕсли ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Второй Тогда х2=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток; ИначеЕсли ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Третий Тогда х3=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток; ИначеЕсли ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Червертый Тогда х4=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток; ИначеЕсли ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Пятый Тогда х5=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток; КонецЕсли; КонецЦикла; // регистр ОплатыСтудентов Приход Движения.ОплатыСтудентов.Записывать = Истина; Движение = Движения.ОплатыСтудентов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Студент = Студент; Движение.СуммаОплаты = Сумма; Движение.ВидУслуги=ВидУслуги; КонецПроцедуры
Вот тут не знаю как правильно прописать условие, так как сумма оплаты может быть больше х1 и х2, а может быть больще х1 но меньше х2 и т.д.
Или все таки лучьше добавить в документе реквизит курс, и пусть руками разносят по курсам? Единственное прописать проверку:
Если Сумма>х1 Тогда Сообщить("Сумма проплаты превышает задолженность, введите сумма не больше " + x1$ КонецЕсли;
06.07.12, 8:59
Завсегдатай
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0
Цитата(logist @ 03.07.12, 13:07)
Ступор получился потому что слишком много кода, некоторые вещи можно сделать на уровне запроса, некоторые оптимизировать. p.s. "как это сделать" у меня сегодня нет времени расписывать
Ну может как будет время, то помогите, буду очень благодарен.
Я чуток изменил запрос, так как суммы которы = 0 или больше 0 нас не интересуют, но все равно как дальше, непойму
Ноль=0; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОплатыСтудентовОстатки.Студент, | ОплатыСтудентовОстатки.ВидУслуги, | ОплатыСтудентовОстатки.Курс, | ОплатыСтудентовОстатки.СуммаОплатыОстаток |ИЗ | РегистрНакопления.ОплатыСтудентов.Остатки КАК ОплатыСтудентовОстатки |ГДЕ | ОплатыСтудентовОстатки.Студент = &Студент | И ОплатыСтудентовОстатки.ВидУслуги = &ВидУслуги | И ОплатыСтудентовОстатки.СуммаОплатыОстаток < &Ноль"; Запрос.УстановитьПараметр("ВидУслуги", ВидУслуги); Запрос.УстановитьПараметр("Студент", Студент);
12.07.12, 12:17
Завсегдатай
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0
Решил я не автоматом разносить по курсам, а ручками пусть разносят.
Но для удобства в документ ПриемОплаты, добавил ДинамическийСписок, в который выводится задолженность по курсам.
Произвольный запрос, текст запроса:
ВЫБРАТЬ ОплатыСтудентовОстатки.Студент, ОплатыСтудентовОстатки.ВидУслуги, ОплатыСтудентовОстатки.Курс, ОплатыСтудентовОстатки.СуммаОплатыОстаток ИЗ РегистрНакопления.ОплатыСтудентов.Остатки КАК ОплатыСтудентовОстатки
Помогите написать условие отбора:
ГДЕ ОплатыСтудентовОстатки.Студент = Обьект.Студент И ОплатыСтудентовОстатки.ВидУслуги = Обьект.ВидУслуги
Заранее спасибо.
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!