Как по нажатию на ячейку в Таблице Значений открыть справочник в 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При разработке обработок в среде 1С 7.7 часто возникает задача интерактивного взаимодействия пользователя с данными, выведенными в ТаблицаЗначений. Рассмотрим пошагово, как реализовать переход к элементу справочника «Сотрудники» при клике по ячейке таблицы.

Вариант 1: Открытие карточки выбранного сотрудника

Если в вашей таблице уже содержатся данные о сотруднике (например, ссылка на объект или его уникальный идентификатор), мы можем открыть форму элемента справочника для просмотра или редактирования. Для этого используется метод ОткрытьФорму.

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


Процедура ПриНажатииНаКолонку()
    // Получаем текущую строку таблицы значений
    ТекСтрока = ТЗ.ТекущаяСтрока();
    
    // Получаем значение из нужной колонки (например, «Сотрудник»)
    СотрудникОбъект = ТЗ.ПолучитьЗначение(ТекСтрока, "Сотрудник");
    
    // Проверяем, что значение не пустое
    Если ПустоеЗначение(СотрудникОбъект) = 0 Тогда
        ОткрытьФорму("Справочник.Сотрудники", СотрудникОбъект);
    КонецЕсли;
КонецПроцедуры

Здесь мы используем ТЗ.ПолучитьЗначение для извлечения данных из контекста таблицы. Метод ОткрытьФорму в качестве второго параметра принимает сам объект справочника, что позволяет 1С автоматически открыть нужную карточку.

Вариант 2: Поиск элемента при отсутствии прямой ссылки

Часто бывает ситуация, как в вашем случае с CSV-файлом, когда в таблице хранится только код или ФИО сотрудника в виде строки. В таком случае нам нужно сначала «найти» элемент в базе данных, а затем его открыть.

Разберем процесс поиска по коду:


Процедура НайтиИОткрытьСотрудника()
    ТабНомер = ТЗ.ПолучитьЗначение(ТЗ.ТекущаяСтрока(), "ТабельныйНомер");
    
    Спр = СоздатьОбъект("Справочник.Сотрудники");
    
    Если Спр.НайтиПоКоду(ТабНомер, 0) = 1 Тогда
        ОткрытьФорму("Справочник.Сотрудники", Спр.ТекущийЭлемент());
    Иначе
        Сообщить("Сотрудник с таким кодом не найден!");
    КонецЕсли;
КонецПроцедуры

Обратите внимание на использование метода СоздатьОбъект. Это фундаментальный инструмент в 1С 7.7 для работы с метаданными. Мы создаем экземпляр справочника в памяти, а затем используем методы НайтиПоКоду или НайтиПоНаименованию для сопоставления данных из CSV с реальными записями в базе.

Важные рекомендации по реализации

  1. Валидация данных: Перед поиском всегда проверяйте, не является ли строка пустой. Это поможет избежать ошибок при загрузке файлов с неполными данными.
  2. Поиск по уникальному идентификатору: Старайтесь всегда использовать НайтиПоКоду, если это возможно. Поиск по ФИО через НайтиПоНаименованию ненадежен, так как в компании могут быть полные тезки.
  3. Отладка: Если форма не открывается, используйте команду Сообщить(), чтобы увидеть, какое именно значение вы извлекаете из ТаблицаЗначений. Это лучший способ быстро понять причину ошибки.
  4. Использование подбора: Если ваша задача — не просто открыть существующий элемент, а выбрать нового сотрудника из справочника и записать его в таблицу, рассмотрите метод ОткрытьПодбор, который работает в связке с системной процедурой ОбработкаПодбора.

Следуя этим простым шагам, вы сможете реализовать удобный интерфейс для работы с сотрудниками, минимизируя ошибки ввода и ускоряя работу пользователей с вашими обработками.

← На главную