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