Как добавить номер заказа по данным поставщика в форму Документы закупки все

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

В повседневной работе менеджеров по закупкам часто возникает ситуация, когда необходимо быстро идентифицировать документ не по внутреннему номеру системы 1С, а по номеру, который присвоил заказу сам поставщик. В типовых конфигурациях, таких как 1С:Управление торговлей 11, 1С:ERP или 1С:Комплексная автоматизация, этот номер обычно хранится в документе Заказ поставщику в поле «Номер по входящему документу». Однако в общем списке «Документы закупки (все)» это поле по умолчанию не отображается.

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

Способ 1: Использование стандартной настройки формы (без программирования)

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

  1. Откроем форму Документы закупки (все).
  2. В правой части командной панели нажмем кнопку Ещё и выберем пункт Изменить форму.
  3. В появившемся окне настройки элементов формы найдем основной список (обычно он называется Список или содержит ссылку на данные).
  4. Проанализируем структуру полей. Нам нужно найти поле, которое отвечает за связь с заказом. Часто оно называется Заказ или Ссылка.
  5. Выделим элемент Ссылка (или Объект) и нажмем кнопку Добавить поля.
  6. В открывшемся списке доступных реквизитов нужно найти Заказ поставщика. Поставим напротив него галочку и нажмем «ОК».
  7. Важный нюанс: теперь, когда поле Заказ поставщика появилось в списке элементов, выделим уже его и снова нажмем Добавить поля.
  8. В новом списке ищем реквизит Номер по входящему документу (это и есть тот самый номер поставщика). Отмечаем его.
  9. После нажатия «ОК» новое поле появится в дереве элементов формы. Мы можем переместить его выше или ниже с помощью стрелок, чтобы оно отображалось в удобной колонке списка.

Проанализируем ситуацию: почему пользователь в сообщении (4) сначала не мог найти поле? Дело в том, что в динамических списках 1С реквизиты объектов часто доступны через «разыменование» ссылок. Сначала нужно вывести саму ссылку на документ-основание, и только потом система позволит «дотянуться» до его внутренних реквизитов.

Способ 2: Программная модификация через расширение (для программистов)

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

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


&НаСервере
Процедура ИТ_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Получаем текущую схему запроса динамического списка
    ТекстЗапроса = Список.ТекстЗапроса;
    
    // Добавляем соединение с таблицей Заказов Поставщиков
    // чтобы вытащить ВходящийНомер напрямую
    НовыйТекстЗапроса = 
    "ВЫБРАТЬ
    |    ОсновнойЗапрос.*,
    |    ЕСТЬNULL(ДокЗаказ.НомерВходящегоДокумента, """") КАК НомерЗаказаПоставщика
    |ИЗ
    |    (" + ТекстЗапроса + ") КАК ОсновнойЗапрос
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ДокЗаказ
    |        ПО ОсновнойЗапрос.ЗаказПоставщика = ДокЗаказ.Ссылка";
    
    Список.ТекстЗапроса = НовыйТекстЗапроса;

КонецПроцедуры

После изменения текста запроса необходимо программно добавить колонку на форму и связать её с новым полем НомерЗаказаПоставщика. Это позволит пользователям выполнять поиск и сортировку по данному полю без потери производительности системы.

Почему поле может оставаться пустым?

Рассмотрим ситуации, при которых добавленное поле «N заказа по данным поставщика» может оказаться незаполненным:

Рекомендации по использованию дополнительных реквизитов

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

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

← На главную