При разработке обработок в среде 1С 7.7 часто возникает задача интерактивного взаимодействия пользователя с данными, выведенными в ТаблицаЗначений. Рассмотрим пошагово, как реализовать переход к элементу справочника «Сотрудники» при клике по ячейке таблицы.
Если в вашей таблице уже содержатся данные о сотруднике (например, ссылка на объект или его уникальный идентификатор), мы можем открыть форму элемента справочника для просмотра или редактирования. Для этого используется метод ОткрытьФорму.
Разберем, как написать процедуру для обработки события клика. Предположим, что в каждой строке таблицы в колонке «Сотрудник» хранится ссылка на элемент справочника.
Процедура ПриНажатииНаКолонку()
// Получаем текущую строку таблицы значений
ТекСтрока = ТЗ.ТекущаяСтрока();
// Получаем значение из нужной колонки (например, «Сотрудник»)
СотрудникОбъект = ТЗ.ПолучитьЗначение(ТекСтрока, "Сотрудник");
// Проверяем, что значение не пустое
Если ПустоеЗначение(СотрудникОбъект) = 0 Тогда
ОткрытьФорму("Справочник.Сотрудники", СотрудникОбъект);
КонецЕсли;
КонецПроцедуры
Здесь мы используем ТЗ.ПолучитьЗначение для извлечения данных из контекста таблицы. Метод ОткрытьФорму в качестве второго параметра принимает сам объект справочника, что позволяет 1С автоматически открыть нужную карточку.
Часто бывает ситуация, как в вашем случае с CSV-файлом, когда в таблице хранится только код или ФИО сотрудника в виде строки. В таком случае нам нужно сначала «найти» элемент в базе данных, а затем его открыть.
Разберем процесс поиска по коду:
Процедура НайтиИОткрытьСотрудника()
ТабНомер = ТЗ.ПолучитьЗначение(ТЗ.ТекущаяСтрока(), "ТабельныйНомер");
Спр = СоздатьОбъект("Справочник.Сотрудники");
Если Спр.НайтиПоКоду(ТабНомер, 0) = 1 Тогда
ОткрытьФорму("Справочник.Сотрудники", Спр.ТекущийЭлемент());
Иначе
Сообщить("Сотрудник с таким кодом не найден!");
КонецЕсли;
КонецПроцедуры
Обратите внимание на использование метода СоздатьОбъект. Это фундаментальный инструмент в 1С 7.7 для работы с метаданными. Мы создаем экземпляр справочника в памяти, а затем используем методы НайтиПоКоду или НайтиПоНаименованию для сопоставления данных из CSV с реальными записями в базе.
НайтиПоКоду, если это возможно. Поиск по ФИО через НайтиПоНаименованию ненадежен, так как в компании могут быть полные тезки.Сообщить(), чтобы увидеть, какое именно значение вы извлекаете из ТаблицаЗначений. Это лучший способ быстро понять причину ошибки.ОткрытьПодбор, который работает в связке с системной процедурой ОбработкаПодбора.Следуя этим простым шагам, вы сможете реализовать удобный интерфейс для работы с сотрудниками, минимизируя ошибки ввода и ускоряя работу пользователей с вашими обработками.