Ошибка при выполнении обработчика обработкапроведения

Ошибка при выполнении обработчика обработкапроведения

Новое в версии 1.0.44.5

Ошибки, возникающие при проведении документа «Плановые назначения»

  • При использовании плана поступлений-выбытий с видом показателя «АУ и БУ» возникала ошибка:
    Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
    по причине:
    {ОбщиМодуль.ПлановыеПоказателиДеятельности.Модуль (51)}:
    Поле объекта не обнаружено (АналитическаяГруппаКИФ)
  • При использовании плана поступлений-выбытий с видом показателя «Произвольный» могли возникать ошибки:
    • — Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
      по причине:
      {Справочник.КБК.МодульМенеджера(146)}: Ошибка при вызове метода контекста (Выполнить) по причине:
      {(8, 36)}: Поле не найдено «КлассификационныеПризнакиСчетов.Код»
      И КлассификационныеПризнакиСчетов.<<?>>Код = &Код
    • — Если у КПС произвольного вида, который соответствует статье плана, установлена дата окончания, возникала ошибка:
      Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
      по причине:
      {Справочник.КБК.МодульМенеджера(169)}: Поле объекта не обнаружено (ОкончаниеДействия)

Ошибка в документе «Корректировочный счет-фактура полученный»

Если в документе с вариантом регистрации «В книге продаж или покупок», оформленном на основании счета-фактуры налогового агента указать суммы к восстановлению, то документ при проведении не формировал проводку по уменьшению суммы, принимаемой к вычету (Д-т 303.04, К-т 210.Р2 на сумму НДС от измененной суммы со знаком «-«).

Ошибка в документе «Исправительный счет-фактура полученный»

Если в документе с причиной налогообложения «Налоговый агент» изменяется значение реквизита «Процент НДС к вычету», то документ формировал неправильные движения по регистрам.

Учет договоров и обязательств

C 1 января 2017 г. федеральные учреждения — ПБС представляют в Федеральное казначейство Сведения о денежном обязательстве (ф. 0506102) согласно приложению 4 к Порядку учета территориальными органами Федерального казначейства бюджетных и денежных обязательств получателей средств федерального бюджета, утвержденному приказом Минфина России от 30.12.2015 N 221н (в ред. Приказа Минфина России от 29.07.2016 N 127н), далее – Порядок, в соответствии с требованиями, установленными Порядком.

В документе «Принятое денежное обязательство» добавлены реквизиты «Это аванс», «Учетный номер», «Объект ФАИП» и подписи, необходимые для выгрузки Сведений о денежном обязательстве (ф. 0506102).

В текущую версию настроек обмена данными с казначейскими системами по Требованиям форматов Федерального казначейства включен формат выгрузки документа «Принятое денежном обязательство» в виде XML файлов (том 7 альбома 22.0).
Для загрузки формата необходимо импортировать форматы из файла поставки «EB.xml». И далее, в документе «Задание на экспорт» при выгрузке Сведений о денежном обязательстве в поле «Тип формата» следует указать новый вид обмена «Обмен с электронным бюджетом».

Другие изменения

Обработка «Перенос остатков по КПС»

В обработке при выборе значения КПС для отбора в форме выбора устанавливался отбор по списку неактуальных КПС, который был недоступен для изменения. Теперь этот отбор доступен для изменения. Т.е. теперь отбор можно установить и по актуальному КПС.

Добавлена возможность устанавливать отбор по списку КПС.

Бюджетная классификация

В поставку включен обновленный файл federal.clax, содержащий бюджетные классификаторы в соответствии с приказом Минфина России № 65н от 01.07.2013 «Об утверждении Указаний о порядке применения бюджетной классификации Российской Федерации» в ред. приказа № 230н от 07.12.2016.

Внимание!
Для обновления классификаторов воспользуйтесь «Помощником обновления бюджетной классификации» в меню «Бухгалтерский учет – Бюджетная классификация» программы (в режиме «Предприятие»).
Перед обновлением рекомендуем выполнить тест загрузки обновлений классификаторов.

Обмен с казначейскими системами и учреждениями банка

Добавлен формат экспорта данных документа «Принятое денежное обязательство» в XML- файл (файл EB.xml)

Обновлены форматы обмена с казначейскими системами (файлы OFK.xml, oldOFK.xml).

В версию включен альбом версии 22.0 Требований к форматам текстовых файлов, используемых при информационном взаимодействии между органами Федерального казначейства и участниками бюджетного процесса, не участниками бюджетного процесса, бюджетными учреждениями, автономными учреждениями, Счетной палатой (файл OFK.xml). Предыдущие версии альбома включены в файл oldOFK.xml.

Внимание!
При обновлении конфигурации форматы не обновляются. Файлы, поставляемых форматов, следует загрузить в справочник «Типы форматов обмена» (кнопка «Загрузить форматы» на закладке «Форматы обмена» формы «Обмен с казначейскими и банковскими системами»).
В открывшемся окне «Помощника загрузки и обновления форматов» указать источник загрузки – «Папка на этом компьютере или компьютере в локальной сети» и далее следовать указаниям программы.

Регламентированная бухгалтерская отчетность

Обновлены комплекты форм бухгалтерской отчетности, установленных приказами Минфина России:

  • от 28.12.2010 № 191н – файлы statrep191N.repx;
  • от 25.03.2011 № 33н – файл statrep33N.repx;
  • от 28.07.2010 № 81н – файл DataFEA.repx.

Внимание!
При обновлении конфигурации комплекты бухгалтерской отчетности (файлы statrep191N.repx, statrep33N.repx, statrep143N.repx, DataFEA.repx, forep.repx) не обновляются. Комплекты надо загрузить в справочник «Виды отчетов» (кнопка «Загрузка комплектов отчетности»).

Описания изменений включены в комплекты. Информацию о версии комплекта бухгалтерской отчетности и изменениях в версии можно получить по кнопке «i» в форме «Регламентированная бухгалтерская отчетность».

Регламентированная налоговая отчетность

В период с 2017 по 2020 год установлены ставки налога на прибыль в размере 3% в федеральный и 17% в бюджет субъекта РФ (Федеральный закон от 30.11.2016 № 401-ФЗ);

В состав регламентированной отчетности добавлена новая форма декларация по налогу на прибыль организаций (утверждена приказом ФНС России от 19.10.2016 № ММВ-7-3/572@). Форма применяются с отчетности за 2016 год.

Обмен с информационными системами регистрации начислений и платежей

Обновлен формат обмена с ГИС ГМП, версия 1.16.

Релиз предназначен для обновления с конфигураций версии 1.0.42.4, 1.0.42.5, 1.0.42.6, 1.0.42.7, 1.0.43.3, 1.0.43.4, 1.0.43.5, 1.0.43.6, 1.0.44.3.

(8) А в какой именно строке? Просмотрела всю процедуру, не могу понять.

Процедура ЗаполнитьОперативныеВзаиморасчеты(ОсновныеПараметры) Экспорт #Область ИнициализацияЗапросаИПеременных АналитикаУчетаПоПартнерам = ОсновныеПараметры.АналитикаУчетаПоПартнерам; ОбъектРасчетов = ОсновныеПараметры.ОбъектРасчетов; ВалютаРасчетов = ОсновныеПараметры.ВалютаРасчетов; ЭтоРасчетыСКлиентами = ОсновныеПараметры.ЭтоРасчетыСКлиентами; Регистратор = ОсновныеПараметры.Регистратор; Порядок = ОсновныеПараметры.Порядок; ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); ВалютаУправленческогоУчета = Константы.ВалютаУправленческогоУчета.Получить(); АналитикаОбъектаРасчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(АналитикаУчетаПоПартнерам,»Организация»); Организация = АналитикаОбъектаРасчета.Организация; &nbsp//Если график исполнения в договоре, то вместо графика заказа будет уточняться график договора. &nbsp//Если пользователь каким-то образом ввел заказы с графиками по такому договору, то все этапы таких заказов будут отнесены к графику договора &nbsp//и закрываться будут по ФИФО независимо от привязки накладных к заказам Если ТипЗнч(ОбъектРасчетов) = Тип(«СправочникСсылка.ДоговорыКонтрагентов») Тогда ГрафикИсполненияДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектРасчетов,»ГрафикИсполненияДоговора»); ГрафикВДоговоре = ЗначениеЗаполнено(ГрафикИсполненияДоговора); Иначе ГрафикИсполненияДоговора = Неопределено; ГрафикВДоговоре = ЛОЖЬ; КонецЕсли; Если ЭтоРасчетыСКлиентами Тогда РасчетыПоЗаказу = ТипЗнч(ОбъектРасчетов) = Тип(«ДокументСсылка.ЗаказКлиента») ИЛИ ТипЗнч(ОбъектРасчетов) = Тип(«ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента»); Иначе РасчетыПоЗаказу = ТипЗнч(ОбъектРасчетов) = Тип(«ДокументСсылка.ЗаказПоставщику»); КонецЕсли; СписокТиповПлатежек = ТипыПлатежныхДокументов(); РасчетыПоПлатежке = СписокТиповПлатежек.Найти(ТипЗнч(ОбъектРасчетов)) <> Неопределено; ХозяйственныеОперацииНеОтгрузка = ХозяйственныеОперацииНеОтгрузка(); Если НЕ РасчетыПоПлатежке И ТипЗнч(ОбъектРасчетов) = Тип(«ДокументСсылка.ПервичныйДокумент») Тогда ТипПервичногоДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектРасчетов,»ТипПервичногоДокумента»); РасчетыПоПлатежке = ТипПервичногоДокумента = Перечисления.ТипыПервичныхДокументов.ОплатаПоставщику ИЛИ ТипПервичногоДокумента = Перечисления.ТипыПервичныхДокументов.ОплатаОтКлиента; КонецЕсли; ГлобальныеПеременные = Новый Структура; ГлобальныеПеременные.Вставить(«ЕжедневнаяПереоценка», Константы.ПереоцениватьВалютныеСредстваПоДням.Получить()); &nbsp//Для уточнения плана оплат — в переменной хранится последний момент времени плана оплат, &nbsp//чтобы при добавлении записи в план оплат можно было сразу определить есть ли планы оплат с датой больше, чем добавляемая запись. ГлобальныеПеременные.Вставить(«МаксимальныйПорядокПланаОплат»,»»); ГлобальныеПеременные.Вставить(«ВалютаРасчетов», ВалютаРасчетов); ГлобальныеПеременные.Вставить(«ГрафикВДоговоре», ГрафикВДоговоре); ГлобальныеПеременные.Вставить(«ЭтоРасчетыСКлиентами», ЭтоРасчетыСКлиентами); ГлобальныеПеременные.Вставить(«ПорядокПереоценки», Новый Соответствие); &nbsp//Хозяйственные операции для заполнения. ХозяйственныеОперации = Новый Соответствие; Если ЭтоРасчетыСКлиентами Тогда ХозяйственныеОперации.Вставить(«ЗачетАванса», Перечисления.ХозяйственныеОперации.ЗачетАвансаКлиента); ХозяйственныеОперации.Вставить(«ПогашениеЗадолженности», Перечисления.ХозяйственныеОперации.ПогашениеЗадолженностиКлиента); ХозяйственныеОперации.Вставить(«ВозвратАванса», Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту); ХозяйственныеОперации.Вставить(«ПереоценкаПоложительная», Перечисления.ХозяйственныеОперации.КурсовыеРазницыКлиентыПрибыль); ХозяйственныеОперации.Вставить(«ПереоценкаОтрицательная», Перечисления.ХозяйственныеОперации.КурсовыеРазницыКлиентыУбыток); ХозяйственныеОперации.Вставить(«Планирование», Перечисления.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента); Иначе ХозяйственныеОперации.Вставить(«ЗачетАванса», Перечисления.ХозяйственныеОперации.ЗачетАвансаПоставщику); ХозяйственныеОперации.Вставить(«ПогашениеЗадолженности», Перечисления.ХозяйственныеОперации.ПогашениеЗадолженностиПоставщику); ХозяйственныеОперации.Вставить(«ВозвратАванса», Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика); ХозяйственныеОперации.Вставить(«ПереоценкаПоложительная», Перечисления.ХозяйственныеОперации.КурсовыеРазницыПоставщикиУбыток); ХозяйственныеОперации.Вставить(«ПереоценкаОтрицательная», Перечисления.ХозяйственныеОперации.КурсовыеРазницыПоставщикиПрибыль); ХозяйственныеОперации.Вставить(«Планирование», Перечисления.ХозяйственныеОперации.ПланированиеПоЗаказуПоставщику); КонецЕсли; ХозяйственныеОперации.Вставить(«ПереносАванса», Перечисления.ХозяйственныеОперации.ПереносАванса); ГлобальныеПеременные.Вставить(«ХозяйственныеОперации», ХозяйственныеОперации); Запрос = Новый Запрос; Менеджер = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = Менеджер; Запрос.УстановитьПараметр(«ОбъектРасчетов», ОбъектРасчетов); Запрос.УстановитьПараметр(«АналитикаУчетаПоПартнерам», АналитикаУчетаПоПартнерам); Запрос.УстановитьПараметр(«Организация», Организация); Запрос.УстановитьПараметр(«ВалютаУпр», ВалютаУправленческогоУчета); Запрос.УстановитьПараметр(«ВалютаРегл», ВалютаРегламентированногоУчета); Запрос.УстановитьПараметр(«СписокТиповЗаказов», СписокТиповРегистраторовПланов()); Запрос.УстановитьПараметр(«ВалютаРасчетов», ВалютаРасчетов); Запрос.УстановитьПараметр(«Порядок», Порядок); Запрос.УстановитьПараметр(«ГрафикВДоговоре», ГрафикВДоговоре); Запрос.УстановитьПараметр(«ГрафикИсполненияДоговора», ГрафикИсполненияДоговора); Запрос.УстановитьПараметр(«РасчетыПоЗаказу», РасчетыПоЗаказу); Запрос.УстановитьПараметр(«ЭтоРасчетыСКлиентами», ЭтоРасчетыСКлиентами); Запрос.УстановитьПараметр(«Регистратор», Регистратор); Запрос.УстановитьПараметр(«ПорядокЗачетаПоДатеПлатежа», Константы.ПорядокЗачетаДокументовПоДатеОперации.Получить() = 1); #КонецОбласти #Область ИнициализацияНаборовЗаписей Если ЭтоРасчетыСКлиентами Тогда НаборЗаписейПоСрокам = РегистрыНакопления.РасчетыСКлиентамиПоСрокам.СоздатьНаборЗаписей(); НаборЗаписейПланОплат = РегистрыНакопления.РасчетыСКлиентамиПланОплат.СоздатьНаборЗаписей(); НаборЗаписейПланОтгрузокПоставок = РегистрыНакопления.РасчетыСКлиентамиПланОтгрузок.СоздатьНаборЗаписей(); Иначе НаборЗаписейПоСрокам = РегистрыНакопления.РасчетыСПоставщикамиПоСрокам.СоздатьНаборЗаписей(); НаборЗаписейПланОплат = РегистрыНакопления.РасчетыСПоставщикамиПланОплат.СоздатьНаборЗаписей(); НаборЗаписейПланОтгрузокПоставок = РегистрыНакопления.РасчетыСПоставщикамиПланПоставок.СоздатьНаборЗаписей(); КонецЕсли; Если ОсновныеПараметры.Свойство(«ДополнительныеСвойстваПроведения») И ОсновныеПараметры.ДополнительныеСвойстваПроведения <> Неопределено Тогда НаборЗаписейПоСрокам.ДополнительныеСвойства.Вставить(«ПроверятьИзмененияРегистра», Истина); Если ОсновныеПараметры.Свойство(«Регистратор») Тогда &nbsp// При изменении проведения документа будут изменения в регистре, но по ним не следует регистрировать документ к отражению, &nbsp// так как он в любом случае изменит свои данные отражения при проведении (или распроведении). НаборЗаписейПоСрокам.ДополнительныеСвойства.Вставить(«НеотражаемыйДокумент», ОсновныеПараметры.Регистратор); КонецЕсли; КонецЕсли; РегистраторРасчетовОбъект = РегистраторРасчетов(ОбъектРасчетов, АналитикаУчетаПоПартнерам, ВалютаРасчетов, ЭтоРасчетыСКлиентами, Организация); РегистраторРасчетов = РегистраторРасчетовОбъект.Ссылка; НаборЗаписейПоСрокам.Отбор.Регистратор.Установить(РегистраторРасчетов); НаборЗаписейПланОплат.Отбор.Регистратор.Установить(РегистраторРасчетов); НаборЗаписейПланОтгрузокПоставок.Отбор.Регистратор.Установить(РегистраторРасчетов); #КонецОбласти &nbsp//Движения до начала пересчета и остатки. СформироватьВТДанныхРегистровДоНачалаРасчетов(Запрос, ЭтоРасчетыСКлиентами); &nbsp//Данные регистров с порядком меньше порядка начала расчета, далее дополняются. ТаблицаРасчетовПоСрокам = Менеджер.Таблицы.ПолучитьДанные().Выгрузить(); ТаблицаПланОплат = Менеджер.Таблицы.ПолучитьДанные().Выгрузить(); ТаблицаПланОтгрузокПоставок = Менеджер.Таблицы.ПолучитьДанные().Выгрузить(); &nbsp//Движения после начала пересчета и остатки до начала пересчета для распределения. РасчетыОтгрузкиПоставки = ПолучитьОтгрузкиПоставки(Запрос, Порядок); ПланыОплат = ПолучитьПланыОплат(Запрос, Порядок, ЭтоРасчетыСКлиентами); ПланыОтгрузокПоставок = ПолучитьПланыОтгрузокПоставок(Запрос, Порядок, ЭтоРасчетыСКлиентами); РасчетыОплаты = ПолучитьОплаты(Запрос, Порядок); Если РасчетыОплаты.Количество() = 0 И РасчетыОтгрузкиПоставки.Количество() = 0 И ТаблицаРасчетовПоСрокам.Количество() = 0 И НЕ ОсновныеПараметры.ТолькоПланы Тогда НаборЗаписейПоСрокам.Записать(); КонецЕсли; Если ПланыОплат.Количество() = 0 И РасчетыОтгрузкиПоставки.Количество() = 0 И ТаблицаПланОплат.Количество() = 0 Тогда НаборЗаписейПланОплат.Записать(); КонецЕсли; Если ПланыОтгрузокПоставок.Количество() = 0 И ТаблицаПланОтгрузокПоставок.Количество() = 0 Тогда НаборЗаписейПланОтгрузокПоставок.Записать(); КонецЕсли; НужнаПереоценка = (ВалютаРасчетов <> ВалютаРегламентированногоУчета ИЛИ ВалютаРасчетов <> ВалютаУправленческогоУчета) И РасчетыОтгрузкиПоставки.Количество() > 0 И НЕ ОсновныеПараметры.ТолькоПланы; Если НужнаПереоценка Тогда ДатаНачалаКурсов = Мин(РасчетыОтгрузкиПоставки.Период, ?(РасчетыОплаты.Количество() > 0, РасчетыОплаты.Период, РасчетыОтгрузкиПоставки.Период)); ТаблицаКурсовВалют = ПолучитьКурсыВалют(Запрос, ДатаНачалаКурсов, ГлобальныеПеременные); ГлобальныеПеременные.Вставить(«ТаблицаКурсовВалют», ТаблицаКурсовВалют); КонецЕсли; ДокументыРасчетаКурсовыхРазниц = Документы.РасчетКурсовыхРазниц.ДокументыПереоценки(Организация, ?(РасчетыОтгрузкиПоставки.Количество() > 0, РасчетыОтгрузкиПоставки.ДатаВозникновения, ТекущаяДатаСеанса()), ТекущаяДатаСеанса(), ЭтоРасчетыСКлиентами); ГлобальныеПеременные.Вставить(«ДокументыРасчетаКурсовыхРазниц», ДокументыРасчетаКурсовыхРазниц); &nbsp//Добавляем приходные записи по плану оплаты (заказы , график договора) &nbsp//накладные не добавляем, т.к они могут быть уменьшены авансами. Для Каждого Стр Из ПланыОплат Цикл Если НЕ Стр.ПриходДобавлен Тогда НовСтр = ТаблицаПланОплат.Добавить(); НовСтр.ВидДвижения = ВидДвиженияНакопления.Приход; НовСтр.ДокументРегистратор = Стр.Регистратор; НовСтр.ДокументПлан = Стр.Регистратор; НовСтр.ВариантОплаты = Стр.ВариантОплаты; НовСтр.Период = Стр.Период; НовСтр.ДатаВозникновения = Стр.ДатаВозникновения; НовСтр.ДатаПлановогоПогашения = Стр.ДатаПлановогоПогашения; НовСтр.КОплате = Стр.КОплате; НовСтр.ПорядокОперации = Стр.ПорядокОперации; НовСтр.ПорядокЗачета = Стр.ПорядокОперации; НовСтр.ХозяйственнаяОперация = ГлобальныеПеременные.ХозяйственныеОперации; КонецЕсли; КонецЦикла; &nbsp//Добавляем приходные записи планов отгрузок. Для Каждого Стр Из ПланыОтгрузокПоставок Цикл Если НЕ Стр.ПриходДобавлен Тогда НовСтр = ТаблицаПланОтгрузокПоставок.Добавить(); НовСтр.ВидДвижения = ВидДвиженияНакопления.Приход; НовСтр.ДокументРегистратор = Стр.Регистратор; НовСтр.ДокументПлан = Стр.Регистратор; НовСтр.Период = Стр.Период; НовСтр.ДатаВозникновения = Стр.ДатаВозникновения; НовСтр.ДатаПлановогоПогашения = Стр.ДатаПлановогоПогашения; НовСтр.Сумма = Стр.КОтгрузкеПоставке; НовСтр.ПорядокЗачета = Стр.ПорядокОперации; НовСтр.ПорядокОперации = Стр.ПорядокОперации; КонецЕсли; КонецЦикла; &nbsp//Для определения курса корректировки реализации в минус. &nbsp//Ключ — ДокументСсылка.РеализациТоваровУслуг, ДокументСсылка.АктВыполненныхРабот &nbsp//Значение — Структура &nbsp// * СуммаДокумента, СуммаДокументаРегл, СуммаДокументаУпр — нужны для определения среднего курса реализации при проведении корректировок. ДанныеНакладных = Новый Соответствие; ТаблицаДанныхНакладных = ПолучитьДанныеНакладных(Запрос); Для Каждого Строка Из ТаблицаДанныхНакладных Цикл ДанныеНакладных.Вставить(Строка.Накладная, СтруктураСумм(Строка.Сумма, Строка.СуммаРегл, Строка.СуммаУпр)); КонецЦикла; ГлобальныеПеременные.Вставить(«ДанныеНакладных», ДанныеНакладных); ЗаписейОплаты = РасчетыОплаты.Количество(); ЗаписейОтгрузкиПоставки = РасчетыОтгрузкиПоставки.Количество(); ЗаписейОбработать = ЗаписейОплаты + ЗаписейОтгрузкиПоставки; Индексы = Новый Структура; &nbsp//Индекс текущей обрабатываемой строки отгрузок. Индексы.Вставить(«ИндексОтгрузкиПоставки», 0); &nbsp//Индекс текущей обрабатываемой строки оплат. Индексы.Вставить(«ИндексОплаты», 0); &nbsp//Для распределения копеек в рамках документа. ТекущийДокументОплаты = Неопределено; ТекущийДокументОтгрузкиПоставки = Неопределено; &nbsp//Сколько строк отгрузки пропущено для зачета корректировкой реализации. ПропускОтгрузкиПоставки = 0; Пока Индексы.ИндексОплаты + Индексы.ИндексОтгрузкиПоставки < ЗаписейОбработать Цикл Если Индексы.ИндексОплаты <= ЗаписейОплаты — 1 И Индексы.ИндексОтгрузкиПоставки <= ЗаписейОтгрузкиПоставки — 1 Тогда СтрокаОплаты = РасчетыОплаты; СтрокаОтгрузкиПоставки = РасчетыОтгрузкиПоставки; &nbsp//Оплата раньше отгрузки. Если СтрокаОплаты.ПорядокОперации < СтрокаОтгрузкиПоставки.ПорядокОперации &nbsp//В пределах регистратора (при расчетах по накладным) должен происходить зачет аванса. ИЛИ СтрокаОплаты.Регистратор = СтрокаОтгрузкиПоставки.Регистратор Тогда &nbsp//Переброс аванса на расчетный документ — накладную. НеОтгрузка = ХозяйственныеОперацииНеОтгрузка.Найти(СтрокаОтгрузкиПоставки.ХозяйственнаяОперация) <> Неопределено; ДвойнаяЗаписьНеНужна = НеОтгрузка &nbsp//Если расчеты по платежке, то эти движения уже отражены в оперативных расчетах в рамках переноса с одного объекта расчетов на другой. ИЛИ РасчетыПоПлатежке; &nbsp//Приход предоплаты. Если НЕ СтрокаОплаты.ПриходДобавлен Тогда ПересчитатьСуммыЕслиЭтоКорректировка(ГлобальныеПеременные, СтрокаОплаты); ДобавитьПриход(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОплаты, «Оплата»); КонецЕсли; &nbsp//Уменьшаем план отгрузки, если есть. Если НЕ СтрокаОтгрузкиПоставки.ПланОтгрузокПоставокСписан Тогда СписатьПланОтгрузкиПоставки(ГлобальныеПеременные, ТаблицаПланОтгрузокПоставок, СтрокаОтгрузкиПоставки, ПланыОтгрузокПоставок); КонецЕсли; Если СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда Если ТекущийДокументОплаты <> СтрокаОплаты.РасчетныйДокумент Тогда ПредоплатаРаспределеноРегл = 0; ПредоплатаРаспределеноУпр = 0; ТекущийДокументОплаты = СтрокаОплаты.РасчетныйДокумент; КонецЕсли; Если ТекущийДокументОтгрузкиПоставки <> СтрокаОтгрузкиПоставки.РасчетныйДокумент Тогда ДолгРаспределеноРегл = 0; ДолгРаспределеноУпр = 0; ТекущийДокументОтгрузкиПоставки = СтрокаОтгрузкиПоставки.РасчетныйДокумент; КонецЕсли; &nbsp//Добавляем запись списания предоплаты. НовСтр_Предоплата_Расход = ТаблицаРасчетовПоСрокам.Добавить(); НовСтр_Предоплата_Расход.ВидДвижения = ВидДвиженияНакопления.Расход; НовСтр_Предоплата_Расход.ДокументРегистратор = СтрокаОтгрузкиПоставки.Регистратор; НовСтр_Предоплата_Расход.ВалютаДокумента = СтрокаОтгрузкиПоставки.ВалютаДокумента; НовСтр_Предоплата_Расход.Период = СтрокаОтгрузкиПоставки.Период; НовСтр_Предоплата_Расход.РасчетныйДокумент = СтрокаОплаты.РасчетныйДокумент; НовСтр_Предоплата_Расход.ДатаВозникновения = СтрокаОплаты.ДатаВозникновения; НовСтр_Предоплата_Расход.ДатаПлановогоПогашения = Дата(1,1,1); НовСтр_Предоплата_Расход.ПорядокЗачета = СтрокаОплаты.ПорядокОперации; НовСтр_Предоплата_Расход.ПорядокОперации = СтрокаОтгрузкиПоставки.ПорядокОперации; НовСтр_Предоплата_Расход.СтатьяДвиженияДенежныхСредств = СтрокаОтгрузкиПоставки.СтатьяДвиженияДенежныхСредств; НовСтр_Предоплата_Расход.КорОбъектРасчетов = СтрокаОплаты.КорОбъектРасчетов; СуммаСписания = Мин(СтрокаОплаты.Сумма, СтрокаОтгрузкиПоставки.Сумма); &nbsp//Возврат аванса с ручным курсом отражаем по курсу возврата. Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса И СтрокаОтгрузкиПоставки.РучнойКурсРегл Тогда ПредоплатаРеглПредв = СтрокаОтгрузкиПоставки.СуммаРегл / СтрокаОтгрузкиПоставки.Сумма * СуммаСписания; &nbsp//Ошибки округления сразу зачитываем, если что они переоценятся. ИначеЕсли СтрокаОтгрузкиПоставки.РучнойКурсРегл И СтрокаОтгрузкиПоставки.Сумма = СуммаСписания Тогда ПредоплатаРеглПредв = СтрокаОтгрузкиПоставки.СуммаРегл; &nbsp//Остальные авансы по курсу аванса. Иначе ПредоплатаРеглПредв = СтрокаОплаты.СуммаРегл / СтрокаОплаты.Сумма * СуммаСписания; КонецЕсли; Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса И СтрокаОтгрузкиПоставки.РучнойКурсУпр Тогда ПредоплатаУпрПредв = СтрокаОтгрузкиПоставки.СуммаУпр / СтрокаОтгрузкиПоставки.Сумма * СуммаСписания; ИначеЕсли СтрокаОтгрузкиПоставки.РучнойКурсУпр И СтрокаОтгрузкиПоставки.Сумма = СуммаСписания Тогда ПредоплатаУпрПредв = СтрокаОтгрузкиПоставки.СуммаУпр; Иначе ПредоплатаУпрПредв = СтрокаОплаты.СуммаУпр / СтрокаОплаты.Сумма * СуммаСписания; КонецЕсли; Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса Тогда НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации; ИначеЕсли РасчетыПоПлатежке И НЕ СтрокаОтгрузкиПоставки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВзаимозачетЗадолженности Тогда НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации; ИначеЕсли НеОтгрузка Тогда НовСтр_Предоплата_Расход.ХозяйственнаяОперация = СтрокаОтгрузкиПоставки.ХозяйственнаяОперация; Иначе НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации; КонецЕсли; НовСтр_Предоплата_Расход.Предоплата = СуммаСписания; НовСтр_Предоплата_Расход.ПредоплатаРегл = Окр(ПредоплатаРеглПредв + ПредоплатаРаспределеноРегл — Окр(ПредоплатаРаспределеноРегл, 2), 2); НовСтр_Предоплата_Расход.ПредоплатаУпр = Окр(ПредоплатаУпрПредв + ПредоплатаРаспределеноУпр — Окр(ПредоплатаРаспределеноУпр, 2), 2); ПредоплатаРаспределеноРегл = ПредоплатаРаспределеноРегл + ПредоплатаРеглПредв; ПредоплатаРаспределеноУпр = ПредоплатаРаспределеноУпр + ПредоплатаУпрПредв; &nbsp//Уменьшаем строку оплаты на сумму зачета СтрокаОплаты.Сумма = СтрокаОплаты.Сумма — НовСтр_Предоплата_Расход.Предоплата; СтрокаОплаты.СуммаРегл = СтрокаОплаты.СуммаРегл — НовСтр_Предоплата_Расход.ПредоплатаРегл; СтрокаОплаты.СуммаУпр = СтрокаОплаты.СуммаУпр — НовСтр_Предоплата_Расход.ПредоплатаУпр; Если НЕ ДвойнаяЗаписьНеНужна Тогда &nbsp//Отражаем приход на сумму долга по курсу предоплаты. НовСтр_Долг_Приход = ТаблицаРасчетовПоСрокам.Добавить(); ЗаполнитьЗначенияСвойств(НовСтр_Долг_Приход, НовСтр_Предоплата_Расход , ,»Предоплата, ПредоплатаУпр, ПредоплатаРегл, КорОбъектРасчетов»); НовСтр_Долг_Приход.ВидДвижения = ВидДвиженияНакопления.Приход; НовСтр_Долг_Приход.Период = СтрокаОтгрузкиПоставки.Период; НовСтр_Долг_Приход.ДатаВозникновения = СтрокаОтгрузкиПоставки.Период; НовСтр_Долг_Приход.ДатаПлановогоПогашения = СтрокаОтгрузкиПоставки.ДатаПлановогоПогашения; НовСтр_Долг_Приход.РасчетныйДокумент = СтрокаОтгрузкиПоставки.Регистратор; НовСтр_Долг_Приход.ПорядокЗачета = СтрокаОтгрузкиПоставки.ПорядокЗачета; НовСтр_Долг_Приход.ХозяйственнаяОперация = СтрокаОтгрузкиПоставки.ХозяйственнаяОперация; НовСтр_Долг_Приход.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка(); НовСтр_Долг_Приход.Долг = НовСтр_Предоплата_Расход.Предоплата; Если СтрокаОтгрузкиПоставки.РучнойКурсУпр Тогда НовСтр_Долг_Приход.ДолгУпр = СтрокаОтгрузкиПоставки.КурсУпр * СуммаСписания; Иначе НовСтр_Долг_Приход.ДолгУпр = НовСтр_Предоплата_Расход.ПредоплатаУпр; КонецЕсли; Если СтрокаОтгрузкиПоставки.РучнойКурсРегл Тогда НовСтр_Долг_Приход.ДолгРегл = СтрокаОтгрузкиПоставки.КурсРегл * СуммаСписания; Иначе НовСтр_Долг_Приход.ДолгРегл = НовСтр_Предоплата_Расход.ПредоплатаРегл; КонецЕсли; &nbsp//Переносим предоплату на расчетный документ отгрузки. НовСтр_Долг_Расход = ТаблицаРасчетовПоСрокам.Добавить(); ЗаполнитьЗначенияСвойств(НовСтр_Долг_Расход, НовСтр_Долг_Приход); НовСтр_Долг_Расход.ВидДвижения = ВидДвиженияНакопления.Расход; НовСтр_Долг_Расход.ХозяйственнаяОперация = ХозяйственныеОперации; НовСтр_Долг_Расход.ДатаПлановогоПогашения = СтрокаОтгрузкиПоставки.ДатаПлановогоПогашения; НовСтр_Долг_Расход.РасчетныйДокумент = СтрокаОтгрузкиПоставки.Регистратор; НовСтр_Долг_Расход.ДатаВозникновения = СтрокаОтгрузкиПоставки.Период; НовСтр_Долг_Расход.ПорядокЗачета = СтрокаОтгрузкиПоставки.ПорядокЗачета; НовСтр_Долг_Расход.ДокументРегистратор = СтрокаОтгрузкиПоставки.Регистратор; НовСтр_Долг_Расход.СтатьяДвиженияДенежныхСредств = СтрокаОтгрузкиПоставки.СтатьяДвиженияДенежныхСредств; НовСтр_Долг_Расход.Долг = НовСтр_Предоплата_Расход.Предоплата; НовСтр_Долг_Расход.ДолгУпр = НовСтр_Предоплата_Расход.ПредоплатаУпр; НовСтр_Долг_Расход.ДолгРегл = НовСтр_Предоплата_Расход.ПредоплатаРегл; &nbsp//Если курс переноса предоплаты и прихода по долгу не совпал, делаем переоценку. &nbsp//Возможно, когда и в оплате и в накладной ручные суммы в валюте регл. или упр. учета. Если НовСтр_Долг_Приход.ДолгРегл <> НовСтр_Долг_Расход.ДолгРегл ИЛИ НовСтр_Долг_Приход.ДолгУпр <> НовСтр_Долг_Расход.ДолгУпр Тогда ДобавитьЗаписьПереоценки(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки.Период, НовСтр_Долг_Приход, «Долг», НовСтр_Долг_Расход.ДолгРегл — НовСтр_Долг_Приход.ДолгРегл, НовСтр_Долг_Расход.ДолгУпр — НовСтр_Долг_Приход.ДолгУпр); КонецЕсли; КонецЕсли; Если СтрокаОтгрузкиПоставки.РучнойКурсРегл И НЕ ДвойнаяЗаписьНеНужна Тогда &nbsp//Остаток должен быть уменьшен ровно на ту сумму, на которую уже сформирован приход в двойной записи. ДолгРеглПредв = НовСтр_Долг_Приход.ДолгРегл; Иначе &nbsp//Иначе пропорционально уменьшаем остаток строки. ДолгРеглПредв = СтрокаОтгрузкиПоставки.КурсРегл * СуммаСписания; КонецЕсли; Если СтрокаОтгрузкиПоставки.РучнойКурсУпр И НЕ ДвойнаяЗаписьНеНужна Тогда ДолгУпрПредв = НовСтр_Долг_Приход.ДолгУпр; Иначе ДолгУпрПредв = СтрокаОтгрузкиПоставки.КурсУпр * СуммаСписания; КонецЕсли; Если ГлобальныеПеременные.ДанныеНакладных = Неопределено Тогда ГлобальныеПеременные.ДанныеНакладных.Вставить(СтрокаОтгрузкиПоставки.Регистратор, СтруктураСумм()); КонецЕсли; СтрокаОтгрузкиПоставки.Сумма = СтрокаОтгрузкиПоставки.Сумма — СуммаСписания; СтрокаОтгрузкиПоставки.СуммаРегл = СтрокаОтгрузкиПоставки.СуммаРегл — Окр(ДолгРеглПредв + ДолгРаспределеноРегл — Окр(ДолгРаспределеноРегл,2),2); СтрокаОтгрузкиПоставки.СуммаУпр = СтрокаОтгрузкиПоставки.СуммаУпр — Окр(ДолгУпрПредв + ДолгРаспределеноУпр — Окр(ДолгРаспределеноУпр,2),2); ДолгРаспределеноРегл = ДолгРаспределеноРегл + ДолгРеглПредв; ДолгРаспределеноУпр = ДолгРаспределеноУпр + ДолгУпрПредв; ДанныеНакладной = ГлобальныеПеременные.ДанныеНакладных; ДанныеНакладной.СуммаДокумента = ДанныеНакладной.СуммаДокумента + СуммаСписания; ДанныеНакладной.СуммаДокументаРегл = ДанныеНакладной.СуммаДокументаРегл + НовСтр_Предоплата_Расход.ПредоплатаРегл;//- ДанныеНакладной.СуммаДокументаУпр = ДанныеНакладной.СуммаДокументаУпр + НовСтр_Предоплата_Расход.ПредоплатаУпр; &nbsp//Уменьшаем график оплаты условной задолженности на разницу суммы зачтенного аванса и строк накладной сверх заказа. СуммаУменьшенияГрафика = ВзаиморасчетыСервер.СписатьСумму(СуммаСписания, СтрокаОтгрузкиПоставки.КОплате); Если СуммаСписания > 0 И НЕ СтрокаОплаты.ГрафикСписан Тогда СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОплаты, СуммаСписания, «Аванс», ПланыОплат); КонецЕсли; Если СтрокаОплаты.Сумма = 0 Тогда Индексы.ИндексОплаты = Индексы.ИндексОплаты + 1; Если Окр(СтрокаОплаты.СуммаРегл, 2) <> 0 ИЛИ Окр(СтрокаОплаты.СуммаУпр, 2) <> 0 Тогда ДобавитьЗаписьПереоценки(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки.Период, СтрокаОплаты, «Предоплата», -Окр(СтрокаОплаты.СуммаРегл, 2), -Окр(СтрокаОплаты.СуммаУпр, 2)); КонецЕсли; КонецЕсли; КонецЕсли; Если СтрокаОтгрузкиПоставки.Сумма = 0 Тогда Индексы.ИндексОтгрузкиПоставки = Индексы.ИндексОтгрузкиПоставки + 1; Если СтрокаОтгрузкиПоставки.СуммаРегл <> 0 ИЛИ СтрокаОтгрузкиПоставки.СуммаУпр <> 0 Тогда ДобавитьЗаписьПереоценки(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, НачалоДня(СтрокаОплаты.Период), СтрокаОтгрузкиПоставки, «Долг», -Окр(СтрокаОтгрузкиПоставки.СуммаРегл, 2), -Окр(СтрокаОтгрузкиПоставки.СуммаУпр, 2)); КонецЕсли; КонецЕсли; &nbsp//Отгрузка раньше оплаты. Иначе &nbsp//Обычная оплата. Если НЕ СтрокаОплаты.ЭтоКорректировка Тогда &nbsp//Добавляем строку прихода долга по отгрузке/поставке. Если НЕ СтрокаОтгрузкиПоставки.ПриходДобавлен И СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда ПересчитатьСуммыЕслиЭтоКорректировка(ГлобальныеПеременные, СтрокаОтгрузкиПоставки); ДобавитьПриход(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки, «ОтгрузкаПоставка»); &nbsp//Уточняется план только на сумму по заказу. СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОтгрузкиПоставки, СтрокаОтгрузкиПоставки.Сумма — СтрокаОтгрузкиПоставки.КОплате, «УточнениеПлана»,ПланыОплат); &nbsp//Добавляются записи плана на всю сумму включая уточнение и сверхзаказа. СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОтгрузкиПоставки, СтрокаОтгрузкиПоставки.Сумма, «ОтгрузкаПоставка», ПланыОплат); КонецЕсли; &nbsp//Списываем план отгрузки если есть. Если НЕ СтрокаОтгрузкиПоставки.ПланОтгрузокПоставокСписан Тогда СписатьПланОтгрузкиПоставки(ГлобальныеПеременные, ТаблицаПланОтгрузокПоставок, СтрокаОтгрузкиПоставки, ПланыОтгрузокПоставок); КонецЕсли; Если СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда &nbsp//Переоценка накладной до даты оплаты. Если НужнаПереоценка Тогда ПереоценитьДолг(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки, СтрокаОплаты); КонецЕсли; &nbsp//Если расчетный документ накладная изменился, то сбрасываем служебные реквизиты распределения копеек. Если ТекущийДокументОтгрузкиПоставки <> СтрокаОтгрузкиПоставки.РасчетныйДокумент Тогда ДолгРаспределеноРегл = 0; ДолгРаспределеноУпр = 0; ТекущийДокументОтгрузкиПоставки = СтрокаОтгрузкиПоставки.РасчетныйДокумент; КонецЕсли; &nbsp//Добавляем строку погашения задолженности. НовСтр_Долг_Расход = ТаблицаРасчетовПоСрокам.Добавить(); НовСтр_Долг_Расход.ВидДвижения = ВидДвиженияНакопления.Расход; НовСтр_Долг_Расход.ДокументРегистратор = СтрокаОплаты.Регистратор; &nbsp//Взаимозачет считаем взаимозачетом Если СтрокаОплаты.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВзаимозачетЗадолженности Тогда НовСтр_Долг_Расход.ХозяйственнаяОперация = СтрокаОплаты.ХозяйственнаяОперация; Иначе НовСтр_Долг_Расход.ХозяйственнаяОперация = ХозяйственныеОперации; КонецЕсли; НовСтр_Долг_Расход.ВалютаДокумента = СтрокаОплаты.ВалютаДокумента; НовСтр_Долг_Расход.Период = СтрокаОплаты.Период; НовСтр_Долг_Расход.ПорядокОпера

Ошибка происходит в толстом клиенте управляемое приложение, на типовой конфигурации, созданной под обычное приложение.

При создании объекта (элемента справочника или документа) проверяется существование всех обработок подписок.

В данном случае ошибка возникает в такой строчке кода:

Характеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();

Полный текст ошибки:

При подписке ПроверитьУстранениеПроблемыОбъекта на событие ПередЗаписью произошла ошибка. Обработчик события не найден.

Поиск причины и исправление

Глобальный поиск дает события или саму процедуру:

Обратите внимание открывать для ТонкогоКлиента следует не там, где эта процедура находится, ведь там может стоять флажок «Вызов сервера», а та которая его вызывает и указана в подписке на события.

Флажок «Клиент (управляемое приложение) в свойствах одного из модулей

Далее тестируете создание еще раз, в моем случае цепочкой вызывались еще ряд модулей, которые пришлось также модифицировать.

Как сделать глобальный поиск по тексту?

Меню «Правка/Глобальный поиск»

При этом обязательно необходимо указать поиск по «Свойствам», иначе не найдете такой подписки:

Корень проблемы

Многие зададут вопрос: а зачем запускать создавать объект под приложением не адаптированном под управляемое приложение?.

Ответ в том, что многие пишут обработки в режиме управляемого приложения (удобно им или берут готовые под переделку), если в свойствах конфигурации разрешить их использование, они будут работать, но только в составе конфигурации, а не как внешняя обработка.

Для того, чтобы отладить такую обработку, написанную вами или «чужую», можно произвести запуск конфигурации в другом режиме и она откроется, если не будет производить сложный действий, всё будет отлично, но не в этом случае.

Реклама — двигатель торговли: сотня двигает, один торгует.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *