|
1с КА 2.4 Ошибка при вызове метода контекста (Записать) Поступление безналичных ДС | ☑ | ||
---|---|---|---|---|
0
mihalich979
10.07.19
✎
11:47
|
при проведении поступления от клиента
вываливается ошибка: {ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1886)}: Ошибка при вызове метода контекста (Записать) Результат = Форма.Записать(ПараметрыЗаписи); по причине: Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {ОбщийМодуль.ПроведениеСерверУТ.Модуль(405)}: Ошибка при вызове метода контекста (Записать) Объект.Движения.Записать(); по причине: Ошибка при выполнении обработчика - 'ПриЗаписи' что самое интересное если снять галку "Проведено банком" то документ проводится, но естественно проводок не делает. ставим обратно галку "проведено банком" и документ перестает проводиться и вываливается ошибка. |
|||
1
PiotrLoginov
10.07.19
✎
12:23
|
других сообщений при ошибке нет? не верится, что вся информация заканчивается на строке "по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'" |
|||
2
mihalich979
10.07.19
✎
12:48
|
(1) именно так.
|
|||
3
mihalich979
10.07.19
✎
14:22
|
вечером сниму копию и локально по отлаживаю.
|
|||
4
rilovnikova
10.07.19
✎
22:14
|
Здравствуйте, получилось решить? У меня такая же проблема в ут, не могу найти, в чем косяк
|
|||
5
palsergeich
10.07.19
✎
22:23
|
Без отладки никак.
У меня валилось на корявой реализации нового механизма взаиморасчетов в ЕРП, только отладка, только хардкор |
|||
6
palsergeich
10.07.19
✎
22:23
|
Точно с таким же текстом
|
|||
7
palsergeich
10.07.19
✎
22:27
|
И останова по ошибке не ловит)
Они по ходу методолога поменяли, а вот сделать нормально - нишмогла |
|||
8
PaulBC
11.07.19
✎
03:08
|
(0) валится на проверке даты запрета в ОперативныеВзаиморасчетыСервер.ЗаполнитьОперативныеВзаиморасчеты
У себя пока убрал проверку, в 2.4.9 вроде переделали. |
|||
9
rilovnikova
11.07.19
✎
09:50
|
(8) А в какой именно строке? Просмотрела всю процедуру, не могу понять.
Процедура ЗаполнитьОперативныеВзаиморасчеты(ОсновныеПараметры) Экспорт #Область ИнициализацияЗапросаИПеременных АналитикаУчетаПоПартнерам = ОсновныеПараметры.АналитикаУчетаПоПартнерам; ОбъектРасчетов = ОсновныеПараметры.ОбъектРасчетов; ВалютаРасчетов = ОсновныеПараметры.ВалютаРасчетов; ЭтоРасчетыСКлиентами = ОсновныеПараметры.ЭтоРасчетыСКлиентами; Регистратор = ОсновныеПараметры.Регистратор; Порядок = ОсновныеПараметры.Порядок; ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); ВалютаУправленческогоУчета = Константы.ВалютаУправленческогоУчета.Получить(); АналитикаОбъектаРасчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(АналитикаУчетаПоПартнерам,"Организация"); Организация = АналитикаОбъектаРасчета.Организация; //Если график исполнения в договоре, то вместо графика заказа будет уточняться график договора. //Если пользователь каким-то образом ввел заказы с графиками по такому договору, то все этапы таких заказов будут отнесены к графику договора //и закрываться будут по ФИФО независимо от привязки накладных к заказам Если ТипЗнч(ОбъектРасчетов) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда ГрафикИсполненияДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектРасчетов,"ГрафикИсполненияДоговора"); ГрафикВДоговоре = ЗначениеЗаполнено(ГрафикИсполненияДоговора); Иначе ГрафикИсполненияДоговора = Неопределено; ГрафикВДоговоре = ЛОЖЬ; КонецЕсли; Если ЭтоРасчетыСКлиентами Тогда РасчетыПоЗаказу = ТипЗнч(ОбъектРасчетов) = Тип("ДокументСсылка.ЗаказКлиента") ИЛИ ТипЗнч(ОбъектРасчетов) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента"); Иначе РасчетыПоЗаказу = ТипЗнч(ОбъектРасчетов) = Тип("ДокументСсылка.ЗаказПоставщику"); КонецЕсли; СписокТиповПлатежек = ТипыПлатежныхДокументов(); РасчетыПоПлатежке = СписокТиповПлатежек.Найти(ТипЗнч(ОбъектРасчетов)) <> Неопределено; ХозяйственныеОперацииНеОтгрузка = ХозяйственныеОперацииНеОтгрузка(); Если НЕ РасчетыПоПлатежке И ТипЗнч(ОбъектРасчетов) = Тип("ДокументСсылка.ПервичныйДокумент") Тогда ТипПервичногоДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектРасчетов,"ТипПервичногоДокумента"); РасчетыПоПлатежке = ТипПервичногоДокумента = Перечисления.ТипыПервичныхДокументов.ОплатаПоставщику ИЛИ ТипПервичногоДокумента = Перечисления.ТипыПервичныхДокументов.ОплатаОтКлиента; КонецЕсли; ГлобальныеПеременные = Новый Структура; ГлобальныеПеременные.Вставить("ЕжедневнаяПереоценка", Константы.ПереоцениватьВалютныеСредстваПоДням.Получить()); //Для уточнения плана оплат - в переменной хранится последний момент времени плана оплат, //чтобы при добавлении записи в план оплат можно было сразу определить есть ли планы оплат с датой больше, чем добавляемая запись. ГлобальныеПеременные.Вставить("МаксимальныйПорядокПланаОплат",""); ГлобальныеПеременные.Вставить("ВалютаРасчетов", ВалютаРасчетов); ГлобальныеПеременные.Вставить("ГрафикВДоговоре", ГрафикВДоговоре); ГлобальныеПеременные.Вставить("ЭтоРасчетыСКлиентами", ЭтоРасчетыСКлиентами); ГлобальныеПеременные.Вставить("ПорядокПереоценки", Новый Соответствие); //Хозяйственные операции для заполнения. ХозяйственныеОперации = Новый Соответствие; Если ЭтоРасчетыСКлиентами Тогда ХозяйственныеОперации.Вставить("ЗачетАванса", Перечисления.ХозяйственныеОперации.ЗачетАвансаКлиента); ХозяйственныеОперации.Вставить("ПогашениеЗадолженности", Перечисления.ХозяйственныеОперации.ПогашениеЗадолженностиКлиента); ХозяйственныеОперации.Вставить("ВозвратАванса", Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту); ХозяйственныеОперации.Вставить("ПереоценкаПоложительная", Перечисления.ХозяйственныеОперации.КурсовыеРазницыКлиентыПрибыль); ХозяйственныеОперации.Вставить("ПереоценкаОтрицательная", Перечисления.ХозяйственныеОперации.КурсовыеРазницыКлиентыУбыток); ХозяйственныеОперации.Вставить("Планирование", Перечисления.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента); Иначе ХозяйственныеОперации.Вставить("ЗачетАванса", Перечисления.ХозяйственныеОперации.ЗачетАвансаПоставщику); ХозяйственныеОперации.Вставить("ПогашениеЗадолженности", Перечисления.ХозяйственныеОперации.ПогашениеЗадолженностиПоставщику); ХозяйственныеОперации.Вставить("ВозвратАванса", Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика); ХозяйственныеОперации.Вставить("ПереоценкаПоложительная", Перечисления.ХозяйственныеОперации.КурсовыеРазницыПоставщикиУбыток); ХозяйственныеОперации.Вставить("ПереоценкаОтрицательная", Перечисления.ХозяйственныеОперации.КурсовыеРазницыПоставщикиПрибыль); ХозяйственныеОперации.Вставить("Планирование", Перечисления.ХозяйственныеОперации.ПланированиеПоЗаказуПоставщику); КонецЕсли; ХозяйственныеОперации.Вставить("ПереносАванса", Перечисления.ХозяйственныеОперации.ПереносАванса); ГлобальныеПеременные.Вставить("ХозяйственныеОперации", ХозяйственныеОперации); Запрос = Новый Запрос; Менеджер = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = Менеджер; Запрос.УстановитьПараметр("ОбъектРасчетов", ОбъектРасчетов); Запрос.УстановитьПараметр("АналитикаУчетаПоПартнерам", АналитикаУчетаПоПартнерам); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ВалютаУпр", ВалютаУправленческогоУчета); Запрос.УстановитьПараметр("ВалютаРегл", ВалютаРегламентированногоУчета); Запрос.УстановитьПараметр("СписокТиповЗаказов", СписокТиповРегистраторовПланов()); Запрос.УстановитьПараметр("ВалютаРасчетов", ВалютаРасчетов); Запрос.УстановитьПараметр("Порядок", Порядок); Запрос.УстановитьПараметр("ГрафикВДоговоре", ГрафикВДоговоре); Запрос.УстановитьПараметр("ГрафикИсполненияДоговора", ГрафикИсполненияДоговора); Запрос.УстановитьПараметр("РасчетыПоЗаказу", РасчетыПоЗаказу); Запрос.УстановитьПараметр("ЭтоРасчетыСКлиентами", ЭтоРасчетыСКлиентами); Запрос.УстановитьПараметр("Регистратор", Регистратор); Запрос.УстановитьПараметр("ПорядокЗачетаПоДатеПлатежа", Константы.ПорядокЗачетаДокументовПоДатеОперации.Получить() = 1); #КонецОбласти #Область ИнициализацияНаборовЗаписей Если ЭтоРасчетыСКлиентами Тогда НаборЗаписейПоСрокам = РегистрыНакопления.РасчетыСКлиентамиПоСрокам.СоздатьНаборЗаписей(); НаборЗаписейПланОплат = РегистрыНакопления.РасчетыСКлиентамиПланОплат.СоздатьНаборЗаписей(); НаборЗаписейПланОтгрузокПоставок = РегистрыНакопления.РасчетыСКлиентамиПланОтгрузок.СоздатьНаборЗаписей(); Иначе НаборЗаписейПоСрокам = РегистрыНакопления.РасчетыСПоставщикамиПоСрокам.СоздатьНаборЗаписей(); НаборЗаписейПланОплат = РегистрыНакопления.РасчетыСПоставщикамиПланОплат.СоздатьНаборЗаписей(); НаборЗаписейПланОтгрузокПоставок = РегистрыНакопления.РасчетыСПоставщикамиПланПоставок.СоздатьНаборЗаписей(); КонецЕсли; Если ОсновныеПараметры.Свойство("ДополнительныеСвойстваПроведения") И ОсновныеПараметры.ДополнительныеСвойстваПроведения <> Неопределено Тогда НаборЗаписейПоСрокам.ДополнительныеСвойства.Вставить("ПроверятьИзмененияРегистра", Истина); Если ОсновныеПараметры.Свойство("Регистратор") Тогда // При изменении проведения документа будут изменения в регистре, но по ним не следует регистрировать документ к отражению, // так как он в любом случае изменит свои данные отражения при проведении (или распроведении). НаборЗаписейПоСрокам.ДополнительныеСвойства.Вставить("НеотражаемыйДокумент", ОсновныеПараметры.Регистратор); КонецЕсли; КонецЕсли; РегистраторРасчетовОбъект = РегистраторРасчетов(ОбъектРасчетов, АналитикаУчетаПоПартнерам, ВалютаРасчетов, ЭтоРасчетыСКлиентами, Организация); РегистраторРасчетов = РегистраторРасчетовОбъект.Ссылка; НаборЗаписейПоСрокам.Отбор.Регистратор.Установить(РегистраторРасчетов); НаборЗаписейПланОплат.Отбор.Регистратор.Установить(РегистраторРасчетов); НаборЗаписейПланОтгрузокПоставок.Отбор.Регистратор.Установить(РегистраторРасчетов); #КонецОбласти //Движения до начала пересчета и остатки. СформироватьВТДанныхРегистровДоНачалаРасчетов(Запрос, ЭтоРасчетыСКлиентами); //Данные регистров с порядком меньше порядка начала расчета, далее дополняются. ТаблицаРасчетовПоСрокам = Менеджер.Таблицы["ВТРасчетыПоСрокамДо"].ПолучитьДанные().Выгрузить(); ТаблицаПланОплат = Менеджер.Таблицы["ВТРасчетыПланОплатДо"].ПолучитьДанные().Выгрузить(); ТаблицаПланОтгрузокПоставок = Менеджер.Таблицы["ВТРасчетыПланОтгрузокПоставокДо"].ПолучитьДанные().Выгрузить(); //Движения после начала пересчета и остатки до начала пересчета для распределения. РасчетыОтгрузкиПоставки = ПолучитьОтгрузкиПоставки(Запрос, Порядок); ПланыОплат = ПолучитьПланыОплат(Запрос, Порядок, ЭтоРасчетыСКлиентами); ПланыОтгрузокПоставок = ПолучитьПланыОтгрузокПоставок(Запрос, Порядок, ЭтоРасчетыСКлиентами); РасчетыОплаты = ПолучитьОплаты(Запрос, Порядок); Если РасчетыОплаты.Количество() = 0 И РасчетыОтгрузкиПоставки.Количество() = 0 И ТаблицаРасчетовПоСрокам.Количество() = 0 И НЕ ОсновныеПараметры.ТолькоПланы Тогда НаборЗаписейПоСрокам.Записать(); КонецЕсли; Если ПланыОплат.Количество() = 0 И РасчетыОтгрузкиПоставки.Количество() = 0 И ТаблицаПланОплат.Количество() = 0 Тогда НаборЗаписейПланОплат.Записать(); КонецЕсли; Если ПланыОтгрузокПоставок.Количество() = 0 И ТаблицаПланОтгрузокПоставок.Количество() = 0 Тогда НаборЗаписейПланОтгрузокПоставок.Записать(); КонецЕсли; НужнаПереоценка = (ВалютаРасчетов <> ВалютаРегламентированногоУчета ИЛИ ВалютаРасчетов <> ВалютаУправленческогоУчета) И РасчетыОтгрузкиПоставки.Количество() > 0 И НЕ ОсновныеПараметры.ТолькоПланы; Если НужнаПереоценка Тогда ДатаНачалаКурсов = Мин(РасчетыОтгрузкиПоставки[0].Период, ?(РасчетыОплаты.Количество() > 0, РасчетыОплаты[0].Период, РасчетыОтгрузкиПоставки[0].Период)); ТаблицаКурсовВалют = ПолучитьКурсыВалют(Запрос, ДатаНачалаКурсов, ГлобальныеПеременные); ГлобальныеПеременные.Вставить("ТаблицаКурсовВалют", ТаблицаКурсовВалют); КонецЕсли; ДокументыРасчетаКурсовыхРазниц = Документы.РасчетКурсовыхРазниц.ДокументыПереоценки(Организация, ?(РасчетыОтгрузкиПоставки.Количество() > 0, РасчетыОтгрузкиПоставки[0].ДатаВозникновения, ТекущаяДатаСеанса()), ТекущаяДатаСеанса(), ЭтоРасчетыСКлиентами); ГлобальныеПеременные.Вставить("ДокументыРасчетаКурсовыхРазниц", ДокументыРасчетаКурсовыхРазниц); //Добавляем приходные записи по плану оплаты (заказы , график договора) //накладные не добавляем, т.к они могут быть уменьшены авансами. Для Каждого Стр Из ПланыОплат Цикл Если НЕ Стр.ПриходДобавлен Тогда НовСтр = ТаблицаПланОплат.Добавить(); НовСтр.ВидДвижения = ВидДвиженияНакопления.Приход; НовСтр.ДокументРегистратор = Стр.Регистратор; НовСтр.ДокументПлан = Стр.Регистратор; НовСтр.ВариантОплаты = Стр.ВариантОплаты; НовСтр.Период = Стр.Период; НовСтр.ДатаВозникновения = Стр.ДатаВозникновения; НовСтр.ДатаПлановогоПогашения = Стр.ДатаПлановогоПогашения; НовСтр.КОплате = Стр.КОплате; НовСтр.ПорядокОперации = Стр.ПорядокОперации; НовСтр.ПорядокЗачета = Стр.ПорядокОперации; НовСтр.ХозяйственнаяОперация = ГлобальныеПеременные.ХозяйственныеОперации["Планирование"]; КонецЕсли; КонецЦикла; //Добавляем приходные записи планов отгрузок. Для Каждого Стр Из ПланыОтгрузокПоставок Цикл Если НЕ Стр.ПриходДобавлен Тогда НовСтр = ТаблицаПланОтгрузокПоставок.Добавить(); НовСтр.ВидДвижения = ВидДвиженияНакопления.Приход; НовСтр.ДокументРегистратор = Стр.Регистратор; НовСтр.ДокументПлан = Стр.Регистратор; НовСтр.Период = Стр.Период; НовСтр.ДатаВозникновения = Стр.ДатаВозникновения; НовСтр.ДатаПлановогоПогашения = Стр.ДатаПлановогоПогашения; НовСтр.Сумма = Стр.КОтгрузкеПоставке; НовСтр.ПорядокЗачета = Стр.ПорядокОперации; НовСтр.ПорядокОперации = Стр.ПорядокОперации; КонецЕсли; КонецЦикла; //Для определения курса корректировки реализации в минус. //Ключ - ДокументСсылка.РеализациТоваровУслуг, ДокументСсылка.АктВыполненныхРабот //Значение - Структура // * СуммаДокумента, СуммаДокументаРегл, СуммаДокументаУпр - нужны для определения среднего курса реализации при проведении корректировок. ДанныеНакладных = Новый Соответствие; ТаблицаДанныхНакладных = ПолучитьДанныеНакладных(Запрос); Для Каждого Строка Из ТаблицаДанныхНакладных Цикл ДанныеНакладных.Вставить(Строка.Накладная, СтруктураСумм(Строка.Сумма, Строка.СуммаРегл, Строка.СуммаУпр)); КонецЦикла; ГлобальныеПеременные.Вставить("ДанныеНакладных", ДанныеНакладных); ЗаписейОплаты = РасчетыОплаты.Количество(); ЗаписейОтгрузкиПоставки = РасчетыОтгрузкиПоставки.Количество(); ЗаписейОбработать = ЗаписейОплаты + ЗаписейОтгрузкиПоставки; Индексы = Новый Структура; //Индекс текущей обрабатываемой строки отгрузок. Индексы.Вставить("ИндексОтгрузкиПоставки", 0); //Индекс текущей обрабатываемой строки оплат. Индексы.Вставить("ИндексОплаты", 0); //Для распределения копеек в рамках документа. ТекущийДокументОплаты = Неопределено; ТекущийДокументОтгрузкиПоставки = Неопределено; //Сколько строк отгрузки пропущено для зачета корректировкой реализации. ПропускОтгрузкиПоставки = 0; Пока Индексы.ИндексОплаты + Индексы.ИндексОтгрузкиПоставки < ЗаписейОбработать Цикл Если Индексы.ИндексОплаты <= ЗаписейОплаты - 1 И Индексы.ИндексОтгрузкиПоставки <= ЗаписейОтгрузкиПоставки - 1 Тогда СтрокаОплаты = РасчетыОплаты[Индексы.ИндексОплаты]; СтрокаОтгрузкиПоставки = РасчетыОтгрузкиПоставки[Индексы.ИндексОтгрузкиПоставки]; //Оплата раньше отгрузки. Если СтрокаОплаты.ПорядокОперации < СтрокаОтгрузкиПоставки.ПорядокОперации //В пределах регистратора (при расчетах по накладным) должен происходить зачет аванса. ИЛИ СтрокаОплаты.Регистратор = СтрокаОтгрузкиПоставки.Регистратор Тогда //Переброс аванса на расчетный документ - накладную. НеОтгрузка = ХозяйственныеОперацииНеОтгрузка.Найти(СтрокаОтгрузкиПоставки.ХозяйственнаяОперация) <> Неопределено; ДвойнаяЗаписьНеНужна = НеОтгрузка //Если расчеты по платежке, то эти движения уже отражены в оперативных расчетах в рамках переноса с одного объекта расчетов на другой. ИЛИ РасчетыПоПлатежке; //Приход предоплаты. Если НЕ СтрокаОплаты.ПриходДобавлен Тогда ПересчитатьСуммыЕслиЭтоКорректировка(ГлобальныеПеременные, СтрокаОплаты); ДобавитьПриход(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОплаты, "Оплата"); КонецЕсли; //Уменьшаем план отгрузки, если есть. Если НЕ СтрокаОтгрузкиПоставки.ПланОтгрузокПоставокСписан Тогда СписатьПланОтгрузкиПоставки(ГлобальныеПеременные, ТаблицаПланОтгрузокПоставок, СтрокаОтгрузкиПоставки, ПланыОтгрузокПоставок); КонецЕсли; Если СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда Если ТекущийДокументОплаты <> СтрокаОплаты.РасчетныйДокумент Тогда ПредоплатаРаспределеноРегл = 0; ПредоплатаРаспределеноУпр = 0; ТекущийДокументОплаты = СтрокаОплаты.РасчетныйДокумент; КонецЕсли; Если ТекущийДокументОтгрузкиПоставки <> СтрокаОтгрузкиПоставки.РасчетныйДокумент Тогда ДолгРаспределеноРегл = 0; ДолгРаспределеноУпр = 0; ТекущийДокументОтгрузкиПоставки = СтрокаОтгрузкиПоставки.РасчетныйДокумент; КонецЕсли; //Добавляем запись списания предоплаты. НовСтр_Предоплата_Расход = ТаблицаРасчетовПоСрокам.Добавить(); НовСтр_Предоплата_Расход.ВидДвижения = ВидДвиженияНакопления.Расход; НовСтр_Предоплата_Расход.ДокументРегистратор = СтрокаОтгрузкиПоставки.Регистратор; НовСтр_Предоплата_Расход.ВалютаДокумента = СтрокаОтгрузкиПоставки.ВалютаДокумента; НовСтр_Предоплата_Расход.Период = СтрокаОтгрузкиПоставки.Период; НовСтр_Предоплата_Расход.РасчетныйДокумент = СтрокаОплаты.РасчетныйДокумент; НовСтр_Предоплата_Расход.ДатаВозникновения = СтрокаОплаты.ДатаВозникновения; НовСтр_Предоплата_Расход.ДатаПлановогоПогашения = Дата(1,1,1); НовСтр_Предоплата_Расход.ПорядокЗачета = СтрокаОплаты.ПорядокОперации; НовСтр_Предоплата_Расход.ПорядокОперации = СтрокаОтгрузкиПоставки.ПорядокОперации; НовСтр_Предоплата_Расход.СтатьяДвиженияДенежныхСредств = СтрокаОтгрузкиПоставки.СтатьяДвиженияДенежныхСредств; НовСтр_Предоплата_Расход.КорОбъектРасчетов = СтрокаОплаты.КорОбъектРасчетов; СуммаСписания = Мин(СтрокаОплаты.Сумма, СтрокаОтгрузкиПоставки.Сумма); //Возврат аванса с ручным курсом отражаем по курсу возврата. Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса И СтрокаОтгрузкиПоставки.РучнойКурсРегл Тогда ПредоплатаРеглПредв = СтрокаОтгрузкиПоставки.СуммаРегл / СтрокаОтгрузкиПоставки.Сумма * СуммаСписания; //Ошибки округления сразу зачитываем, если что они переоценятся. ИначеЕсли СтрокаОтгрузкиПоставки.РучнойКурсРегл И СтрокаОтгрузкиПоставки.Сумма = СуммаСписания Тогда ПредоплатаРеглПредв = СтрокаОтгрузкиПоставки.СуммаРегл; //Остальные авансы по курсу аванса. Иначе ПредоплатаРеглПредв = СтрокаОплаты.СуммаРегл / СтрокаОплаты.Сумма * СуммаСписания; КонецЕсли; Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса И СтрокаОтгрузкиПоставки.РучнойКурсУпр Тогда ПредоплатаУпрПредв = СтрокаОтгрузкиПоставки.СуммаУпр / СтрокаОтгрузкиПоставки.Сумма * СуммаСписания; ИначеЕсли СтрокаОтгрузкиПоставки.РучнойКурсУпр И СтрокаОтгрузкиПоставки.Сумма = СуммаСписания Тогда ПредоплатаУпрПредв = СтрокаОтгрузкиПоставки.СуммаУпр; Иначе ПредоплатаУпрПредв = СтрокаОплаты.СуммаУпр / СтрокаОплаты.Сумма * СуммаСписания; КонецЕсли; Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса Тогда НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации["ВозвратАванса"]; ИначеЕсли РасчетыПоПлатежке И НЕ СтрокаОтгрузкиПоставки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВзаимозачетЗадолженности Тогда НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации["ПереносАванса"]; ИначеЕсли НеОтгрузка Тогда НовСтр_Предоплата_Расход.ХозяйственнаяОперация = СтрокаОтгрузкиПоставки.ХозяйственнаяОперация; Иначе НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации["ЗачетАванса"]; КонецЕсли; НовСтр_Предоплата_Расход.Предоплата = СуммаСписания; НовСтр_Предоплата_Расход.ПредоплатаРегл = Окр(ПредоплатаРеглПредв + ПредоплатаРаспределеноРегл - Окр(ПредоплатаРаспределеноРегл, 2), 2); НовСтр_Предоплата_Расход.ПредоплатаУпр = Окр(ПредоплатаУпрПредв + ПредоплатаРаспределеноУпр - Окр(ПредоплатаРаспределеноУпр, 2), 2); ПредоплатаРаспределеноРегл = ПредоплатаРаспределеноРегл + ПредоплатаРеглПредв; ПредоплатаРаспределеноУпр = ПредоплатаРаспределеноУпр + ПредоплатаУпрПредв; //Уменьшаем строку оплаты на сумму зачета СтрокаОплаты.Сумма = СтрокаОплаты.Сумма - НовСтр_Предоплата_Расход.Предоплата; СтрокаОплаты.СуммаРегл = СтрокаОплаты.СуммаРегл - НовСтр_Предоплата_Расход.ПредоплатаРегл; СтрокаОплаты.СуммаУпр = СтрокаОплаты.СуммаУпр - НовСтр_Предоплата_Расход.ПредоплатаУпр; Если НЕ ДвойнаяЗаписьНеНужна Тогда //Отражаем приход на сумму долга по курсу предоплаты. НовСтр_Долг_Приход = ТаблицаРасчетовПоСрокам.Добавить(); ЗаполнитьЗначенияСвойств(НовСтр_Долг_Приход, НовСтр_Предоплата_Расход , ,"Предоплата, ПредоплатаУпр, ПредоплатаРегл, КорОбъектРасчетов"); НовСтр_Долг_Приход.ВидДвижения = ВидДвиженияНакопления.Приход; НовСтр_Долг_Приход.Период = СтрокаОтгрузкиПоставки.Период; НовСтр_Долг_Приход.ДатаВозникновения = СтрокаОтгрузкиПоставки.Период; НовСтр_Долг_Приход.ДатаПлановогоПогашения = СтрокаОтгрузкиПоставки.ДатаПлановогоПогашения; НовСтр_Долг_Приход.РасчетныйДокумент = СтрокаОтгрузкиПоставки.Регистратор; НовСтр_Долг_Приход.ПорядокЗачета = СтрокаОтгрузкиПоставки.ПорядокЗачета; НовСтр_Долг_Приход.ХозяйственнаяОперация = СтрокаОтгрузкиПоставки.ХозяйственнаяОперация; НовСтр_Долг_Приход.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка(); НовСтр_Долг_Приход.Долг = НовСтр_Предоплата_Расход.Предоплата; Если СтрокаОтгрузкиПоставки.РучнойКурсУпр Тогда НовСтр_Долг_Приход.ДолгУпр = СтрокаОтгрузкиПоставки.КурсУпр * СуммаСписания; Иначе НовСтр_Долг_Приход.ДолгУпр = НовСтр_Предоплата_Расход.ПредоплатаУпр; КонецЕсли; Если СтрокаОтгрузкиПоставки.РучнойКурсРегл Тогда НовСтр_Долг_Приход.ДолгРегл = СтрокаОтгрузкиПоставки.КурсРегл * СуммаСписания; Иначе НовСтр_Долг_Приход.ДолгРегл = НовСтр_Предоплата_Расход.ПредоплатаРегл; КонецЕсли; //Переносим предоплату на расчетный документ отгрузки. НовСтр_Долг_Расход = ТаблицаРасчетовПоСрокам.Добавить(); ЗаполнитьЗначенияСвойств(НовСтр_Долг_Расход, НовСтр_Долг_Приход); НовСтр_Долг_Расход.ВидДвижения = ВидДвиженияНакопления.Расход; НовСтр_Долг_Расход.ХозяйственнаяОперация = ХозяйственныеОперации["ЗачетАванса"]; НовСтр_Долг_Расход.ДатаПлановогоПогашения = СтрокаОтгрузкиПоставки.ДатаПлановогоПогашения; НовСтр_Долг_Расход.РасчетныйДокумент = СтрокаОтгрузкиПоставки.Регистратор; НовСтр_Долг_Расход.ДатаВозникновения = СтрокаОтгрузкиПоставки.Период; НовСтр_Долг_Расход.ПорядокЗачета = СтрокаОтгрузкиПоставки.ПорядокЗачета; НовСтр_Долг_Расход.ДокументРегистратор = СтрокаОтгрузкиПоставки.Регистратор; НовСтр_Долг_Расход.СтатьяДвиженияДенежныхСредств = СтрокаОтгрузкиПоставки.СтатьяДвиженияДенежныхСредств; НовСтр_Долг_Расход.Долг = НовСтр_Предоплата_Расход.Предоплата; НовСтр_Долг_Расход.ДолгУпр = НовСтр_Предоплата_Расход.ПредоплатаУпр; НовСтр_Долг_Расход.ДолгРегл = НовСтр_Предоплата_Расход.ПредоплатаРегл; //Если курс переноса предоплаты и прихода по долгу не совпал, делаем переоценку. //Возможно, когда и в оплате и в накладной ручные суммы в валюте регл. или упр. учета. Если НовСтр_Долг_Приход.ДолгРегл <> НовСтр_Долг_Расход.ДолгРегл ИЛИ НовСтр_Долг_Приход.ДолгУпр <> НовСтр_Долг_Расход.ДолгУпр Тогда ДобавитьЗаписьПереоценки(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки.Период, НовСтр_Долг_Приход, "Долг", НовСтр_Долг_Расход.ДолгРегл - НовСтр_Долг_Приход.ДолгРегл, НовСтр_Долг_Расход.ДолгУпр - НовСтр_Долг_Приход.ДолгУпр); КонецЕсли; КонецЕсли; Если СтрокаОтгрузкиПоставки.РучнойКурсРегл И НЕ ДвойнаяЗаписьНеНужна Тогда //Остаток должен быть уменьшен ровно на ту сумму, на которую уже сформирован приход в двойной записи. ДолгРеглПредв = НовСтр_Долг_Приход.ДолгРегл; Иначе //Иначе пропорционально уменьшаем остаток строки. ДолгРеглПредв = СтрокаОтгрузкиПоставки.КурсРегл * СуммаСписания; КонецЕсли; Если СтрокаОтгрузкиПоставки.РучнойКурсУпр И НЕ ДвойнаяЗаписьНеНужна Тогда ДолгУпрПредв = НовСтр_Долг_Приход.ДолгУпр; Иначе ДолгУпрПредв = СтрокаОтгрузкиПоставки.КурсУпр * СуммаСписания; КонецЕсли; Если ГлобальныеПеременные.ДанныеНакладных[СтрокаОтгрузкиПоставки.Регистратор] = Неопределено Тогда ГлобальныеПеременные.ДанныеНакладных.Вставить(СтрокаОтгрузкиПоставки.Регистратор, СтруктураСумм()); КонецЕсли; СтрокаОтгрузкиПоставки.Сумма = СтрокаОтгрузкиПоставки.Сумма - СуммаСписания; СтрокаОтгрузкиПоставки.СуммаРегл = СтрокаОтгрузкиПоставки.СуммаРегл - Окр(ДолгРеглПредв + ДолгРаспределеноРегл - Окр(ДолгРаспределеноРегл,2),2); СтрокаОтгрузкиПоставки.СуммаУпр = СтрокаОтгрузкиПоставки.СуммаУпр - Окр(ДолгУпрПредв + ДолгРаспределеноУпр - Окр(ДолгРаспределеноУпр,2),2); ДолгРаспределеноРегл = ДолгРаспределеноРегл + ДолгРеглПредв; ДолгРаспределеноУпр = ДолгРаспределеноУпр + ДолгУпрПредв; ДанныеНакладной = ГлобальныеПеременные.ДанныеНакладных[СтрокаОтгрузкиПоставки.Регистратор]; ДанныеНакладной.СуммаДокумента = ДанныеНакладной.СуммаДокумента + СуммаСписания; ДанныеНакладной.СуммаДокументаРегл = ДанныеНакладной.СуммаДокументаРегл + НовСтр_Предоплата_Расход.ПредоплатаРегл; //- ДанныеНакладной.СуммаДокументаУпр = ДанныеНакладной.СуммаДокументаУпр + НовСтр_Предоплата_Расход.ПредоплатаУпр; //Уменьшаем график оплаты условной задолженности на разницу суммы зачтенного аванса и строк накладной сверх заказа. СуммаУменьшенияГрафика = ВзаиморасчетыСервер.СписатьСумму(СуммаСписания, СтрокаОтгрузкиПоставки.КОплате); Если СуммаСписания > 0 И НЕ СтрокаОплаты.ГрафикСписан Тогда СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОплаты, СуммаСписания, "Аванс", ПланыОплат); КонецЕсли; Если СтрокаОплаты.Сумма = 0 Тогда Индексы.ИндексОплаты = Индексы.ИндексОплаты + 1; Если Окр(СтрокаОплаты.СуммаРегл, 2) <> 0 ИЛИ Окр(СтрокаОплаты.СуммаУпр, 2) <> 0 Тогда ДобавитьЗаписьПереоценки(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки.Период, СтрокаОплаты, "Предоплата", -Окр(СтрокаОплаты.СуммаРегл, 2), -Окр(СтрокаОплаты.СуммаУпр, 2)); КонецЕсли; КонецЕсли; КонецЕсли; Если СтрокаОтгрузкиПоставки.Сумма = 0 Тогда Индексы.ИндексОтгрузкиПоставки = Индексы.ИндексОтгрузкиПоставки + 1; Если СтрокаОтгрузкиПоставки.СуммаРегл <> 0 ИЛИ СтрокаОтгрузкиПоставки.СуммаУпр <> 0 Тогда ДобавитьЗаписьПереоценки(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, НачалоДня(СтрокаОплаты.Период), СтрокаОтгрузкиПоставки, "Долг", -Окр(СтрокаОтгрузкиПоставки.СуммаРегл, 2), -Окр(СтрокаОтгрузкиПоставки.СуммаУпр, 2)); КонецЕсли; КонецЕсли; //Отгрузка раньше оплаты. Иначе //Обычная оплата. Если НЕ СтрокаОплаты.ЭтоКорректировка Тогда //Добавляем строку прихода долга по отгрузке/поставке. Если НЕ СтрокаОтгрузкиПоставки.ПриходДобавлен И СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда ПересчитатьСуммыЕслиЭтоКорректировка(ГлобальныеПеременные, СтрокаОтгрузкиПоставки); ДобавитьПриход(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки, "ОтгрузкаПоставка"); //Уточняется план только на сумму по заказу. СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОтгрузкиПоставки, СтрокаОтгрузкиПоставки.Сумма - СтрокаОтгрузкиПоставки.КОплате, "УточнениеПлана",ПланыОплат); //Добавляются записи плана на всю сумму включая уточнение и сверхзаказа. СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОтгрузкиПоставки, СтрокаОтгрузкиПоставки.Сумма, "ОтгрузкаПоставка", ПланыОплат); КонецЕсли; //Списываем план отгрузки если есть. Если НЕ СтрокаОтгрузкиПоставки.ПланОтгрузокПоставокСписан Тогда СписатьПланОтгрузкиПоставки(ГлобальныеПеременные, ТаблицаПланОтгрузокПоставок, СтрокаОтгрузкиПоставки, ПланыОтгрузокПоставок); КонецЕсли; Если СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда //Переоценка накладной до даты оплаты. Если НужнаПереоценка Тогда ПереоценитьДолг(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки, СтрокаОплаты); КонецЕсли; //Если расчетный документ накладная изменился, то сбрасываем служебные реквизиты распределения копеек. Если ТекущийДокументОтгрузкиПоставки <> СтрокаОтгрузкиПоставки.РасчетныйДокумент Тогда ДолгРаспределеноРегл = 0; ДолгРаспределеноУпр = 0; ТекущийДокументОтгрузкиПоставки = СтрокаОтгрузкиПоставки.РасчетныйДокумент; КонецЕсли; //Добавляем строку погашения задолженности. НовСтр_Долг_Расход = ТаблицаРасчетовПоСрокам.Добавить(); НовСтр_Долг_Расход.ВидДвижения = ВидДвиженияНакопления.Расход; НовСтр_Долг_Расход.ДокументРегистратор = СтрокаОплаты.Регистратор; //Взаимозачет считаем взаимозачетом Если СтрокаОплаты.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВзаимозачетЗадолженности Тогда НовСтр_Долг_Расход.ХозяйственнаяОперация = СтрокаОплаты.ХозяйственнаяОперация; Иначе НовСтр_Долг_Расход.ХозяйственнаяОперация = ХозяйственныеОперации["ПогашениеЗадолженности"]; КонецЕсли; НовСтр_Долг_Расход.ВалютаДокумента = СтрокаОплаты.ВалютаДокумента; НовСтр_Долг_Расход.Период = СтрокаОплаты.Период; НовСтр_Долг_Расход.ПорядокОпера |
|||
10
PaulBC
11.07.19
✎
10:15
|
(9) в областях #Область ПроверкаДатыЗапрета
Началось с одной из версий 2.4.8 Смотрел тестовую 2.4.9 - там вообще из этой процедуры проверку убрали. |
|||
11
rilovnikova
11.07.19
✎
10:43
|
(10) Эх, у меня нет такой области от слова совсем... может есть еще идеи?
|
|||
12
mihalich979
11.07.19
✎
11:26
|
в люкальной копии более полная инфа по ошибке
по причине: Ошибка при выполнении обработчика - 'ПриЗаписи' по причине: {ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(214)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата) {ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(214)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата) Если СтрокаОплаты.ПорядокОперации < СтрокаОтгрузкиПоставки.ПорядокОперации Кусок кода: #Область РасчетФактическойЗадолженности Пока Индексы.ИндексОплаты + Индексы.ИндексОтгрузкиПоставки < ЗаписейОбработать Цикл Если Индексы.ИндексОплаты <= ЗаписейОплаты - 1 И Индексы.ИндексОтгрузкиПоставки <= ЗаписейОтгрузкиПоставки - 1 Тогда СтрокаОплаты = РасчетыОплаты[Индексы.ИндексОплаты]; СтрокаОтгрузкиПоставки = РасчетыОтгрузкиПоставки[Индексы.ИндексОтгрузкиПоставки]; //Оплата раньше отгрузки. Если СтрокаОплаты.ПорядокОперации < СтрокаОтгрузкиПоставки.ПорядокОперации //В пределах регистратора (при расчетах по накладным) должен происходить зачет аванса. при проведении СтрокаОплаты.ПорядокОперации = 201907094235959330М00-000262 СтрокаОтгрузкиПоставки.ПорядокОперации = Null |
|||
13
mihalich979
11.07.19
✎
11:44
|
очень интересно.
есть строка Реализация клиенту от 28.09.2019 года в которой не заполнен "ПорядокОперации" который сравнивается. поэтому ошибка. |
|||
14
rilovnikova
11.07.19
✎
11:49
|
(13) Спасибо, буду тоже локально смотреть)
|
|||
15
mihalich979
11.07.19
✎
11:59
|
в итоге ввели начальные остатки некорректно указали дату расчетного документа
должны были указать 28/09/2018 а указали 28/09/2019 вот что значит лезть в прошлый год. |
|||
16
mihalich979
11.07.19
✎
12:02
|
(1) отладка на сервере не включена вот и нет ошибки.
и там все очень мутно. все в облаке. связь с облаком через 3-е лицо. Карочи проще локально отлаживать чем отладку включать :) а локально все высветилось сразу. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |