При работе с конфигурациями на платформе 1С:Предприятие 8, такими как «Комплексная автоматизация» редакции 1.1 или «Управление производственным предприятием» редакции 1.3, пользователи часто сталкиваются с неприятной ситуацией: документ Корректировка поступления, заполненный вручную и успешно проведенный один раз, внезапно «теряет» все данные в табличной части «Услуги» при попытке перепровести его из формы списка (через контекстное меню). В этой статье мы подробно разберем, почему это происходит, проанализируем программный код и найдем способы решения данной проблемы.
Рассмотрим стандартный сценарий работы бухгалтера. На основании документа Поступление товаров и услуг создается Корректировка поступления. Пользователь внимательно заполняет изменившиеся суммы по услугам, нажимает «ОК» — документ проводится, проводки формируются корректно. Однако, если позже возникнет необходимость перепровести этот документ, не открывая его форму (например, выделив его в списке и выбрав команду «Провести» правой кнопкой мыши), табличная часть «Услуги» полностью очищается. Это критическая ошибка, так как она ведет к потере данных и искажению учета.
Проанализируем причину такого поведения системы. Проблема кроется в архитектурном решении разработчиков при проектировании модуля объекта. В модуле объекта документа объявлена экспортная переменная мДокументПоступленияСсылка. Рассмотрим цепочку событий:
ДокументПоступления.мДокументПоступленияСсылка остается пустой (Неопределено).Для понимания логики ограничений в корректировках, давайте посмотрим на пример кода, который отвечает за доступность редактирования данных в бухгалтерском и налоговом учете (БУ и НУ). Это особенно актуально для пользователей, у которых поля в документе становятся «серыми» (недоступными).
Функция ДоступнаКорректировкаБУиНУ Экспорт
// Корректировка по учетам доступна только при использовании режима РА
// и только для некоторых видов документов
Возврат мИспользоватьРасширеннуюАналитику
И мДатаНачалаИспользованияРасширеннойАналитики <= Дата
И ((ТипЗнч(ДокументПоступления) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг")
И ДокументПоступления.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия
И ЗначениеЗаполнено(ДокументПоступления.ДоговорКонтрагента))
ИЛИ (ТипЗнч(ДокументПоступления) = Тип("ДокументСсылка.КорректировкаПоступления")
И ДокументПоступления.КорректироватьБУиНУ));
КонецФункции
Из данного фрагмента видно, что возможность полноценной корректировки жестко привязана к использованию РАУЗ (Расширенной аналитики учета затрат). Если в вашей учетной политике РАУЗ не задействован, документ может ограничивать функционал только корректировкой НДС, что также часто вызывает вопросы у пользователей.
Самый правильный и безопасный способ решения проблемы — это обновление вашей информационной базы. Данная ошибка была официально признана разработчиками 1С и зарегистрирована под номером 10098238.
Исправление вошло в следующие релизы:
В описании к обновлению прямо указано: «Исправлена ошибка: При проведении документа Корректировка поступления из списка документов, табличная часть Услуги очищается».
Если по каким-то причинам оперативное обновление конфигурации невозможно, мы можем применить «заплатку» самостоятельно. Нам необходимо гарантировать, что переменная мДокументПоступленияСсылка будет инициализирована даже в том случае, если форма документа не открывалась.
Разберем, что нужно сделать в модуле объекта документа КорректировкаПоступления:
ПередЗаписью или начало процедур, отвечающих за проведение (ОбработкаПроведения).Пример кода для вставки в модуль объекта:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Вставьте этот блок, если переменная мДокументПоступленияСсылка
// не инициализируется в модуле объекта автоматически
Если мДокументПоступленияСсылка = Неопределено Или мДокументПоступленияСсылка.Пустая() Тогда
мДокументПоступленияСсылка = ДокументПоступления;
КонецЕсли;
// Далее следует основной код процедуры...
КонецПроцедуры
Этот простой шаг позволит системе «увидеть» документ-основание даже при фоновом проведении и сохранит данные в табличной части услуг.
Похожие проблемы могут возникать и в документе Корректировка реализации, особенно если корректировка вводится на основании Отчета комиссионера. Выясним причину, по которой иногда невозможно выбрать вариант «Отражать во всех разделах учета».
Система анализирует вид операции и статус партий товаров. Если корректировка создается по согласованию сторон на основании комиссионных документов, алгоритмы проверяют, были ли сформированы проводки по реализации в исходном документе. Если логика проверки в модуле документа не находит подтверждения реализации (например, из-за специфических настроек договора), она блокирует возможность корректировки бухгалтерского и налогового учета, оставляя доступным только НДС.
Рекомендация: При возникновении подобных проблем в старых редакциях (КА 1.1 / УПП 1.3) всегда проверяйте, открыта ли форма документа перед его проведением. Если вы используете групповое проведение документов или обработку «Проведение документов», убедитесь, что ваш релиз содержит исправление ошибки 10098238.
Мы проанализировали серьезную техническую ошибку, связанную с очисткой данных в корректировках. Подведем итоги:
мДокументПоступленияСсылка в модуле объекта.Будьте внимательны при работе с документами корректировок в конфигурациях с обычными формами и всегда проверяйте результат проведения в отчетах или через просмотр движений документа.