Как связать реквизиты двух справочников 1с
Связь формы и элементов управления с данными
Основной причиной наличия этого раздела является то, что в 1С:Предприятии 8 экранные формы и элементы управления "отделены" от объектов конфигурации. Поэтому для того, чтобы создать обычную форму списка справочника или форму редактирования документа нужно их "связать" друг с другом. В большинстве случаев эту задачу решают конструктор формы или диалог "размещение данных", но необходимо понимать, какие именно действия при этом производятся. Тогда при необходимости их можно будет произвести вручную или подкорректировать результат работы конструктора.
На эту ситуацию можно посмотреть с двух сторон:
- С одной стороны существуют привычные объекты конфигурации (как в версии 7.7), у них есть реквизиты и табличные части (тоже с реквизитами).
- С другой стороны существуют такие объекты как "Форма" и элементы управления (поля ввода, табличные поля, флажки и т.д.).
Объект конфигурации (данные):
Экранная форма и элементы управления:
Необходимо понимать, что если форма принадлежит конкретному объекту конфигурации (т.е. отображается в списке "Формы" объекта), то этого недостаточно для реализации связи между элементами управления и данными. Более того, это даже необязательно. Вполне возможно создать общую форму, не принадлежащую ни одному из объектов конфигурации, которая будет отображать список элементов справочника или позволять редактировать конкретный документ. Другое дело, что такую форму нельзя будет назначить в качестве "основной" для определенных действий, но свою функцию она выполнять будет.
Чтобы какое-нибудь табличное поле в любой экранной форме отображало (и позволяло с ним работать) список элементов справочника, оно должно быть связано определенным образом с объектом типа "СправочникСписок.ИмяСправочника". В этой статье рассматривается, как настроить такую связь между формой с ее элементами управления и объектами конфигурации с их реквизитами и табличными частями.
Установка связи с данными производится путем создания реквизитов формы определенного типа и установки свойства "Данные" элементов управления и самой формы. Поясним это на простом примере. Допустим нужно создать форму списка справочника и форму элемента, но мы не будем пользоваться конструктором форм, а сделаем все вручную.
Создание формы списка
Создаем новую форму, принадлежащую справочнику "Номенклатура". При этом запускается конструктор и предлагает выбрать тип формы.
Выберем тип формы "Произвольная", в этом случае создается независимая форма, не связанная с данными. Заметьте, что у нее нет ни одного реквизита формы.
Внимание. Не путайте реквизиты формы и реквизиты объекта конфигурации , например, справочника или документа. Это разные понятия.
Создадим реквизит формы с именем "СпрСписок" и назначим ему тип "СправочникСписок.Номенклатура":
Обратите внимание, что этот реквизит не является "основным" (он не выделен жирным шрифтом). Если у формы есть именно основной реквизит, то это сильно меняет поведение формы. Только в этом случае она может являться полноценной формой списка или формой элемента. Сделаем этот реквизит основным для формы. Для этого откройте свойства самой формы и заполните свойство "Данные" следующим образом:
Заметьте, что при указании свойства "Данные" автоматически изменилось и свойство "Тип значения". Если его сейчас изменить, то изменится тип основного реквизита формы. Мы этого делать не будем.
Если вы перейдете обратно на закладку "Реквизиты" формы, то увидите, что этот реквизит стал "основным" (выделен жирным шрифтом):
Теперь поведение формы изменилось в нужную нам сторону. Наличие основного реквизита именно такого типа ("СправочникСписок.Номенклатура") позволяет форме служить формой списка. В зависимости от типа основного реквизита у формы могут появиться новые события, описываемые "расширениями формы", а также это влияет на возможный состав кнопок командных панелей формы.
Например, у нашей формы списка справочника появились новые свойства, доступные из встроенного языка:
Перейдем теперь в диалог формы и разместим в рабочей области формы элемент управления "Табличное поле":
В момент создания нового элемента управления у формы появился новый реквизит (в данном случае "ТабличноеПоле1" типа "ТаблицаЗначений"). Это пока еще не то, к чему мы стремимся, нам нужен динамический спсиок элементов справочника. Теперь нужно связать это табличное поле с реквизитом формы "СпрСписок", имеющим тип "СправочникСписок.Номенклатура". Для этого в свойствах табличного поля укажите свойство "Данные" следующим образом:
На этом этапе лучше сразу изменить имя элемента управления на что-нибудь более читабельное, например, "тпСписок". Но имя элемента управления в принципе ни на что не влияет, кроме случая, когда происходит обращение к элементу управления из модуля формы.
Заметьте, что свойство "Тип значения" для табличного поля стало недоступным. Это означает, что через свойства элемента управления нельзя изменить тип значения реквизита формы. Также заметьте, что в после установки свойства "Данные" произошли некоторые изменения с формой и ее реквизитами:
- Были созданы колонки "Код" и "Наименование" табличного поля "тпСписок". Эти колонки были автоматически связаны с реквизитами справочника (через свойство колонки "Данные"). Естественно, что это можно было сделать и вручную.
- Была заполнена верхняя вспомогательная командная панель (замечание: точнее для командной панели было установлено свойство "АвтоЗаполнение", поэтому теперь она будет содержать стандартный набор кнопок, определяемый типом основного реквизита формы)
- Реквизит формы "ТабличноеПоле1" был удален.
Теперь в форме есть все необходимое для того, чтобы служить формой списка элементов справочника. Зададим заголовок для формы "Список Номенклатура" и назначим эту форму в качестве основной формы списка, чтобы она открывалась по умолчанию:
Теперь можно запустить "1С:Предприятие" и проверить работу формы:
Создание формы элемента
Теперь создадим форму элемента для этого справочника. Мы опять не будем пользоваться конструктором, а продемонстрируем, как создаются такие формы вручную. Это будет очень полезным, чтобы понимать, что именно делает конструктор.
Создайте новую форму, принадлежащую справочнику. При создании формы укажите тип формы "Произвольная", затем можно задать для нее имя "ФормаЭлементаНовая". Будет создана следующая экранная форма:
Перейдите на закладку "Реквизиты" и создайте новый реквизит формы с именем "СпрОбъект" и типом "СправочникОбъект.Номенклатура".
Этот реквизит пока не является основным реквизитом формы, потому что он не указан в свойстве "Данные" самой формы. Сделаем это. Откройте свойства формы и заполните свойство "Данные" (тип значения будет заполнен автоматически):
Если в палитре свойств изменить "Тип значения", то изменится тип значения реквизита формы. Сейчас этого делать не нужно.
После указания свойства "Данные" реквизит "СпрОбъект" стал основным реквизитом формы. Так как он имеет тип "СправочникОбъект.Номенклатуры", то это значительно изменило поведение формы, в частности следующие аспекты:
- Изменился потенциальный состав кнопок командных панелей формы (верхней вспомогательной и нижней). Чтобы в верхней командной панели отображался набор кнопок, нужно в ее свойствах снять, а затем опять установить флажок "Автозаполнение". Далее добавьте кнопки ОК, Записать и Закрыть в нижнюю командную панель. Кнопка ОК будет выполнять действия "Записать и Закрыть" и она будет являться кнопкой по умолчанию (выделена жирным шрифтом и срабатывает по Ctrl-Enter). Чтобы выводились надписи и картинки, нужно для каждой кнопки соответствующим образом задать свойство "Отображение". В итоге форма приобретет следующий вид:
- Расширился состав свойств, методов и событий контекста формы в соответствии с "расширением формы элемента справочника":
Внимание: не путайте события формы "ПередЗаписью" и "ПриЗаписи", а также одноименные события объекта типа "СправочникОбъект". События формы возникают только при интерактивных действиях из этой формы. Нужно иметь в виду, что элемент справочника может быть также записан программно с помощью метода Записать().
Теперь разместим диалоге формы элементы управления для редактирования элемента справочника. Поместите в форму поле ввода и рядом с ним надпись "Наименование":
В свойствах поля для ввода наименования установите свойство "Данные", связав его с реквизитом "Наименование" объекта "СпрОбъект":
Заметьте, что тип значения поля ввода стал недоступен для редактирования. Его тип берется из структуры самого справочника:
Аналогичным образом можно разместить в диалоге формы остальные поля ввода и другие элементы управления и связать их с соответствующими реквизитами и табличными частями справочника.
Обратите внимание, что когда назначен основной реквизит формы, то можно воспользоваться кнопкой "Размещение данных" , которая автоматически настраивает связь элементов формы с данными. При ее нажатии появляется следующее окно:
Это окно содержит список реквизитов и табличных частей объекта конфигурации, который назначен в качестве основного реквизита формы. В колонке "Данные" установите пометку для тех реквизитов, которые необходимо разместить в форме. Если диалог вызывается повторно, то пометки установлены для элементов управления, уже расположенных в форме, и если снять пометку, то элемент управления будет удален. В колонке "Элементы формы" можно выбрать тип элемента управления, возможный для данного реквизита. Например, для реквизитов типа "булево" обычно выбирается флажок.
С помощью автоматического или ручного размещения элементов управления в форме постарайтесь, чтобы она приобрела следующий вид:
Осталось назначить эту форму в качестве основной формы элемента справочника и можно проверять ее работу:
Таким образом, механизм связи между элементами формы и реквизитами (табличными частями) объекта конфигурации позволяет легко настроить общепринятые режимы работы с формами, а также реализовать новые проектные решения, используя гибкие возможности технологической платформы 1С:Предприятия 8.
Дата публикации 04.10.2019
Использован релиз 3.0.73
Для группового изменения реквизитов документов или элементов справочников в программе необходимо выделить в списке эти документы / элементы справочника, открыть правой кнопкой мыши контекстное меню и выбрать команду "Изменить выделенные. ", в открывшейся форме отметить флажками реквизиты, которые нужно изменить, и указать их новое значение, выполнить изменение по кнопке "Изменить выделенные".
Рассмотрим механизм группового изменения реквизитов на примере изменения покупателя в документах "Счет на оплату" (реквизит "Контрагент"):
- Раздел: Продажи – Счета покупателям.
- Выделите в списке документы (рис. 1), у которых необходимо изменить значение реквизита, правой кнопкой мыши откройте контекстное меню и выберите команду "Изменить выделенные . ". Чтобы выделить несколько документов, нажмите и удерживайте на клавиатуре клавишу Shift (для выбора документов в одном диапазоне) или Ctrl (для выбора отдельных документов) и отмечайте мышью нужные документы.
- В открывшейся форме "Изменение выделенных элементов" на закладке "Реквизиты" (рис. 2) найдите реквизит, который подлежит изменению (в нашем примере "Контрагент"), и установите флажок в колонке .
- В колонке "Новое значение" (рис. 2) укажите новое значение реквизита. Если необходимо задать пустое значение, то нужно включить флажок в колонке , а колонку "Новое значение" оставить незаполненной. Одновременно можно менять несколько реквизитов.
- Обратите внимание, что все реквизиты следует менять с большой осторожностью, а некоторые вообще не стоит менять:
- если изменить реквизиты табличной части документа / справочника (на закладках формы "Изменение выделенных элементов", отличных от закладки "Реквизиты"), то новое значение будет подставлено во все строки табличной части документа / справочника;
- если изменить цифровой реквизит документа / справочника (в том числе из табличной части), то реквизиты, зависящие от измененного, не будут пересчитаны;
- если изменить реквизит документа / справочника (в том числе из табличной части), который зависит от других реквизитов (например, договор зависит от контрагента и организации), то будет нарушена корректность данных и ссылочная целостность информационной базы.
- В списке реквизитов в форме "Изменение выделенных элементов" могут быть реквизиты, по умолчанию недоступные для изменения и отображающиеся серым цветом. Это "ключевые" реквизиты, которые могут повлиять на другие объекты (списки, документы, справочники и др.), поэтому они защищены от случайных изменений. При попытке ввода новых значений для этих реквизитов программа предлагает их разблокировать. Если это необходимо, подтвердите свой выбор по кнопке "Да".
- По кнопке "Изменить реквизиты" изменения будут сохранены, а проведенные документы будут перепроведены (в примере на рис. 1 в колонке "Контрагент" – первоначальное значение покупателя, на рис. 3 – значение после изменения).
Дополнительно в форме "Изменение выделенных элементов" можно (рис. 4):
- С помощью кнопки "Ранее измененные реквизиты" выбрать настройки группового изменения, которые применялись для данного списка ранее.
- С помощью кнопки "Дополнительные параметры" настроить определенные условия по изменению объектов:
- Флажок "Изменять в транзакции" включает обработку данных в транзакции. Это означает, что если в процессе сохранения не удалось сохранить один из объектов по каким-либо причинам (например, потому что объект редактируется в это же время другим пользователем), то будут отменены изменения во всех выбранных объектах. По умолчанию флажок "Изменять в транзакции" включен.
- Флажок "Прерывать по ошибке" включен по умолчанию. В этом случае если сохранение объекта по каким-либо причинам невозможно, программа выдаст предупреждение и предложит продолжить изменение оставшихся объектов либо прервать обработку для выяснения причин проблемы. Если флажок не включен (это возможно при снятом флажке "Изменять в транзакции") и при этом один из объектов не удалось сохранить, то такой проблемный объект будет пропущен, а обработка остальных данных будет продолжена.
Смотрите также
Критерии отбора в 1С – это некоторый объект в метаданных, при помощи которого можно производить отборы информации внутри базы системы 1С по представленным параметрам поиска – условиям. Можно сказать, что критерии отбора – это сводка правил, согласно которым может быть произведён выбор информации по некоторому условию в пользовательском режиме.
Рассмотрим, как происходит отбор в журнале по критерию «Контрагент»:
Рис. 1 Отбор по критерию «Контрагент»
Данный метод очень удобен для создания структуры с подчинённостями. Её можно посмотреть, кликнув на «Перейти к иерархическому списку связанных документов», как показано ниже:
Рис. 2 Перейти к иерархическому списку связанных документов в 1СРассмотрим, как происходит работа связанных критериев отбора в системе 1С. Запустим 1С как «Конфигурато и откроем в метаданных раздел с критериями, как показано ниже:
Рис. 3 Раздел с критериями отбора в 1С
В «Данных» будет задан «Тип», соответствующий типу значений, которые будут подлежать отбору для поиска.
Как пример, в «ДокументыПоКонтрагенту» – тип «СправочникСсылка.Контрагенты», отбору «ДокументыСотрудников» соответствует тип «СправочникСсылка.ФизическиеЛица», как можно увидеть на скриншотах ниже:
Рис. 4 Использование критериев отбора данных
Рис. 5 Пример с критериями отбора в 1С
Стоит учесть, что можно прописывать любой тип или же определять объект по древу конфигурации, указывая некоторую произвольную ссылку:
Рис. 6 Использование критериев отбора в 1С с произвольной ссылкой
Удобство критериев отбора данных заключается в том, что внутри критерия можно задействовать и реквизиты из различных таблиц.
Во вкладке «Состав» видны элементы, для которых соответствуют данные того типа, который был прописан для работы критерия отбора. В данном окне нужно проставить «галочки» около элементов, при помощи которых производится отбор. Как только данный перечень будет указан, отбор начнёт работать.
Рис. 7 Работа критерия отбора
Видов критериев по отбору может быть много, но для работы с ними необходимо создание форм, которые в последствии можно помещать на панель с инструментами и в меню пользователя. Критерии всех выделенных объектов можно будет просматривать, кликнув на «Ещё».
Рис. 8 Форма критериев отбора в 1С
2. Пример создания отбора в 1С 8
Рассмотрим на примере создание отбора в 1С 8. Создадим «ДокументыПоНоменклатуре», кликнув на «Добавить», как показано на скриншоте с примером ниже:
Рис. 9 Создание отбора в 1С 8
На вкладке «Данные» прописываем его тип «СправочникСсылка.Номенклатура».
На вкладке «Состав» нужно проверить всю документацию и около необходимой проставить «галочки» в «Номенклатура». Это и есть те элементы, при помощи которых происходит отбор.
Рис. 10 Выбор элементов для отбора в 1С 8
Также стоит отметить, что для работы отбора в 1С 8 необходимо, чтобы он находился на рабочем экране у пользователя. Находим на древе справочник «Номенклатура», после чего открываем форму для элемента. На вкладке «Командный интерфейс» устанавливаем «галочку» около строки «Документы по номенклатуре», как показано на скриншоте ниже:
Рис. 11 Критерий отбора в 1С ДокументыПоНоменклатуре
Далее запускаем команду «Обновить конфигурацию базу данных» и делаем сверку работы отбора. Запускаем любой из элементов внутри справочника «Номенклатура» и переходим на ссылку «Ещё», где находится строка «Документы по номенклатуре», как можно увидеть ниже:
Рис. 12 Проверка работы отбора в 1С 8
Кликаем на вышеописанную ссылку, после чего появится перечень документов, внутри которых содержится выбранная позиция:
Рис. 13 Список документов с критерием отбора в 1С
При помощи критериев отбора происходит программно динамический отбор и отображаются все данные, которые являются результатом поиска. Для того чтобы результат был корректным, не стоит делать слишком много видов критериев по отбору.
3. Связанные документы в 1С 8.3
Теперь, как только основные понятия были закреплены, можно перейти к основной теме статьи – связанным документам. Связанные документы в 1С 8.3 работают по схожему принципу. Связи между документами можно увидеть, нажав на «Перейти к иерархическому списку связанных документов». Данная кнопка располагается на панели с инструментами, как показано ниже на скриншоте:
Рис. 15 Связанные документы в 1С 8.3
Чтобы связи между документами отображались и у пользователя, необходимо в настройках для критериев отбора «СвязанныеДокументы», которые находятся во вкладке «Данные», определить перечень нескольких связанных между собой документов, как продемонстрировано ниже:
Рис. 16 Перечень нескольких связанных между собой документов
Также на панели «Состав» определить те документы, которые могут стать документами-основаниями для других:
Рис. 17 Запрос связанные документы
При помощи механизмов для критериев можно получать связанные документы, а также получать список всех связанных элементов у пользователя. Также, стоит отметить, что при описании необходимых критериев в выборке автоматически будут созданы необходимые запросы для связанных документов. Данное свойство делает проще создание любых критериев по отбору данных, а также упрощает реализацию быстрой выборки по выбранным
Дополнительные реквизиты в 1С УТ используются для возможности настройки хранения дополнительных полей в справочниках и документах программы. Их добавление выполняется в пользовательском режиме и не требует изменения конфигурации.
Добавленный в справочник или документ дополнительный реквизит выглядит как обычное поле, в котором настроено использование каких-либо данных информационной системы.
Далее разберем примеры добавления и работы с дополнительными реквизитами в 1С УТ 11.
В первую очередь необходимо включить настройки.
1. Настройки 1С УТ 11
Первый флаг (см. скриншот) отвечает в целом за доступность ведения в базе 1С 8.3 УТ 11 дополнительных реквизитов.
Второй флаг отвечает за возможность ведения реквизитов с общим список значений. Данную настройку можно включить, например, если в справочник «Клиенты» необходимо добавить реквизит «Регион клиента», в справочник «Поставщики» – «Регион поставщика», при этом для обоих дополнительных реквизитов должен использоваться единый список значений – Федеральные округа РФ.
Активация функции «Общие реквизиты и сведения» дает возможность создавать дополнительные реквизиты в 1С УТ сразу для нескольких справочников. Например, создать реквизит «Категория надежности», который будет использоваться и для клиентов, и для поставщиков.
Настройки использования реквизитов в 1С 8.3 УТ 11 могут быть различными. Использовать ли общие наборы, общие списки и, если да, то как именно – зависит от потребностей пользователя и банального удобства работы. Примеры, которые будут описаны далее, приведены для общего понимания работы с возможностями конфигурации в части использования реквизитов.
Добавление новых реквизитов выполняется из справочника. Открыть его можно там же, где включается настройка использования доп. реквизитов.
2. Как добавить новый реквизит в 1С
Добавим новый реквизит в 1С, не связанный с другими реквизитами и посмотрим, какие данные можно указать в нем. Например, в справочник «Физические лица» добавим реквизит «Подразделение».
В левой части окна программы надо выбрать объект системы, к которому добавляется реквизит (в нашем случае это «Физические лица») и нажать кнопку «Добавить → Новый».
В открывшемся окне заполняем «Наименование» и «Тип значения».
Тип значения определяет тип используемых данных в новом реквзите 1С. Типы данных могут быть различными. Из можно распределить по группам:
· дата, строка, число – точные заполняемые значения;
· булево в 1С – значение «Да» или «Нет» (в форме представляет собой поле для установки флажка);
· дополнительное значение – используется для ввода списка нужных значений;
· Организация, Партнер, Статья доходов и т.д – используется для выбора значения из действующих справочников.
Здесь же можно использовать сразу несколько типов данных, установив флаг «Составной тип данных».
В нашем примере нам надо выбрать тип данных «Подразделения». Тогда в карточке физического лица будет доступны к выбору данные справочника «Структура педприятия».
После записи реквизита 1С, он отобразится в соответствующем справочнике, и в нем будет доступен указанный тип данных.
При необходимости для реквизита можно внести дополнительные настройки:
· если установить флаг «Выводить в виде гиперссылки», то после заполнения реквизита значение будет представлено в ввиде ссылки;
· возможно сделать настройку критериев видимости и доступности реквизита по форме в зависимости от выполнения условий;
· можно установить обязательность заполнения данного реквизита в целом или при выполнении каких-либо условий;
· для поля можно установить всплывающую подсказку о его назначении.
Рассмотрим другой пример. Представим, что все договоры должны быть согласованы ответсвенным лицом, которое в базе не работает. Менеджер, ведущий контрагента, отправляет договоры на согласование по почте, скайпу и т.п., а в базе должен отметить лишь результат: согласовано и дата.
В этом случае у нас задействован один объект системы («Договоры с контрагентами») и два реквизита: «согласовано» (да/нет) и «дата согласования».
Реквизит 1 – тип данных «булево в 1С».
Реквизит 2 – тип даннх «дата». Здесь также надо указать состав даты.
Сохраним реквизиты и проверим результат – в карточке договора должен появиться раздел с этими реквизитами.
Добавление нового реквизита и его заполнение рассмотрели. Перейдем к более сложному варианту.
3. Реквизиты 1С УТ с общим списком
Допустим, для покупателей надо добавить реквизит «Регион клиента», для поставщиков реквизит «Регион поставщика». Названия реквизитов разные, но список значений един – Федеральные округа РФ.
Удобство этого варианта заключается в том, что нет необходимости дважды заполнять перечень значений. При создании списка в одном реквизите он тотчас будет доступен и для второго, а при добавлении/редактировании/удалении данных в одном реквизите все изменения также отразятся в списке второго.
Добавим реквизит для клиентов. Создаем новый, указываем тип «Дополнительные значения» и вносим список значений. Заполнять его на этом этапе не обязательно. Позже список значений можно будет дополнить непосредственно из объекта системы. Но сейчас внесем его, чтобы наглядно увидеть отражение общего списка и во втором реквизите.
Теперь добавим реквизит для поставщика. Создание выполняется иначе, чем для первого реквизита.
Нажимаем «Добавить → Из другого набора». В открывшемся окне находим и выделяем созданный ранее реквизит для клиента и нажимаем «Далее».
Выбираем вариант «Сделать копию реквизита по образцу (с общим списком значений)» и нажимаем «Далее».
В созданном реквизите уже определен тип данных и заполнен перечень значений. Остается только присвоить наименование.
Новые значения в общий список можно добавлять непосредственно из карточек партнеров.
4. Общие реквизиты в 1С
Сделать реквизиты общими (единое название и единый список значений для нескольких объектов) можно следующим образом:
ввести реквизит для одного объекта;
добавить реквизит из набора первого объекта и сделать его общим.
Все добавленные реквизиты после их записи становятся доступными в соответствующих объектах системы.
5. Отображение реквизитов в отчетах 1С и списках
Для удобства работы реквизиты можно вывести в список объектов и добавить в настройки отчетов.
Например, выведем реквизит «Согласовано», описанный выше, в справочник.
Открываем меню «Еще → Изменить форму». В списке полей выделяем строку «Ссылка» и нажимаем кнопку «Добавить поле». В предложенном списке выбираем «Согласовано (Договоры с контрагентами)» и нажимаем «ОК».
В списке полей добавится выбранный реквизит. Перемещаем его вверх, меняем заголовок и нажимаем «ОК».
Колонка добавлена в список, теперь по ней можно осуществлять поиск.
Также для примера выведем дополнительный реквизит в отчет 1С «Задолженность клиентов» – категорию клиента.
Открываем «Настройки», выбираем вид «Расширенный» и добавляем новое поле. В окне выбора поля разворачиваем поле «Клиент», после чего разворачиваем список «Дополнительные реквизиты» и выбираем «Категория».
Поле добавлено в отчет. Также это поле можно включить в отборы или в общую структуру отчета.
Читайте также: