Как изменить представление ссылок в окне Связанные документы в 1С:Бухгалтерия 3.0

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

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

Анализируем механизмы формирования представления в 1С

Для начала выясним, откуда платформа берет строку, которую мы видим в списке. В системе 1С:Предприятие существует несколько уровней формирования представления объекта:

  1. Стандартное представление: Платформа автоматически формирует строку на основе основных реквизитов (обычно это «ИмяКлассаОбъекта Номер от Дата»).
  2. Обработчики в модуле менеджера: События ОбработкаПолученияПолейПредставления и ОбработкаПолученияПредставления позволяют программно переопределить строку для всех мест в системе.
  3. Специализированные регистры: В БП 3.0 используется регистр сведений ДанныеПервичныхДокументов, где хранятся уже готовые строковые представления для оптимизации работы списков.
  4. Программный код подсистем БСП: Форма «Связанные документы» является частью Библиотеки стандартных подсистем (БСП) и имеет свои особенности получения данных.

Рассмотрим по шагам, где именно вносить правки, чтобы изменить логику вывода документов поступления.

Способ 1. Использование обработчиков в модуле менеджера

Проанализируем работу модуля менеджера документа. Если нам нужно изменить представление документа глобально во всей базе (и в связанных документах, и в полях выбора), следует использовать стандартные события платформы. Рассмотрим пример кода, который можно разместить в модуле менеджера соответствующего документа (например, ПоступлениеТоваровИУслуг):


#Область ОбработчикиСобытий

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Поля.Добавить("Номер");
    Поля.Добавить("Дата");
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Представление = СтрШаблон(НСтр("ru = 'Поступление (акт, накладная) № %1 от %2'"), Данные.Номер, Формат(Данные.Дата, "ДЛФ=D"));
КонецПроцедуры

#КонецОбласти

Использование этого метода гарантирует, что везде, где система запрашивает поле Представление, будет выводиться именно ваш формат. Однако в «Бухгалтерии 3.0» этот метод может перекрываться логикой общих модулей, которые подставляют данные входящего документа.

Способ 2. Изменение логики в подсистеме Связанные документы

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

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


&НаСервере
Функция ПредставлениеОбъектаДляВыводаВОтчет(Выборка)
    
    ПредставлениеОбъекта = Выборка.Представление;
    МетаданныеОбъекта = Выборка.Ссылка.Метаданные();
    
    Если ОбщегоНазначения.ЭтоДокумент(МетаданныеОбъекта) Тогда
        Если (Выборка.СуммаДокумента <> 0) И (Выборка.СуммаДокумента <> NULL) Тогда
            ПредставлениеОбъекта = ПредставлениеОбъекта
                + " " + НСтр("ru = 'на сумму'")
                + " " + Выборка.СуммаДокумента
                + " " + Выборка.Валюта;
        КонецЕсли;
    Иначе
        ПредставлениеОбъекта = ПредставлениеОбъекта + " (" + ОбщегоНазначения.ПредставлениеОбъекта(МетаданныеОбъекта) + ")";
    КонецЕсли;
    
    Возврат ПредставлениеОбъекта;
    
КонецФункции

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

Выясним причину: в 1С:Бухгалтерии для многих документов поступления поле Представление в запросе — это не просто стандартная функция платформы, а результат работы подписки на событие, которая записывает данные в регистр ДанныеПервичныхДокументов.

Способ 3. Работа с регистром Данные первичных документов

В конфигурации БП 3.0 существует регистр сведений ДанныеПервичныхДокументов. Система использует его для того, чтобы быстро выводить информацию о документах в списках, не обращаясь к тяжелым таблицам самих документов. Если в этом регистре для документа заполнены поля входящего номера, то именно они будут попадать в Представление.

Чтобы решить проблему через расширение конфигурации, мы можем:

  1. Создать расширение.
  2. Добавить в него общую форму СвязанныеДокументы.
  3. Использовать аннотацию &Вместо для функции ПолучитьВыборкуПоРеквизитамОбъекта или модифицировать запрос так, чтобы для типа ДокументСсылка.ПоступлениеТоваровИУслуг он брал не поле Представление, а конструировал строку из полей Номер и Дата.

Посмотрим на пример того, как может выглядеть измененный фрагмент запроса в расширении для получения корректного номера:


// Фрагмент измененного запроса
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    Ссылка,
|    Проведен КАК Проведен,
|    ПометкаУдаления,
|    СуммаДокумента КАК СуммаДокумента,
|    ВалютаДокумента КАК Валюта,
|    ВЫБОР 
|        КОГДА Ссылка ССЫЛКА Документ.ПоступлениеТоваровИУслуг 
|            ТОГДА ""Поступление № "" + Номер + "" от "" + ПОДСТРОКА(ВЫРАЗИТЬ(Дата КАК СТРОКА(20)), 1, 10)
|        ИНАЧЕ Представление 
|    КОНЕЦ КАК Представление
|ИЗ
|    Документ.ПоступлениеТоваровИУслуг КАК Документ"

Подведем итоги

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

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

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

← На главную