![]() |
|
Запуск процедуры/функции в созданном документе. | ☑ | ||
---|---|---|---|---|
0
sx55
01.02.21
✎
15:53
|
Привет, экспериментирую с документом ПоступлениеНаРасчетныйСчет.
Программно создаю документ ПоступлениеНаРасчетныйСчет, заполняю нужные мне реквизиты и ... При попытке проведения, 1С выдаёт мне... {Документ.ПоступлениеНаРасчетныйСчет.МодульМенеджера(641)}: Ошибка при вызове метода контекста (ВыполнитьПакет) Результат = Запрос.ВыполнитьПакет(); по причине: Ошибка выполнения запроса по причине: Ошибка при выполнении операции над данными: Ошибка SQL: Деление на 0 по причине: Ошибка SQL: Деление на 0 по причине: Деление на 0 значения типа Numeric по причине: Ошибка выполнения запроса по причине: Ошибка при выполнении операции над данными: Ошибка SQL: Деление на 0 по причине: Ошибка SQL: Деление на 0 по причине: Деление на 0 значения типа Numeric При этом, если просто заново указать сумму платежа, которая ведёт к процедуре СуммаДокументаПриИзмененииСервер(), то проведение выполняется без ошибок. Куда копать? Что я делаю не так? И возможно ли, после записи документа, вызвать данную процедуру для корректировки внесённых значений? Спасибо за ответы с разъяснением и желательно примерами. |
|||
1
Ёпрст
гуру
01.02.21
✎
15:56
|
(0) Деление на 0 в тексте пакетного запроса
|
|||
2
sx55
01.02.21
✎
15:57
|
(1) - Логично, я это понял сразу. А как его отловить?
|
|||
3
Ёпрст
гуру
01.02.21
✎
16:00
|
(2) посмотреть текст ошибки, там обычно пишкт в каком модуле и где
|
|||
4
Ёпрст
гуру
01.02.21
✎
16:00
|
конкретно, вот тут:
Документ.ПоступлениеНаРасчетныйСчет.МодульМенеджера(641) 641 строка |
|||
5
sx55
01.02.21
✎
16:02
|
(4) - Это я тоже сразу понял "Результат = Запрос.ВыполнитьПакет();"
Вся функция: Функция ПодготовитьПараметрыПроведения(ДокументСсылка, Отказ, ДоговорДляОтложенногоПроведения = Неопределено) Экспорт ВалютаРеглУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета(); ЭтоОтложенноеПроведение = ЗначениеЗаполнено(ДоговорДляОтложенногоПроведения); ПараметрыПроведения = Новый Структура; ПараметрыПроведения.Вставить("ВалютаРеглУчета", ВалютаРеглУчета); ПараметрыПроведения.Вставить("ДокументСсылка", ДокументСсылка); ПараметрыПроведения.Вставить("ЭтоОтложенноеПроведение", ЭтоОтложенноеПроведение); Запрос = Новый Запрос; МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Запрос.УстановитьПараметр("ВалютаРеглУчета", ВалютаРеглУчета); Запрос.УстановитьПараметр("ЭтоОтложенноеПроведение", ЭтоОтложенноеПроведение); Запрос.УстановитьПараметр("ДоговорДляОтложенногоПроведения", ДоговорДляОтложенногоПроведения); ПодготовитьПараметрыРеквизитыДокумента(Запрос, ПараметрыПроведения, Отказ); Реквизиты = ПараметрыПроведения.ТаблицаРеквизиты[0]; Если Отказ ИЛИ НЕ УчетнаяПолитика.Существует(Реквизиты.Организация, Реквизиты.Дата, Истина, ДокументСсылка) Тогда Отказ = Истина; Возврат ПараметрыПроведения; КонецЕсли; ПлательщикНДФЛ = УчетнаяПолитика.ПлательщикНДФЛ(Реквизиты.Организация, Реквизиты.Дата); ПараметрыПроведения.Вставить("ПлательщикНДФЛ", ПлательщикНДФЛ); ПараметрыПроведения.Вставить("ОрганизацияПрименяетУСН", УчетнаяПолитика.ПрименяетсяУСН(Реквизиты.Организация, Реквизиты.Дата)); Запрос.УстановитьПараметр("ДокументВВалюте", Реквизиты.ВалютаДокумента <> ВалютаРеглУчета); Запрос.УстановитьПараметр("ВалютаДокумента", Реквизиты.ВалютаДокумента); Запрос.УстановитьПараметр("ПлательщикНДФЛ", ПлательщикНДФЛ); Запрос.УстановитьПараметр("ОрганизацияПрименяетУСН", УчетнаяПолитика.ПрименяетсяУСН(Реквизиты.Организация, Реквизиты.Дата)); Запрос.УстановитьПараметр("ОрганизацияПрименяетУСНПатент", УчетнаяПолитика.ПрименяетсяУСНПатент(Реквизиты.Организация, Реквизиты.Дата)); Запрос.УстановитьПараметр("ВестиУчетПоВидамДеятельностиИП", УчетнаяПолитика.ВестиУчетПоВидамДеятельностиИП(Реквизиты.Организация, Реквизиты.Дата)); Запрос.УстановитьПараметр("ОсновнаяНоменклатурнаяГруппа", УчетнаяПолитика.ОсновнаяНоменклатурнаяГруппа(Реквизиты.Организация, Реквизиты.Дата)); Запрос.УстановитьПараметр("ИспользоватьПереводыВПутиПриПеремещенияДенежныхСредств", УчетнаяПолитика.ИспользоватьПереводыВПутиПриПеремещенияДенежныхСредств(Реквизиты.Организация, Реквизиты.Дата)); Если Реквизиты.БезЗакрывающихДокументов Тогда Запрос.УстановитьПараметр("ПрочиеВнереализационныеДоходыРасходы", ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ПрочиеДоходыИРасходы.ПрочиеВнереализационныеДоходыРасходы")); КонецЕсли; Для каждого Колонка Из ПараметрыПроведения.ТаблицаРеквизиты.Колонки Цикл Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]); КонецЦикла; НомераТаблиц = Новый Структура; Запрос.Текст = ТекстЗапросаРеквизитыДокумента(НомераТаблиц) + ТекстЗапросаТаблицыДокумента(НомераТаблиц) + ТекстЗапросаПогашениеЗадолженности(НомераТаблиц, ПараметрыПроведения, Реквизиты) + ТекстЗапросаПриобретениеВалюты(НомераТаблиц, ПараметрыПроведения, Реквизиты) + ТекстЗапросаПродажаВалюты(НомераТаблиц, ПараметрыПроведения, Реквизиты) + ТекстЗапросаПрочееПоступление(НомераТаблиц, ПараметрыПроведения, Реквизиты) + ТекстЗапросаПоступлениеМПЗИП(НомераТаблиц, ПараметрыПроведения, Реквизиты) + ТекстЗапросаОплатаСчетов(НомераТаблиц, ПараметрыПроведения, Реквизиты) + ТекстЗапросаПокупкаПродажаВалютыУСН(НомераТаблиц, ПараметрыПроведения, Реквизиты) + ТекстЗапросаРегистрацияОтложенныхРасчетовСКонтрагентами(НомераТаблиц, ПараметрыПроведения, Реквизиты) ; Результат = Запрос.ВыполнитьПакет(); Для каждого НомерТаблицы Из НомераТаблиц Цикл ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить()); КонецЦикла; Реквизиты = ПараметрыПроведения.Реквизиты[0]; Реквизиты.Содержание = ТекстСодержанияПроводокДокумента(Реквизиты); Если ПараметрыПроведения.РасшифровкаПлатежа <> Неопределено Тогда ПараметрыПроведения.РасшифровкаПлатежа.ЗаполнитьЗначения(Реквизиты.Содержание, "Содержание"); КонецЕсли; Возврат ПараметрыПроведения; КонецФункции |
|||
6
ZDenis
01.02.21
✎
16:12
|
(0) Значит не все нужные реквизиты заполняешь программно.
|
|||
7
hhhh
01.02.21
✎
16:13
|
(5) текст запроса смотрите. Ищите там такую косую черту "/", это называется деление. И смотрите знаменатель у этого деления, почему он вдруг 0?
|
|||
8
Ёпрст
гуру
01.02.21
✎
16:13
|
(5) ну вот поставь точку останова перед выполнить пакет и посмотри, чему равен Запрос.Текст.. и сымотри, где у тебя там может быть в знаменателе нуль
|
|||
9
sx55
01.02.21
✎
16:18
|
(7) - Спасибо, завтра попробую. )))
(8) - И тебе спасибо, обязательно так сделаю. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |