Имя: Пароль:
1C
1C 7.7
v7: Расшифровка ячейки в сформированном отчете
0 skaylanz23
 
19.01.17
01:44
У меня есть процедура которая формирует отчет и есть данные которыми отчет заполняется. Мне надо чтобы при нажатии на ячейку ДатаСоб открывался другая внешний обработка. Может кто-нибудь подсказать как лучше это сделать.

Процедура Отчет()
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Отчет");
    Таб.ВывестиСекцию("Заголовок");
    
    Филиал = "";
    Код = "";
    
    ТЧ2.ВыбратьСтроки();
    
    Пока ТЧ2.ПолучитьСтроку() = 1 Цикл
        
        Если Филиал = "" Тогда
            
            Если Код <> СокрЛП(ТЧ2.Код) Тогда
                
                Филиал = ТЧ2.Филиал;
                Таб.ВывестиСекцию("Т1");
                Код = СокрЛП(ТЧ2.Код);
                ИндексПоиска = Лев(СокрЛП(Филиал) + "   ",3) + "#" + Лев(СокрЛП(Код) + "                         ",25);
                
                Стр = 0;
                
                Если ТЧ3.НайтиЗначение(ИндексПоиска,Стр,"ИндексПоиска") = 1 Тогда
                    
                    ТЧ3.ПолучитьСтрокуПоНомеру(Стр);
                    ИтогС = ТЧ3.Итог;
                
                Иначе
                    
                    ИтогС = 0;
                    
                    Сообщить("Сотрудник с кодом " + ИндексПоиска + " не найден");
                    
                КонецЕсли;
                
                Таб.ВывестиСекцию("Т2");
                ДатаСоб = ТЧ2.ДатаСоб;
                КолОтрМин = ТЧ2.КолОтрМин;
                Таб.ВывестиСекцию("Т3");
                Приход = ТЧ2.Приход;
                Уход = ТЧ2.Уход;
                КолОтрМин = ТЧ2.КолОтрМин;
                Таб.ВывестиСекцию("Т4");
                
            КонецЕсли;
            
        Иначе
            
            Если Филиал = ТЧ2.Филиал Тогда
                
                Если Код <> СокрЛП(ТЧ2.Код) Тогда
                    
                    Код = СокрЛП(ТЧ2.Код);
                    ИндексПоиска = Лев(СокрЛП(Филиал) + "   ",3) + "#" + Лев(СокрЛП(Код) + "                         ",25);
                    
                    Стр = 0;
                    
                    Если ТЧ3.НайтиЗначение(ИндексПоиска,Стр,"ИндексПоиска") = 1 Тогда
                        
                        ТЧ3.ПолучитьСтрокуПоНомеру(Стр);
                        ИтогС = ТЧ3.Итог;
                    
                    Иначе
                        
                        ИтогС = 0;
                        
                        Сообщить("Сотрудник с кодом " + ИндексПоиска + " не найден");
                        
                    КонецЕсли;
                    
                    Таб.ВывестиСекцию("Т2");
                    
                КонецЕсли;
                
                ДатаСоб = ТЧ2.ДатаСоб;
                КолОтрМин = ТЧ2.КолОтрМин;
                Таб.ВывестиСекцию("Т3");
                Приход = ТЧ2.Приход;
                Уход = ТЧ2.Уход;
                КолОтрМин = ТЧ2.КолОтрМин;
                Таб.ВывестиСекцию("Т4");
                
            Иначе
                
                Филиал = ТЧ2.Филиал;
                Таб.ВывестиСекцию("Т1");
                Код = СокрЛП(ТЧ2.Код);
                ИндексПоиска = Лев(СокрЛП(Филиал) + "   ",3) + "#" + Лев(СокрЛП(Код) + "                         ",25);
                
                Стр = 0;
                
                Если ТЧ3.НайтиЗначение(ИндексПоиска,Стр,"ИндексПоиска") = 1 Тогда
                    
                    ТЧ3.ПолучитьСтрокуПоНомеру(Стр);
                    ИтогС = ТЧ3.Итог;
                    
                Иначе
                    
                    ИтогС = 0;
                    
                    Сообщить("Сотрудник с кодом " + ИндексПоиска + " не найден");
                    
                КонецЕсли;
                
                Таб.ВывестиСекцию("Т2");
                ДатаСоб = ТЧ2.ДатаСоб;
                КолОтрМин = ТЧ2.КолОтрМин;
                Таб.ВывестиСекцию("Т3");
                Приход = ТЧ2.Приход;
                Уход = ТЧ2.Уход;
                КолОтрМин = ТЧ2.КолОтрМин;
                Таб.ВывестиСекцию("Т4");    
                
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЦикла;
    
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Отчет","");
    
КонецПроцедуры
1 Aleksey
 
19.01.17
02:25
А в чем собственно проблема?

Процедура ОбработкаЯчейкиТаблицы(<?>,,,)
КонецПроцедуры
Синтаксис:
ОбработкаЯчейкиТаблицы(<Значение>,<ФлагСтандОбраб>,<Таблица>,<Адрес>)
Назначение:
Предопределенная процедура обработки ячейки таблицы (по двойному щелчку мыши или по нажатию клавиши ''Enter'' в табличном документе на выбранной ячейке).
Параметры:
<Значение> - здесь в процедуру передается вычисленное значение ячейки (задается в конфигураторе: ''Свойства'' ячейки, ''Текст'', ''Значение'').
<ФлагСтандОбраб> - флаг обработки ячейки: установка в 1 приведет к выполнению стандартной обработки значения ячейки по завершении процедуры (открытию документа, элемента справочника и т.п.).
<Таблица> - необязательный параметр. Имя переменной, куда система передаст объект типа ''Таблица''. С помощью значения этого контекста можно произвольно манипулировать данной таблицей, пока она открыта. Пока данный объект ''Таблица'' существует,  тип значения данного параметра равен 100, если закрыта - 0.
<Адрес> - необязательный параметр. Имя переменной, куда система передаст адрес ячейки/объекта в формате ''R1C1:R2C2''.
Замечание:
Объект типа ''СписокЗначений'' может записываться в поле ''значение'' ячейки таблицы и использоваться затем процедурой ОбработкаЯчейкиТаблицы.
Важно!
Если данная процедура описана в модуле формы, то вызывается она, иначе система запускает одноименную процедуру из глобального модуля.
Внимание!
Данная предопределенная процедура НЕ вызывается при выборе ячейки таблицы в режиме ввода данных. Для этого случая вызывается предопределенная процедура ПриВыбореЯчейкиТаблицы.
2 skaylanz23
 
19.01.17
02:34
Спасибо большое.
3 rphosts
 
19.01.17
03:09
Таб = СоздатьОбъект("Таблица");
эээ, может не проснулся, а не так нужно начинать?
    Таб = Новый Табличный документ;

и это... что-бы клик отрабатывал нужна форма к которой прикрепить обработчик (точнее к табличному документу на ней лежащему над которым надругаться кликом)
4 varelchik
 
19.01.17
09:50
(3) Не в ту ветку попали.
Смотрим сверху 7.7 и ранее.
5 Ёпрст
 
19.01.17
09:53
6 linoblack
 
19.01.17
11:33
(3) дас ист Спарта!!!! )))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn