Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
11 Дек 2017, 07:10
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Обработка создание ППИ из заявок на расходование средств  (Прочитано 1016 раз)

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

Оффлайн ColonelAp4u

  • *
  • Сообщений: 43
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-10-24
  • Сайт: 
  • Профессия: Программист 1С
Добрый день подскажите пожалуйста есть обработка которая создает платежное поручение из заявок на расходование средств, иногда попадаются заявки в кооторых некоторые документы расчета с контрагентом уже оплачены и я не хочу их переносить в Таб часть платежки,
Вот код обработки
Сч = 0;
    Пока Сч < НайденныеСтроки.Количество() Цикл
    Стр = НайденныеСтроки.Получить(Сч);

Запрос = Новый Запрос;
                        Запрос.Текст = "ВЫБРАТЬ
                        |    ВложенныйЗапрос.Контрагент,
                        |    ВложенныйЗапрос.ДоговорКонтрагента,
                        |    ВложенныйЗапрос.ДокументРасчетовСКонтрагентом,
                        |    ВложенныйЗапрос.Организация,
                        |    ВложенныйЗапрос.Остаток,
                        |    ВложенныйЗапрос.Удалить
                        |ИЗ
                        |    (ВЫБРАТЬ
                        |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент КАК Контрагент,
                        |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента,
                        |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
                        |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Организация КАК Организация,
                        |        -ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК Остаток,
                        |        ВЫБОР
                        |            КОГДА -ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток < 0
                        |                ТОГДА ИСТИНА
                        |            ИНАЧЕ ЛОЖЬ
                        |        КОНЕЦ КАК Удалить
                        |    ИЗ
                        |        РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(
                        |                &Дата,
                        |                ДоговорКонтрагента = &ДоговорКонтрагента
                        |                    И ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки) КАК ВложенныйЗапрос
                        |ГДЕ
                        |    НЕ ВложенныйЗапрос.Удалить = ИСТИНА";
                        Запрос.УстановитьПараметр("Дата", ТекущаяДата());
                        Запрос.УстановитьПараметр("ДоговорКонтрагента", Стр.ДоговорКонтрагента);
                        Запрос.УстановитьПараметр("ДокументРасчетовСКонтрагентом", стр.ДокументРасчетовСКонтрагентом);               
                        Результат = Запрос.Выполнить();
                        ВыборкаЗапроса = Результат.Выбрать();
                        Если Не ВыборкаЗапроса.Следующий() Тогда
                            НайденныеСтроки.Удалить(Стр);                   
                        Иначе
                            Сч = Сч + 1;
                            Если Зая<> Стр.ЗаявкаНаРасходование Тогда                   
                                ТекЗаявка=ЗаявкиНаРасходованиеСредств.Найти(Стр.ЗаявкаНаРасходование, "Заявка");               
                                Оплатить=ТекЗаявка.Оплатить;
                            КонецЕсли;   
                           
                            Если Оплатить=0 Тогда
                                Продолжить;
                            КонецЕсли;
                           
                            СтрокаПлатеж=Док.РасшифровкаПлатежа.Добавить();
                            Если Оплатить > Стр.СуммаПлатежа Тогда
                                СтрокаПлатеж.СуммаВзаиморасчетов=Стр.СуммаВзаиморасчетов;
                                СтрокаПлатеж.СуммаПлатежа = Стр.СуммаПлатежа;
                                Оплатить=Оплатить-Стр.СуммаПлатежа;
                            Иначе   
                                СтрокаПлатеж.СуммаВзаиморасчетов=Оплатить;
                                СтрокаПлатеж.СуммаПлатежа = Оплатить;
                                Оплатить=0;
                            КонецЕсли;   
                           
                            СтрокаПлатеж.КурсВзаиморасчетов      = Док.КурсДокумента;
                            СтрокаПлатеж.КратностьВзаиморасчетов = Док.КратностьДокумента;
                            СтрокаПлатеж.СтавкаНДС                         = Док.Контрагент.ОсновнойНДС;
                            СтрокаПлатеж.Сделка                             = Стр.Сделка;
                            СтрокаПлатеж.ДокументРасчетовСКонтрагентом     = Стр.ДокументРасчетовСКонтрагентом;
                            СтрокаПлатеж.ДоговорКонтрагента                 = Стр.ДоговорКонтрагента;
                            Попытка
                               
                                Если ЗначениеЗаполнено(Стр.Сделка) И ТипЗнч(Стр.Сделка) = Тип("ДокументСсылка.ЗаказПоставщику") И Не ЗначениеЗаполнено(Стр.ДокументРасчетовСКонтрагентом) Тогда
                                   
                                    Док.ДатаРасчетов = Стр.Сделка.ДатаПоступления;
                                   
                                Иначе
                                   
                                    ДатаРасчетовНовая = Основание.Дата;
                                    Если ДатаРасчетовНовая = Неопределено Тогда
                                        ДатаРасчетовНовая = ТекущаяДата();
                                    КонецЕсли;   
                                    Док.ДатаРасчетов=ДатаРасчетовНовая;
                                   
                                КонецЕсли;
                               
                                Если ЗначениеЗаполнено(Стр.ДокументРасчетовСКонтрагентом) И ТипЗнч(Стр.ДокументРасчетовСКонтрагентом) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
                                   
                                    Док.ДатаРасчетов = Стр.ДокументРасчетовСКонтрагентом.Дата;   
                                   
                                КонецЕсли;
                               
                            Исключение
                               
                            КонецПопытки;
                           
                            УправлениеДенежнымиСредствами.ПересчитатьСуммуНДС(СтрокаПлатеж);
                           
                            СтрокаПлатеж.СтатьяДвиженияДенежныхСредств     = Стр.СтатьяДвиженияДенежныхСредств;
                            СтрокаПлатеж.Проект                             = Стр.Проект;
                            СтрокаПлатеж.ДокументПланированияПлатежа     = Стр.ЗаявкаНаРасходование;
                            СтрокаПлатеж.КурсВзаиморасчетовПлан             = СтрокаПлатеж.КурсВзаиморасчетов;
                            СтрокаПлатеж.СуммаПлатежаПлан                 = СтрокаПлатеж.СуммаПлатежа;   
                           
                            Зая =Стр.ЗаявкаНаРасходование;

                        КонецЕсли;

Проблема в том что как только программа увидела что док оплачен она удаляет строку и на этом моменте меня кидает в исключение!
НайденныеСтроки.Удалить(Стр);


Оффлайн ColonelAp4u

  • *
  • Сообщений: 43
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-10-24
  • Сайт: 
  • Профессия: Программист 1С

И вот я не могу понять в связи с чем это происходит!

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Для начала переписать запрос так, чтобы не нужно было выполнять запрос в цикле.


Теги:
 

Ошибка при загрузке данных через (Обработка "Выгрузка и загрузка данных XML")

Автор Сергей_87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 8547
Последний ответ 26 Апр 2012, 23:08
от Dethmontt
Обработка "ПодборНоменклатуры"

Автор BigAnnРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2955
Последний ответ 18 Апр 2012, 20:38
от Dethmontt
Обработка "СогласованиеЗаявок"

Автор Денис АндрушкоРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 798
Последний ответ 24 Сен 2016, 00:37
от Денис Андрушко
Программное создание документа на основании документа

Автор GolickoffРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 4454
Последний ответ 23 Апр 2015, 08:45
от Golickoff
Автоматическое создание " Заполнение" документа

Автор mashencev_antonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 4437
Последний ответ 06 Мар 2014, 14:48
от mashencev_anton

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
160 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
46 Сообщений
andron81_81
44 Сообщений
AIFrame
35 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
27 Сообщений
Golickoff Golickoff
27 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 289
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal