Процедура проста в эксплуатации: все, что надо сделать, это вставить ее в модуль печатной формы процедуры или обработки. После этого добавить в свойстве ячейки в поле Расшифровка – ссылку на объект (справочник, или документ).
Процедура ОбработкаЯчейкиТаблицы(Расшифровка,Флаг,Табл,Адрес)
Перем ТекТип,ТекСписок, ТекЗнач, Конт;
Если ПустоеЗначение(Расшифровка)=0 Тогда
ТекСписок=СоздатьОбъект("СписокЗначений");
ТекТип=ТипЗначенияСтр(Расшифровка);
Если ТекТип="Справочник" Тогда
ТекСписок.ДобавитьЗначение("1","Редактировать элемент");
ТекСписок.ДобавитьЗначение("2","Просмотреть элемент");
ТекСписок.ДобавитьЗначение("3","Найти в форме списка");
Если ТекСписок.ВыбратьЗначение(ТекЗнач,,,,1)=1 Тогда
Если ТекЗнач="1" Тогда
ОткрытьФорму(Расшифровка,,0);
ИначеЕсли ТекЗнач="2" Тогда
ОткрытьФорму(Расшифровка,,1);
ИначеЕсли ТекЗнач="3" Тогда
Если ПустоеЗначение(Расшифровка.владелец)=0 тогда
ОткрытьФорму(Расшифровка,,0);
Иначе
Конт="";
ОткрытьФорму("Справочник." + Расшифровка.Вид() + "." + Метаданные.Справочник(Расшифровка.Вид()).ОсновнаяФорма.Идентификатор, Конт);
Конт.АктивизироватьОбъект(Расшифровка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли ТекТип="Документ" Тогда
ТекСписок.ДобавитьЗначение("1","Редактировать документ");
ТекСписок.ДобавитьЗначение("2","Просмотреть документ");
ТекСписок.ДобавитьЗначение("3","Найти в своем журнале");
ТекСписок.ДобавитьЗначение("4","Найти в общем журнале");
Если ТекСписок.ВыбратьЗначение(ТекЗнач,,,,1)=1 Тогда
Если ТекЗнач="1" Тогда
ОткрытьФорму(Расшифровка,,0);
ИначеЕсли ТекЗнач="2" Тогда
ОткрытьФорму(Расшифровка,,1);
ИначеЕсли ТекЗнач="3" Тогда
Конт="";
ТекЖурнал=Метаданные.Документ(Расшифровка.Вид()).Журнал.Идентификатор;
ОткрытьФорму("Журнал." + ТекЖурнал + "." + Метаданные.Журнал(ТекЖурнал).ОсновнаяФорма.Идентификатор, Конт);
Конт.УстановитьИнтервал(Расшифровка.ДатаДок, ПолучитьДатуТА());
Конт.АктивизироватьОбъект(Расшифровка);
ИначеЕсли ТекЗнач="4" Тогда
Конт="";
ТекЖурнал=Метаданные.ПолныйЖурнал.Идентификатор;
ОткрытьФорму("Журнал." + ТекЖурнал + "." + Метаданные.Журнал(ТекЖурнал).ОсновнаяФорма.Идентификатор, Конт);
Конт.УстановитьИнтервал(Расшифровка.ДатаДок, ПолучитьДатуТА());
Конт.АктивизироватьОбъект(Расшифровка);
КонецЕсли;
КонецЕсли;
Иначе
Флаг=1;
КонецЕсли;
Иначе
Флаг=1;
КонецЕсли;
КонецПроцедуры