Почему в документе «Корректировка поступления» пропадают услуги при проведении из списка и как это исправить?

Программист 1С v8.3 (Обычные формы) 1С:Комплексная автоматизация Бухгалтерский учет
← На главную

При работе с конфигурациями на платформе 1С:Предприятие 8, такими как «Комплексная автоматизация» редакции 1.1 или «Управление производственным предприятием» редакции 1.3, пользователи часто сталкиваются с неприятной ситуацией: документ Корректировка поступления, заполненный вручную и успешно проведенный один раз, внезапно «теряет» все данные в табличной части «Услуги» при попытке перепровести его из формы списка (через контекстное меню). В этой статье мы подробно разберем, почему это происходит, проанализируем программный код и найдем способы решения данной проблемы.

Суть проблемы и механизм возникновения ошибки

Рассмотрим стандартный сценарий работы бухгалтера. На основании документа Поступление товаров и услуг создается Корректировка поступления. Пользователь внимательно заполняет изменившиеся суммы по услугам, нажимает «ОК» — документ проводится, проводки формируются корректно. Однако, если позже возникнет необходимость перепровести этот документ, не открывая его форму (например, выделив его в списке и выбрав команду «Провести» правой кнопкой мыши), табличная часть «Услуги» полностью очищается. Это критическая ошибка, так как она ведет к потере данных и искажению учета.

Проанализируем причину такого поведения системы. Проблема кроется в архитектурном решении разработчиков при проектировании модуля объекта. В модуле объекта документа объявлена экспортная переменная мДокументПоступленияСсылка. Рассмотрим цепочку событий:

  1. При интерактивном открытии формы документа срабатывает код в модуле формы, который инициализирует (заполняет) эту переменную значением из реквизита ДокументПоступления.
  2. При проведении документа из открытой формы переменная заполнена, и алгоритмы расчета работают корректно.
  3. При проведении из списка (через контекстное меню) форма документа физически не создается и не открывается. Программный код, находящийся в модуле формы, не выполняется.
  4. Экспортная переменная мДокументПоступленияСсылка остается пустой (Неопределено).
  5. В процедурах проведения или перед записью в модуле объекта стоит проверка этой переменной. Поскольку она пуста, система «решает», что связи с исходным документом нет или данные не актуальны, и очищает табличную часть услуг.

Технический анализ программного кода

Для понимания логики ограничений в корректировках, давайте посмотрим на пример кода, который отвечает за доступность редактирования данных в бухгалтерском и налоговом учете (БУ и НУ). Это особенно актуально для пользователей, у которых поля в документе становятся «серыми» (недоступными).


Функция ДоступнаКорректировкаБУиНУ Экспорт
    // Корректировка по учетам доступна только при использовании режима РА 
    // и только для некоторых видов документов
    Возврат мИспользоватьРасширеннуюАналитику 
        И мДатаНачалаИспользованияРасширеннойАналитики <= Дата 
        И ((ТипЗнч(ДокументПоступления) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") 
            И ДокументПоступления.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия 
            И ЗначениеЗаполнено(ДокументПоступления.ДоговорКонтрагента)) 
        ИЛИ (ТипЗнч(ДокументПоступления) = Тип("ДокументСсылка.КорректировкаПоступления") 
            И ДокументПоступления.КорректироватьБУиНУ));
КонецФункции

Из данного фрагмента видно, что возможность полноценной корректировки жестко привязана к использованию РАУЗ (Расширенной аналитики учета затрат). Если в вашей учетной политике РАУЗ не задействован, документ может ограничивать функционал только корректировкой НДС, что также часто вызывает вопросы у пользователей.

Способ решения №1: Обновление конфигурации

Самый правильный и безопасный способ решения проблемы — это обновление вашей информационной базы. Данная ошибка была официально признана разработчиками 1С и зарегистрирована под номером 10098238.

Исправление вошло в следующие релизы:

В описании к обновлению прямо указано: «Исправлена ошибка: При проведении документа Корректировка поступления из списка документов, табличная часть Услуги очищается».

Способ решения №2: Исправление кода вручную (для программистов)

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

Разберем, что нужно сделать в модуле объекта документа КорректировкаПоступления:

  1. Найдем процедуру ПередЗаписью или начало процедур, отвечающих за проведение (ОбработкаПроведения).
  2. Добавим проверку заполнения внутренней переменной.

Пример кода для вставки в модуль объекта:


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    // Вставьте этот блок, если переменная мДокументПоступленияСсылка 
    // не инициализируется в модуле объекта автоматически
    Если мДокументПоступленияСсылка = Неопределено Или мДокументПоступленияСсылка.Пустая() Тогда
        мДокументПоступленияСсылка = ДокументПоступления;
    КонецЕсли;
    
    // Далее следует основной код процедуры...
КонецПроцедуры

Этот простой шаг позволит системе «увидеть» документ-основание даже при фоновом проведении и сохранит данные в табличной части услуг.

Нюансы при работе с корректировками реализации

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

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

Рекомендация: При возникновении подобных проблем в старых редакциях (КА 1.1 / УПП 1.3) всегда проверяйте, открыта ли форма документа перед его проведением. Если вы используете групповое проведение документов или обработку «Проведение документов», убедитесь, что ваш релиз содержит исправление ошибки 10098238.

Заключение

Мы проанализировали серьезную техническую ошибку, связанную с очисткой данных в корректировках. Подведем итоги:

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

← На главную