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