Приветствуем вас, уважаемые коллеги! Сегодня мы подробно рассмотрим одну из частых задач, возникающих при работе с системой 1С: вывод дополнительных сведений в форму списка документов. Эта задача может показаться неочевидной на первый взгляд, особенно когда речь идет о свойствах, которые не являются прямыми реквизитами объекта. Давайте вместе разберем, как эффективно решить эту проблему, используя стандартные механизмы системы и углубляясь в нюансы привязки дополнительных свойств.
Наш сценарий будет основан на реальной проблеме: необходимо вывести ФИО клиента, хранящееся как дополнительное сведение, в форму списка документа "Заказ клиента". Мы рассмотрим как простые решения, так и более сложные случаи, когда требуется глубокая диагностика.
Прежде чем приступить к решению, важно четко понимать различие между двумя похожими, но принципиально разными механизмами в 1С:
Дополнительные реквизиты: Это свойства, которые обычно относятся к конкретному объекту (например, справочнику или документу) и хранятся либо непосредственно в таблице этого объекта (если их немного), либо в подчиненной таблице, тесно связанной с основным объектом. Их, как правило, проще вывести, поскольку они более жестко "привязаны" к данным самого объекта.
Дополнительные сведения: Это более гибкий механизм. Их значения хранятся в специальном регистре сведений, например, в регистре сведений ДополнительныеСведения, и они могут быть привязаны к различным типам объектов. Именно с дополнительными сведениями чаще всего возникают сложности при попытке вывести их в динамические списки, так как их связь с основным объектом менее прямая и требует корректной настройки привязки.
В нашей ситуации ФИО клиента, скорее всего, реализовано именно как дополнительное сведение, что и вызывает основные затруднения.
Мы начнем с самых базовых шагов, которые позволяют настроить и проверить доступность дополнительных сведений. Очень часто проблема кроется именно на этом этапе – в неправильной привязке свойства к нужному объекту.
Прежде всего, нам необходимо убедиться, что наше дополнительное сведение "ФИО клиента" правильно создано и привязано к нужному типу объектов. Для этого нам следует обратиться к разделу администрирования:
Переходим в раздел Администрирование.
Находим пункт Общие настройки.
Открываем Дополнительные реквизиты и сведения.
Здесь мы видим список всех определенных дополнительных свойств. Убедитесь, что ваше свойство "ФИО клиента" (или аналогичное) существует.
Критически важно: Откройте это свойство и проверьте его Назначение. Это ключевой момент. Если мы хотим вывести ФИО клиента в список документа "Заказ клиента", то назначение этого свойства должно быть установлено для типа объекта Документ.ЗаказКлиента. Если оно по ошибке привязано, например, к Документ.РеализацияТоваровУслуг или Справочник.Контрагенты, то оно не будет автоматически отображаться в списке заказов. Именно в таком неверном назначении часто кроется корень проблемы.
Если назначение некорректно, мы должны его исправить. Если свойства не существует, мы создаем его, указывая правильное "Назначение".
Даже если в общих настройках свойство кажется привязанным, иногда возникают нюансы. Мы можем проверить это на форме самого документа "Заказ клиента":
Открываем любой документ Заказ клиента.
На форме документа мы должны найти раздел или кнопку, связанную с дополнительными сведениями. Часто это может быть кнопка Изменить состав дополнительных сведений... или аналогичная, расположенная в разделе "Дополнительные реквизиты" или на одной из закладок.
Нажав на эту кнопку, мы увидим список всех дополнительных сведений, которые привязаны именно к этому типу объекта (Документ.ЗаказКлиента). Убедитесь, что ваше свойство "ФИО клиента" присутствует в этом списке и имеет заполненное значение для конкретного заказа.
Если нашего свойства здесь нет, это однозначно указывает на проблему с его назначением или привязкой, как мы рассмотрели в предыдущем пункте. Именно это было обнаружено в нашем реальном примере: ФИО по ошибке было привязано к "Реализации", а не к "Заказу". После исправления этого назначения (пересоздания или корректировки существующего свойства с правильной привязкой) ситуация значительно улучшилась.
Когда мы убедились, что дополнительное сведение корректно создано и привязано к документу "Заказ клиента", следующим шагом будет попытка вывести его в форму списка. В большинстве современных конфигураций 1С, использующих управляемые формы, это делается через стандартный механизм "Изменить форму", который доступен пользователю без необходимости модификации конфигурации.
Мы выполним следующие действия:
Открываем форму списка документов Заказы клиентов.
Находим кнопку Еще (обычно расположена в командной панели формы).
В выпадающем меню выбираем пункт Изменить форму.... Откроется окно настройки формы.
В окне "Настройка формы" мы будем работать с деревом элементов формы:
В левой части окна "Настройка формы" мы видим дерево элементов. Раскрываем ветку Элементы, а затем Список.
В этом списке мы увидим все доступные поля, которые можно отобразить в форме. Важно искать дополнительные свойства в специальной группе. Часто они группируются под названием Дополнительные реквизиты или Дополнительные сведения, либо отображаются непосредственно по своему имени (например, ФИО клиента).
Если наше дополнительное сведение "ФИО клиента" корректно привязано к объекту, оно должно быть доступно в этом списке. Мы находим его и устанавливаем флажок рядом с ним.
Нажимаем Применить или ОК, чтобы сохранить изменения. Поле должно появиться в списке документов.
Как показывает опыт, если все настройки привязки были выполнены правильно, это самый простой и быстрый способ вывода дополнительного сведения. Некоторые коллеги подтверждают, что у них сведения были доступны "в самом верху списка" после выполнения этих шагов.
Что делать, если мы выполнили все предыдущие шаги, но в окне "Изменить форму" наше дополнительное сведение "ФИО клиента" так и не появилось? Это указывает на более глубокую проблему, чаще всего связанную с тем, что данное поле отсутствует в основном запросе, который формирует данные для динамического списка.
Если поле не отображается в списке доступных для выбора полей, это означает, что его нет в наборе данных формы списка. Причинами могут быть:
Некорректная или отсутствующая связь: Возможно, система не может "подтянуть" значение дополнительного сведения из регистра сведений в запрос основного объекта списка.
Особенности конфигурации: Некоторые конфигурации могут иметь свои особенности в работе с дополнительными свойствами, требующие более специфических настроек.
В таких случаях, особенно если дополнительные сведения не "подтягиваются" автоматически через стандартные механизмы, может потребоваться ручное добавление их в основной запрос динамического списка. Этот метод требует доступа к конфигуратору и навыков работы с запросами 1С.
Открываем конфигурацию в режиме Конфигуратор.
Находим форму списка документа Заказ клиента. Обычно это Документы -> ЗаказКлиента -> Формы -> ФормаСписка (или аналогичное название).
Открываем форму и находим элемент Динамический список (обычно называется Список).
В свойствах динамического списка находим свойство Основная таблица (или Основной объект) и, что самое главное, Запрос.
Нажимаем на кнопку открытия конструктора запроса или напрямую редактируем текст запроса.
Нам необходимо выполнить соединение таблицы основного объекта списка (например, Документ.ЗаказКлиента) с таблицей регистра сведений, хранящего дополнительные сведения (например, РегистрСведений.ДополнительныеСведения).
Мы будем использовать левое соединение (ЛЕВОЕ СОЕДИНЕНИЕ), чтобы сохранить все строки из нашей основной таблицы заказов, даже если для какого-то заказа дополнительного сведения нет.
Соединение будет выполняться по соответствующим полям ссылки на объект (например, ЗаказКлиента.Ссылка = ДополнительныеСведения.Объект) и идентификатору свойства (ДополнительныеСведения.Свойство = &ИдентификаторСвойстваФИО).
Примерная структура запроса может выглядеть так:
ВЫБРАТЬ
Заказы.Ссылка,
Заказы.Номер,
Заказы.Дата,
ДопСведенияФИО.Значение КАК ФИОКлиента
ИЗ
Документ.ЗаказКлиента КАК Заказы
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДопСведенияФИО
ПО Заказы.Ссылка = ДопСведенияФИО.Объект
И ДопСведенияФИО.Свойство = &ПараметрСвойстваФИО
Где &ПараметрСвойстваФИО - это параметр запроса, которому необходимо присвоить ссылку на элемент справочника ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения, соответствующий нашему свойству "ФИО клиента". Этот параметр можно задать программно в модуле формы списка при инициализации.
После изменения запроса, не забываем добавить новое поле ФИОКлиента в список выводимых полей динамического списка, а затем обновить конфигурацию базы данных.
После любых изменений, сделанных в конфигураторе (особенно касающихся запросов или назначения дополнительных реквизитов), обязательно обновите конфигурацию базы данных. Без этого изменения не вступят в силу.
Мы также должны обратить внимание на типы значений дополнительных свойств. Если дополнительное свойство имеет сложный тип (например, ссылку на другой справочник, а не простую строку), то для вывода в список может потребоваться раскрытие этого значения (например, вывод наименования элемента справочника, на который ссылается дополнительное свойство). Это также делается через настройку запроса динамического списка, путем дополнительного соединения с таблицей справочника.
Мы выяснили, что наиболее частая причина невозможности вывода дополнительных сведений в форму списка заключается в некорректной привязке (назначении) этих сведений к нужному типу объектов. В нашем случае, ФИО клиента было ошибочно привязано к "Реализации" вместо "Заказа клиента".
Основное решение:
Мы всегда начинаем с проверки корректности создания и, самое главное, назначения дополнительного сведения в разделе Администрирование -> Общие настройки -> Дополнительные реквизиты и сведения. Убедитесь, что назначение соответствует типу объекта, в списке которого вы хотите видеть это сведение (например, Документ.ЗаказКлиента).
Если назначение было некорректным, исправляем его (возможно, путем пересоздания свойства с правильным назначением, если изменение существующего невозможно или нежелательно).
После этого, в большинстве случаев, достаточно зайти в форму списка документа, нажать Еще -> Изменить форму... и добавить нужное поле ФИО клиента из списка доступных элементов.
Только если эти шаги не приносят результата, мы переходим к более сложным методам, таким как модификация запроса динамического списка в конфигураторе, для явного включения дополнительного сведения в набор данных формы.
Следуя этим шагам, мы сможем эффективно решить проблему вывода дополнительных сведений в форму списка документов, делая работу с 1С более удобной и информативной.