Почему не изменяется статья ДДС в списке платежных поручений входящих: причины и решение

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

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

Разберем причину проблемы: дублирование данных

Проанализируем архитектуру хранения данных в платежных документах УПП. Статья ДДС в документе ПлатежноеПоручениеВходящее — это не просто один реквизит. На самом деле, она живет в системе «дважды»:

  1. В шапке документа: основной реквизит СтатьяДвиженияДенежныхСредств.
  2. В табличной части: в таблице РасшифровкаПлатежа, где для каждой строки (если платеж разбит по нескольким договорам или сделкам) указывается своя статья.

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

Выясним, почему происходит «застревание» первой записи

Как показывает практика и обсуждения экспертов, в список часто попадает та статья, которая была указана в документе самой первой при его создании. Это происходит из-за логики программных обработчиков ПередЗаписью или ПриЗаписи. В типовых конфигурациях на обычных формах заложен алгоритм: «взять значение из первой строки расшифровки платежа и скопировать его в скрытый или вспомогательный реквизит шапки для отображения в списках».

Если вы изменили статью в таблице, но по каким-то причинам (ошибки в коде, использование сторонних обработок, сбои при проведении) алгоритм перезаписи шапки не выполнился, в базе данных останется старое значение реквизита шапки. Именно по нему отрабатывают фильтры в списке, поэтому документ «пропадает» из выборки при попытке найти его по новой статье.

Способ 1. Проверка режима редактирования (для пользователя)

Посмотрим на форму документа. В верхней части часто присутствует кнопка «Список». Разберем два режима:

Если вы работаете в режиме списка и меняете статьи, убедитесь, что первая строка таблицы содержит корректную информацию. Попробуйте переключить режим туда-обратно и перепровести документ. Иногда простая перезапись документа (нажать кнопку «ОК» или «Записать») инициирует программные механизмы синхронизации данных.

Способ 2. Использование групповой обработки (для администратора)

Если документов много и фильтрация по ним работает некорректно, проанализируем ситуацию через «Групповое изменение реквизитов». Это позволит нам принудительно выровнять данные в шапке и таблицах.

  1. Откройте обработку «Групповое изменение реквизитов».
  2. Выберите объект «Платежное поручение входящее».
  3. В настройках выберите реквизит шапки СтатьяДвиженияДенежныхСредств.
  4. Установите нужное значение.
  5. Выполните изменение для списка проблемных документов.

Важно: После такого изменения обязательно нужно перепровести документы, чтобы движения по регистрам (например, по регистру «Движения денежных средств») также обновились в соответствии с новыми данными.

Способ 3. Программная коррекция (для разработчика)

Если проблема повторяется регулярно, необходимо проверить код в модуле объекта документа. Нам нужно убедиться, что при записи данные из табличной части всегда попадают в шапку. Рассмотрим пример кода, который можно внедрить в процедуру ПередЗаписью:


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    // Проверяем наличие строк в расшифровке платежа
    Если РасшифровкаПлатежа.Количество() > 0 Тогда
        // Берем статью из первой строки и записываем в реквизит шапки
        ПерваяСтрока = РасшифровкаПлатежа[0];
        Если СтатьяДвиженияДенежныхСредств <> ПерваяСтрока.СтатьяДвиженияДенежныхСредств Тогда
            СтатьяДвиженияДенежныхСредств = ПерваяСтрока.СтатьяДвиженияДенежныхСредств;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Такой подход гарантирует, что реквизит шапки, используемый для построения списков и журналов, всегда будет актуален. Также стоит проанализировать настройки Динамического списка в форме списка. Если колонка «Статья ДДС» добавлена вручную через конфигуратор, убедитесь, что в запросе не используется ВЫБРАТЬ РАЗЛИЧНЫЕ или некорректные соединения с табличными частями, которые могут искажать результат при наличии нескольких строк в документе.

Резюме

Ситуация, когда статья ДДС не меняется в списке — это не «глюк платформы», а следствие реализации бизнес-логики в УПП. Данные в шапке документа служат «зеркалом» для данных в таблице ради быстродействия системы. Чтобы решить проблему:

← На главную