|
Обработка создание ППИ из заявок на расходование средств | ☑ | ||
---|---|---|---|---|
0
ColonelAp4u
19.06.15
✎
12:33
|
Добрый день подскажите пожалуйста есть обработка которая создает платежное поручение из заявок на расходование средств, иногда попадаются заявки в кооторых некоторые документы расчета с контрагентом уже оплачены и я не хочу их переносить в Таб часть платежки,
Вот код обработки Сч = 0; Пока Сч < НайденныеСтроки.Количество() Цикл Стр = НайденныеСтроки.Получить(Сч); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Контрагент, | ВложенныйЗапрос.ДоговорКонтрагента, | ВложенныйЗапрос.ДокументРасчетовСКонтрагентом, | ВложенныйЗапрос.Организация, | ВложенныйЗапрос.Остаток, | ВложенныйЗапрос.Удалить |ИЗ | (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Организация КАК Организация, | -ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК Остаток, | ВЫБОР | КОГДА -ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток < 0 | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК Удалить | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки( | &Дата, | ДоговорКонтрагента = &ДоговорКонтрагента | И ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки) КАК ВложенныйЗапрос |ГДЕ | НЕ ВложенныйЗапрос.Удалить = ИСТИНА"; Запрос.УстановитьПараметр("Дата", ТекущаяДата()); Запрос.УстановитьПараметр("ДоговорКонтрагента", Стр.ДоговорКонтрагента); Запрос.УстановитьПараметр("ДокументРасчетовСКонтрагентом", стр.ДокументРасчетовСКонтрагентом); Результат = Запрос.Выполнить(); ВыборкаЗапроса = Результат.Выбрать(); Если Не ВыборкаЗапроса.Следующий() Тогда НайденныеСтроки.Удалить(Стр); Иначе Сч = Сч + 1; Если Зая<> Стр.ЗаявкаНаРасходование Тогда ТекЗаявка=ЗаявкиНаРасходованиеСредств.Найти(Стр.ЗаявкаНаРасходование, "Заявка"); Оплатить=ТекЗаявка.Оплатить; КонецЕсли; Если Оплатить=0 Тогда Продолжить; КонецЕсли; СтрокаПлатеж=Док.РасшифровкаПлатежа.Добавить(); Если Оплатить > Стр.СуммаПлатежа Тогда СтрокаПлатеж.СуммаВзаиморасчетов=Стр.СуммаВзаиморасчетов; СтрокаПлатеж.СуммаПлатежа = Стр.СуммаПлатежа; Оплатить=Оплатить-Стр.СуммаПлатежа; Иначе СтрокаПлатеж.СуммаВзаиморасчетов=Оплатить; СтрокаПлатеж.СуммаПлатежа = Оплатить; Оплатить=0; КонецЕсли; СтрокаПлатеж.КурсВзаиморасчетов = Док.КурсДокумента; СтрокаПлатеж.КратностьВзаиморасчетов = Док.КратностьДокумента; СтрокаПлатеж.СтавкаНДС = Док.Контрагент.ОсновнойНДС; СтрокаПлатеж.Сделка = Стр.Сделка; СтрокаПлатеж.ДокументРасчетовСКонтрагентом = Стр.ДокументРасчетовСКонтрагентом; СтрокаПлатеж.ДоговорКонтрагента = Стр.ДоговорКонтрагента; Попытка Если ЗначениеЗаполнено(Стр.Сделка) И ТипЗнч(Стр.Сделка) = Тип("ДокументСсылка.ЗаказПоставщику") И Не ЗначениеЗаполнено(Стр.ДокументРасчетовСКонтрагентом) Тогда Док.ДатаРасчетов = Стр.Сделка.ДатаПоступления; Иначе ДатаРасчетовНовая = Основание.Дата; Если ДатаРасчетовНовая = Неопределено Тогда ДатаРасчетовНовая = ТекущаяДата(); КонецЕсли; Док.ДатаРасчетов=ДатаРасчетовНовая; КонецЕсли; Если ЗначениеЗаполнено(Стр.ДокументРасчетовСКонтрагентом) И ТипЗнч(Стр.ДокументРасчетовСКонтрагентом) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда Док.ДатаРасчетов = Стр.ДокументРасчетовСКонтрагентом.Дата; КонецЕсли; Исключение КонецПопытки; УправлениеДенежнымиСредствами.ПересчитатьСуммуНДС(СтрокаПлатеж); СтрокаПлатеж.СтатьяДвиженияДенежныхСредств = Стр.СтатьяДвиженияДенежныхСредств; СтрокаПлатеж.Проект = Стр.Проект; СтрокаПлатеж.ДокументПланированияПлатежа = Стр.ЗаявкаНаРасходование; СтрокаПлатеж.КурсВзаиморасчетовПлан = СтрокаПлатеж.КурсВзаиморасчетов; СтрокаПлатеж.СуммаПлатежаПлан = СтрокаПлатеж.СуммаПлатежа; Зая =Стр.ЗаявкаНаРасходование; КонецЕсли; |
|||
1
ColonelAp4u
19.06.15
✎
12:39
|
Проблема в том что как только программа увидела что док оплачен она удаляет строку и на этом моменте меня кидает в исключение!
|
|||
2
ColonelAp4u
19.06.15
✎
12:40
|
НайденныеСтроки.Удалить(Стр);
|
|||
3
ColonelAp4u
19.06.15
✎
12:53
|
Еще проверял на тестовом серваке создал 3 заявки 1 полностью оплачена 2 такая же но без оплаты и 3 другая тоже без оплаты, в список заявок попали всего 2 которые типа нужно оплатить. При нажатии на оплату создается док ППИ в котором есть только доки из заявки 3 в отладчике все строки из заявки 2 удалились. Перекинул обработку на главный серв и сразу такая фигня кидает на исключение как только доходит до строки (2)
|
|||
4
ColonelAp4u
19.06.15
✎
13:08
|
Подскажите плиз в какую сторону копать нужно?
|
|||
5
ColonelAp4u
19.06.15
✎
14:51
|
АП подскажите в чем может быть косяк?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |