|
Указана сумма взаиморасчетов, превышающая непогашенный остаток по документу расчетов... | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
13.12.19
✎
19:40
|
В УПП при проведении документов оплаты иногда возникает ошибка: "Указана сумма взаиморасчетов, превышающая непогашенный остаток по документу расчетов с контрагентом!". Обычно она возникает когда в расшифровке платежа документа оплаты (ПКО и Оплата от покупателя платежной картой) не верно указан документ расчетов с контрагентом. А тут вроде все верно указано, но ошибка все равно есть. Стал копать, вышел на процедуру УправлениеВзаиморасчетами.ОтражениеОплатыВРегистреОперативныхРасчетовПоДокументам(), привожу ее фрагмент:
Запрос.Текст = "ВЫБРАТЬ | ВзаиморасчетыПоДокументамОстатки.ДоговорКонтрагента, | ВзаиморасчетыПоДокументамОстатки.Сделка, | ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом, | ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток * &ЗнакОстатка КАК СуммаВзаиморасчетов, | ВзаиморасчетыПоДокументамОстатки.СуммаРеглОстаток * &ЗнакОстатка КАК СуммаРегл |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(, | Организация = &Организация | И ВидРасчетовСКонтрагентом = &ВидРасчетовСКонтрагентом | И УпрУчет = &УпрУчет | И (ДоговорКонтрагента, Сделка, ДокументРасчетовСКонтрагентом) В (ВЫБРАТЬ ДоговорКонтрагента, Сделка, ДокументРасчетовСКонтрагентом ИЗ ТаблицаПлатежей)) КАК ВзаиморасчетыПоДокументамОстатки // | И ДоговорКонтрагента = &ДоговорКонтрагента // | И Сделка = &Сделка // | И ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыПоДокументамОстатки |ГДЕ | ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток * &ЗнакОстатка > 0 | |ДЛЯ ИЗМЕНЕНИЯ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки"; Запрос.УстановитьПараметр("Организация", СтруктураШапкиДокумента.Организация); Запрос.УстановитьПараметр("ВидРасчетовСКонтрагентом", ВидРасчетовСКонтрагентом); Запрос.УстановитьПараметр("УпрУчет", УпрУчет); Запрос.УстановитьПараметр("ЗнакОстатка",ЗнакОстатка); // Запрос.УстановитьПараметр("ДоговорКонтрагента", ТаблицаПлатежей[0].ДоговорКонтрагента); // Запрос.УстановитьПараметр("Сделка", ТаблицаПлатежей[0].Сделка); // Запрос.УстановитьПараметр("ДокументРасчетовСКонтрагентом", ТаблицаПлатежей[0].ДокументРасчетовСКонтрагентом); ОстаткиПоРасчетам = Запрос.Выполнить().Выгрузить(); ДвиженияРегистраОперативныхРасчетов = Движения.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов; Если СтруктураШапкиДокумента.Свойство("РежимПроведения") Тогда РежимПроведения = СтруктураШапкиДокумента.РежимПроведения; Иначе РежимПроведения = РежимПроведенияДокумента.Неоперативный; КонецЕсли; ЗапрещатьПревышениеОстатков = РежимПроведения = РежимПроведенияДокумента.Оперативный; Для каждого СтрокаПлатежа Из ТаблицаПлатежей Цикл ВзаиморасчетыВВалютеРеглУчета = СтрокаПлатежа.ВалютаВзаиморасчетов = СтруктураШапкиДокумента.ВалютаРегламентированногоУчета; ДелатьДвиженияПоСуммеРегл = СтруктураШапкиДокумента.ОтражатьВРегламентированномУчете И НЕ ВзаиморасчетыВВалютеРеглУчета; ЭтоПогашениеКредДокумента = СтрокаПлатежа.ДокументРасчетовСКонтрагентом <> Неопределено; Если ЭтоПогашениеКредДокумента Тогда ОтборПоОстаткам = Новый Структура("ДоговорКонтрагента, Сделка, ДокументРасчетовСКонтрагентом", СтрокаПлатежа.ДоговорКонтрагента, СтрокаПлатежа.Сделка, СтрокаПлатежа.ДокументРасчетовСКонтрагентом); СуммаВзаиморасчетовОстаток = 0; СуммаРеглОстаток = 0; СтрокиОстатка = ОстаткиПоРасчетам.НайтиСтроки(ОтборПоОстаткам); ТекстСуммаВзаиморасчетов = ""; Для каждого ОстатокАванса Из СтрокиОстатка Цикл ТекстСуммаВзаиморасчетов = ТекстСуммаВзаиморасчетов + ?(ПустаяСтрока(ТекстСуммаВзаиморасчетов), "", " + ") + Строка(СтрокиОстатка[0].СуммаВзаиморасчетов); СуммаВзаиморасчетовОстаток = СуммаВзаиморасчетовОстаток + СтрокиОстатка[0].СуммаВзаиморасчетов; СуммаРеглОстаток = СуммаРеглОстаток + СтрокиОстатка[0].СуммаРегл; КонецЦикла; Сообщить("ВидРасчетовСКонтрагентом: " + ВидРасчетовСКонтрагентом + ", УпрУчет: " + УпрУчет + ", ЗнакОстатка: " + ЗнакОстатка + ", Количество ТаблицаПлатежей: " + ТаблицаПлатежей.Количество() + ", Количество ОстаткиПоРасчетам: " + ОстаткиПоРасчетам.Количество() + ", Количество СтрокиОстатка: " + СтрокиОстатка.Количество() + ", СуммаВзаиморасчетов = " + ТекстСуммаВзаиморасчетов, СтатусСообщения.Информация); Если СтрокаПлатежа.СуммаВзаиморасчетов > СуммаВзаиморасчетовОстаток Тогда ТекстСообщения = "Указана сумма взаиморасчетов, превышающая непогашенный остаток по документу расчетов с контрагентом! | Договор: " + СтрокаПлатежа.ДоговорКонтрагентаПредставление + ?(НЕ ЗначениеЗаполнено(СтрокаПлатежа.СделкаПредставление),", сделка не указана",", сделка: " + СтрокаПлатежа.СделкаПредставление)+ ", документ расчетов: " + СтрокаПлатежа.ДокументРасчетовСКонтрагентомПредставление + "; | Остаток " + СуммаВзаиморасчетовОстаток + " " + СтрокаПлатежа.ВалютаВзаиморасчетовПредставление + "; " + " указана сумма " + СтрокаПлатежа.СуммаВзаиморасчетов + " " + СтрокаПлатежа.ВалютаВзаиморасчетовПредставление + "; " + " превышение " + (СтрокаПлатежа.СуммаВзаиморасчетов - СуммаВзаиморасчетовОстаток) + " " + СтрокаПлатежа.ВалютаВзаиморасчетовПредставление; Если ЗапрещатьПревышениеОстатков Тогда ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения, Отказ, Заголовок); Возврат; Иначе ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения, , Заголовок); КонецЕсли; КонецЕсли; Пробовал запрос менять - не помогло, в ряде документов ошибка: ВидРасчетовСКонтрагентом: По реализации, УпрУчет: Да, ЗнакОстатка: 1, Количество ТаблицаПлатежей: 1, Количество ОстаткиПоРасчетам: 1, Количество СтрокиОстатка: 1, СуммаВзаиморасчетов = 20 Проведение документа: Оплата от покупателя платежной картой ИП000000527 от 01.12.2019 11:29:50 (Оплата от покупателя) Указана сумма взаиморасчетов, превышающая непогашенный остаток по документу расчетов с контрагентом! Договор: Продажа ИП от 24.05.2019, сделка не указана, документ расчетов: Реализация товаров и услуг МИП00000547 от 30.11.2019 12:37:29; Остаток 20 RUB; указана сумма 2 810 RUB; превышение 2 790 RUB Смотрю РН ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов с отбором по ДокументРасчетовСКонтрагентом вижу как минимум две записи: с регистраторами ДокументРасчетовСКонтрагентом и документами оплаты. Но почему: "Остаток 20 RUB" (чаще 0)? |
|||
1
Mikhail Volkov
14.12.19
✎
08:22
|
Мне бы просмотреть из чего состоит этот "Остаток 20 RUB", для этого надо вставить в запрос Регистратор. Как мне переделать запрос?
|
|||
2
tty12
14.12.19
✎
08:25
|
(1) А отчет "Ведомость по взаиморасчетам с контрагентами" это не показывает разве?
|
|||
3
Mikhail Volkov
14.12.19
✎
09:28
|
(2) По конкретному документу расчетов с контрагентом нет. Меня интересует РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов, нет ли какого мусора в нем? Чтобы почистить его.
|
|||
4
rphosts
14.12.19
✎
09:44
|
(3) у вас оплата в разрезе контрагентов, договоров, партий, СФ?
Начните с того что-бы сами понять как у вас ведётся учет, потом тут изложите (здесь телепатов не много), а потом формулируйте вопрос. |
|||
5
Mikhail Volkov
14.12.19
✎
10:35
|
(4) Оплата ведется в разрезе контрагентов, договоров, и документов расчетов с контрагентом (за что оплата). Обычно ошибка возникает когда этот документ указан неверно. А тут вроде все правильно указано, и все равно ошибка!?
|
|||
6
Mikhail Volkov
14.12.19
✎
10:36
|
+ Запрос к РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки не позволяет детализировать "Остаток 20 RUB". Хочу в консоль запросов написать свой запрос для конкретного случая документа расчетов с контрагентом. Чтобы выводил колонки: регистратор, его СуммаВзаиморасчетов, и Остаток. Понять откуда этот "Остаток 20 RUB"?
|
|||
7
tty12
14.12.19
✎
12:04
|
(6) Ну попробуй в консоли накидать запросик по регистру, только не по Остаткам, а просто по ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов. И в условии укажи что-то типа Регистратор = &ДокументПродажи ИЛИ ДокументРасчетовСКонтрагентом = &ДокументПродажи", вдруг предоплата какая образовалась...
|
|||
8
Mikhail Volkov
14.12.19
✎
12:31
|
(7) Ну это я и так вижу по в РН ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов с отбором ДокументРасчетовСКонтрагентом. Мне именно Остатки нужны. Пока написал:
ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.СуммаВзаиморасчетов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ВидРасчетовСКонтрагентом, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.УпрУчет, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Организация ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки ПО ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ДокументРасчетовСКонтрагентом = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом ГДЕ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом Но в колонке СуммаВзаиморасчетовОстаток по всем строкам один конечный остаток. Пытался в Параметры виртуальной таблицы ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки период вставить: ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Период - говорит: "Поле не найдено ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Период"! Как сделать, чтобы в колонке СуммаВзаиморасчетовОстаток был остаток на каждый документ Регистратора? |
|||
9
Злопчинский
14.12.19
✎
16:01
|
(8) ну.. если регистратор не фигурирует в измерении регистра - то как-бэ проблематично...
|
|||
10
Злопчинский
14.12.19
✎
16:03
|
... при выводе строк _движений_ (по регистраторам) считать остаток на регистратор плюсую-минусуя движения к предыдущей выведенной строке.
если запросом - то тут задача видимо сводится к получению нарастающего итога... ??? |
|||
11
Mikhail Volkov
14.12.19
✎
18:52
|
(10) В консоль запросов это не сделать, или сложно? Да, в общем-то не нужно, разобрался в 2-х случаях: клиент вроде платит наличными, ему отбивают чек на всю сумму. А денег у клиента не оказалось (или не хватает). Сразу отбивают возвратный чек (и чек на неполную сумму). В ПКО в расшифровке платежа указан документ расчетов с контрагентом. А в РКО нет, ПКО. Запрос (0) видит только 1-й ПКО, а РКО не видит. Когда проводится 2-й ПКО или Оплата от покупателя платежной картой, то выдает эту ошибку, что якобы документ уже оплачен!
|
|||
12
Mikhail Volkov
15.12.19
✎
08:23
|
В РКО в расшифровке платежа даже не позволяет выбрать Реализацию товаров и услуг (ту же самую, что в ПКО) в качестве документа расчетов с контрагентом!?
|
|||
13
Mikhail Volkov
16.12.19
✎
08:55
|
У меня чеки не бьют в УПП, в Альфа-Авто. В УПП данные перекидываются для бух. учета. В правилах обмена РКО расшифровку платежа заменяю на расшифровку платежа ПКО:
Для каждого СтрокаТЧ из Объект.РасшифровкаПлатежа Цикл Если ЗначениеЗаполнено(СтрокаТЧ.ДокументРасчетовСКонтрагентом) И (ТипЗнч(СтрокаТЧ.ДокументРасчетовСКонтрагентом) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Или ТипЗнч(СтрокаТЧ.ДокументРасчетовСКонтрагентом) = Тип("ДокументСсылка.ОплатаОтПокупателяПлатежнойКартой")) И Не СтрокаТЧ.ДокументРасчетовСКонтрагентом.Ссылка.Пустая() И СтрокаТЧ.ДокументРасчетовСКонтрагентом.РасшифровкаПлатежа.Количество() > 0 Тогда ПКО = СтрокаТЧ.ДокументРасчетовСКонтрагентом; Объект.РасшифровкаПлатежа.Очистить(); Для каждого СтрокаПКО Из ПКО.РасшифровкаПлатежа Цикл НоваяСтрока = Объект.РасшифровкаПлатежа.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаПКО); КонецЦикла; Прервать; КонецЕсли; КонецЦикла; Вроде сейчас нет этой ошибки... |
|||
14
Mikhail Volkov
16.12.19
✎
17:29
|
(13) > Вроде сейчас нет этой ошибки...
При проведении ПКО, а при проведении РКО, в котором заменил расшифровку платежа, появилась! Те же параметры запроса, только ЗнакОстатка -1. |
|||
15
Mikhail Volkov
17.12.19
✎
13:47
|
Тогда проще при загрузке ПКО проверять наличие подчиненного РКО. Если есть такой и проведен, то из расшифровки платежа убирать ДокументРасчетовСКонтрагентом.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |