Имя: Пароль:
1C
1С v8
Заявка на расходование средств
0 ColonelAp4u
 
09.04.15
11:55
Добрый день помогите разобраться с не большой проблемой. Есть документ Заявка на расходование средств, который можно создавать на один и тот же документ 2 и более раз превышая сумму по документу. Сделал регистр накопления в который ПТИУ делают расход суммы по документу и заявка на расходование средств приход суммы, в модуле заявки перед запись проверяю по данному документу были ли уже заявки что бы не плодили новые, сделал запрос но некоторые параметры хранятся в ТЧ документа подскажите как их достать от туда? Вот запрос

    Для каждого Стр из ССылка.РасшифровкаПлатежа Цикл
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
            |    ДляЗаявокНаРасходСредствОстатки.ДокументРасчетаКонтрагента,
            |    ДляЗаявокНаРасходСредствОстатки.СуммаВзаиморасчетовОстаток
            |ИЗ
            |    РегистрНакопления.ДляЗаявокНаРасходСредств.Остатки(
            |            &Дата,
            |            ДоговорКонтрагента = &ДоговорКонтрагента
            |                И ДокументРасчетаКонтрагента = &ДокументРасчетаКонтрагента
            |                И Контрагент = &Контрагент
            |                И Организация = &Организация) КАК ДляЗаявокНаРасходСредствОстатки";
            Запрос.УстановитьПараметр("ДокументРасчетовСКонтрагентом", Стр.ДокументРасчетовСКонтрагентом);
            Запрос.УстановитьПараметр("Контрагент", ССылка.Контрагент);
            Запрос.УстановитьПараметр("Организация", ССылка.Организация);
            Запрос.УстановитьПараметр("ДоговорКонтрагента", Стр.ДоговорКонтрагента);
            Запрос.УстановитьПараметр("Дата", ТекущаяДата());
            Результат = Запрос.Выполнить();
            Выборка = Результат.Выбрать();
            Пока Выборка.Следующий() Цикл
                СуммаОстаткаПоЗаявке=СуммаОстаткаПоЗаявке+Выборка.СуммаВзаиморасчетовОстаток;
            КонецЦикла;
        КонецЦикла;
        Если СуммаОстаткаПоЗаявке = 0 Тогда
                Отказ=Истина;
                #Если Клиент Тогда
                    Сообщить("Документ "+Строка(ССылка)+" не отправлен т.к. сумма оплаты "+ССылка.СуммаДокумента+"превышает сумму остатка по заявке "+СуммаОстаткаПоЗаявке);
                #КонецЕсли
            КонецЕсли;
        Исключение
        КонецПопытки;
1 ColonelAp4u
 
09.04.15
11:57
параметры Договор контра и ДокументРасчетовСКонтрагентом при первом проведении заявки подставлются нормально, но если я в начале сумму указал в половину меньше и потом делаю вторую заявку на этот же док со второй частью суммы то эти параметры пустые
2 DrShad
 
09.04.15
12:03
не самая лучшая идея
3 ColonelAp4u
 
09.04.15
12:06
не спорю но ситуация с двумя платежками по одному документу тоже не есть гуд
4 DrShad
 
09.04.15
12:40
а что за конфа?
5 ColonelAp4u
 
09.04.15
12:56
ут 10,3 8,2
6 ColonelAp4u
 
09.04.15
12:58
может подскажите более лучший вариант проверки чтобы не возникало таких ситуаций?
7 DrShad
 
09.04.15
13:05
к сожалений с 10-кой давно не работаю
но варианты есть, наверняка есть регистр взаиморасчетов по документам?
8 Михаил Козлов
 
09.04.15
13:15
(6) При вводе на основании ПТиУ можно попытаться получить остатки из РН ВзаиморасчетыСКонтрагентами по договору (или договор + сделка).
9 ColonelAp4u
 
09.04.15
15:40
Если кому интересно сделал вот так и теперь если одна заявка то больше чем сумма документа поступления она быть не может. Вот код, может чуть криво но работает!
Попытка    
        Для каждого Стр Из Ссылка.РасшифровкаПлатежа Цикл
            СуммаОстаткаПоЗаявке = 0;
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
            |    ЗаявкиНаРасходованиеСредствОстатки.ДокументРасчетовСКонтрагентом,
            |    ЗаявкиНаРасходованиеСредствОстатки.СуммаВзаиморасчетовОстаток
            |ИЗ
            |    РегистрНакопления.ЗаявкиНаРасходованиеСредств.Остатки(, ) КАК ЗаявкиНаРасходованиеСредствОстатки
            |ГДЕ
            |    ЗаявкиНаРасходованиеСредствОстатки.ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом";
            Запрос.УстановитьПараметр("ДокументРасчетовСКонтрагентом", Стр.ДокументРасчетовСКонтрагентом);
            Результат = Запрос.Выполнить();
            Выборка = Результат.Выбрать();
            Если Не Выборка.Следующий() Тогда
                СуммаОстаткаПоЗаявке = Стр.ДокументРасчетовСКонтрагентом.СуммаДокумента;
            Иначе    
                Выборка.Следующий();
                СуммаОстаткаПоЗаявке=Стр.ДокументРасчетовСКонтрагентом.СуммаДокумента-Выборка.СуммаВзаиморасчетовОстаток;
            КонецЕсли;
            Если Стр.СуммаПлатежа > СуммаОстаткаПоЗаявке Тогда
                Если РольДоступна("ПолныеПрава") Тогда
                    Отказ = Ложь;
                    Сообщить("Под Вашими Правами проведение Разрешено!!!");
                Иначе
                    Отказ=Истина;                
                    Сообщить("Документ "+Строка(ССылка)+" не проведен т.к. сумма оплаты "+Стр.СуммаПлатежа+" превышает сумму остатка по заявке "+СуммаОстаткаПоЗаявке);
                КонецЕсли;
            КонецЕсли;
            
        КонецЦикла;
        
    Исключение
    КонецПопытки;
10 ColonelAp4u
 
09.04.15
15:42
блин как то по китайски написал в (9)
Если 1 заявка то она не может быть больше суммы документа поступления!
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.