Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите с написание модуля оплаты , 1С Предприятие 8.2, самописная конфигурация 2 страниц V  < 1 2          
logist Подменю пользователя
сообщение 02.07.12, 15:42
Сообщение #21

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(Fabri @ 02.07.12, 16:36) *
Спасибо большое

На здоровье, только не понятно почему проигнорировали сообщение #12


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Fabri Подменю пользователя
сообщение 03.07.12, 10:22
Сообщение #22

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0

Цитата(logist @ 02.07.12, 16:42) *
На здоровье, только не понятно почему проигнорировали сообщение #12


Не проигнорировал, не совсем понял, молодой ещё, неопытный smile.gif

Fabri Подменю пользователя
сообщение 03.07.12, 11:29
Сообщение #23

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0

И опять же, хочется автоматом расскидывать по курсам, а получается ступор.

Вот тут все гут: Документ - Создание договора студента
    //Цена за первый курс
    Движения.ОплатыСтудентов.Записывать = Истина;
    Движение = Движения.ОплатыСтудентов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = Студент;
    Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование;
    Движение.Курс=Перечисления.НомерКурса.Первый;
    Движение.СуммаОплаты = Студент.Цена1курс;
    
    //Цена за второй курс
    Движения.ОплатыСтудентов.Записывать = Истина;
    Движение = Движения.ОплатыСтудентов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = Студент;
    Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование;
    Движение.Курс=Перечисления.НомерКурса.Второй;
    Движение.СуммаОплаты = Студент.Цена2курс;
    
    //Цена за третий курс
    Движения.ОплатыСтудентов.Записывать = Истина;
    Движение = Движения.ОплатыСтудентов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = Студент;
    Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование;
    Движение.Курс=Перечисления.НомерКурса.Третий;
    Движение.СуммаОплаты = Студент.Цена3курс;
    
    //Цена за четвертый курс
    Движения.ОплатыСтудентов.Записывать = Истина;
    Движение = Движения.ОплатыСтудентов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = Студент;
    Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование;
    Движение.Курс=Перечисления.НомерКурса.Червертый;
    Движение.СуммаОплаты = Студент.Цена4курс;
    
    //Цена за пятый курс
    Движения.ОплатыСтудентов.Записывать = Истина;
    Движение = Движения.ОплатыСтудентов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = Студент;
    Движение.ВидУслуги = Перечисления.ВидыУслуг.Образование;
    Движение.Курс=Перечисления.НомерКурса.Пятый;
    Движение.СуммаОплаты = Студент.Цена5курс;


Теперь Документ - Прием Оплаты

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

    Запрос.УстановитьПараметр("ВидУслуги", ВидУслуги);
    Запрос.УстановитьПараметр("Студент", Студент);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        Если ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Первый Тогда
            х1=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток;
        ИначеЕсли ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Второй Тогда
            х2=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток;
        ИначеЕсли ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Третий Тогда
            х3=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток;
        ИначеЕсли ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Червертый Тогда
            х4=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток;
        ИначеЕсли ВыборкаДетальныеЗаписи.Курс=Перечисления.НомерКурса.Пятый Тогда
            х5=ВыборкаДетальныеЗаписи.СуммаОплатыОстаток;
        КонецЕсли;

    КонецЦикла;

    // регистр ОплатыСтудентов Приход
    Движения.ОплатыСтудентов.Записывать = Истина;
    Движение = Движения.ОплатыСтудентов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Студент = Студент;
    Движение.СуммаОплаты = Сумма;
    Движение.ВидУслуги=ВидУслуги;

КонецПроцедуры


Вот тут не знаю как правильно прописать условие, так как сумма оплаты может быть больше х1 и х2, а может быть больще х1 но меньше х2 и т.д.

Или все таки лучьше добавить в документе реквизит курс, и пусть руками разносят по курсам? Единственное прописать проверку:
Если Сумма>х1 Тогда 
Сообщить("Сумма проплаты превышает задолженность, введите сумма не больше " + x1$
КонецЕсли;



logist Подменю пользователя
сообщение 03.07.12, 12:07
Сообщение #24

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(Fabri @ 03.07.12, 12:29) *
а получается ступор.

Ступор получился потому что слишком много кода, некоторые вещи можно сделать на уровне запроса, некоторые оптимизировать.

p.s. "как это сделать" у меня сегодня нет времени расписывать


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Fabri Подменю пользователя
сообщение 06.07.12, 8:59
Сообщение #25

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0

Цитата(logist @ 03.07.12, 13:07) *
Ступор получился потому что слишком много кода, некоторые вещи можно сделать на уровне запроса, некоторые оптимизировать.

p.s. "как это сделать" у меня сегодня нет времени расписывать


Ну может как будет время, то помогите, буду очень благодарен.

Я чуток изменил запрос, так как суммы которы = 0 или больше 0 нас не интересуют, но все равно как дальше, непойму
Ноль=0;    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОплатыСтудентовОстатки.Студент,
        |    ОплатыСтудентовОстатки.ВидУслуги,
        |    ОплатыСтудентовОстатки.Курс,
        |    ОплатыСтудентовОстатки.СуммаОплатыОстаток
        |ИЗ
        |    РегистрНакопления.ОплатыСтудентов.Остатки КАК ОплатыСтудентовОстатки
        |ГДЕ
        |    ОплатыСтудентовОстатки.Студент = &Студент
        |    И ОплатыСтудентовОстатки.ВидУслуги = &ВидУслуги
        |    И ОплатыСтудентовОстатки.СуммаОплатыОстаток < &Ноль";

    Запрос.УстановитьПараметр("ВидУслуги", ВидУслуги);
    Запрос.УстановитьПараметр("Студент", Студент);

logist Подменю пользователя
сообщение 06.07.12, 9:03
Сообщение #26

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Что мешает сделать так, без использования параметра:
<...>
        |    И ОплатыСтудентовОстатки.СуммаОплатыОстаток < 0";

Если "конструктор ругается", то прочтите основы работы с ним, это поможет в будущем избегать написания всякой фигни.

Цитата
буду очень благодарен.

какие размеры и форма благодарности? smile.gif


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Fabri Подменю пользователя
сообщение 06.07.12, 9:09
Сообщение #27

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0

какие размеры и форма благодарности?

Бутылка вкусного домашнего закарпатского вина, новой почтой на ваш адрес smile.gif

Fabri Подменю пользователя
сообщение 12.07.12, 12:17
Сообщение #28

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0

Решил я не автоматом разносить по курсам, а ручками пусть разносят.
Но для удобства в документ ПриемОплаты, добавил ДинамическийСписок, в который выводится задолженность по курсам.
Произвольный запрос, текст запроса:
ВЫБРАТЬ
    ОплатыСтудентовОстатки.Студент,
    ОплатыСтудентовОстатки.ВидУслуги,
    ОплатыСтудентовОстатки.Курс,
    ОплатыСтудентовОстатки.СуммаОплатыОстаток
ИЗ
    РегистрНакопления.ОплатыСтудентов.Остатки КАК ОплатыСтудентовОстатки


Помогите написать условие отбора:

ГДЕ ОплатыСтудентовОстатки.Студент = Обьект.Студент 
И ОплатыСтудентовОстатки.ВидУслуги = Обьект.ВидУслуги


Заранее спасибо.

logist Подменю пользователя
сообщение 12.07.12, 12:36
Сообщение #29

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

При открытии документа сделать:
    ЭлементФормыДинамическийСписок.Параметры.УстановитьЗначениеПараметра("Студент",    Объект.Студент);
    ЭлементФормыДинамическийСписок.Параметры.УстановитьЗначениеПараметра("ВидУслуги",    Объект.ВидУслуги);


Хотя идея динамического списка не очень как по мне.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Fabri,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V  < 1 2
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 14:08
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!