PDA

Просмотр полной версии : 1с 7.7 обработка расшифровки ячейки таблицы помогите разобраться плиз



Igoor46
19.10.2022, 13:44
Доброго времени суток.
Занялся изучением программирования в 1с. Т.к. в конторе до сих пор используют 7.7 УСН то соответственно с ней и маюсь. Опыта пока мало, потому опытным программистам мой вопрос покажется примитивным, но уж не обессудьте. Читал и книжки и документацию и по форумам искал, так и не смог разобраться, видимо мозгов не хватает :)
Собственно, в чем вопрос. Делаю обработкой простой отчет. В одной из ячеек выражение типа "Справочник.Номенклатура". Дабы по двойному клику открывалась карточка счета, в модуле прописываю:


Перем Таб, Расшифровка;

Процедура Сформировать()
Таб.Очистить();
Таб.ВывестиСекцию("Шапка");
Таб.Опции(0,0,3,0);
Сч = СоздатьОбъект("Счет.Основной");
Сч.НайтиПоКоду("41");
Счет = Сч.ТекущийСчет();
Расшифровка.Установить("Счет", Счет);
Расшифровка.Установить("ОтборСубконто1", 2);
Расшифровка.Установить("ВидСубконто1", ВидыСубконто.Номенклатура) ;
Расшифровка.Установить("Субконто1", ВыбНоменклатура);
Расшифровка.Установить("Дата1", НачГода(ТекущаяДата()));
Расшифровка.Установить("Дата2", ТекущаяДата());
Расшифровка.Установить("Отчет", "КарточкаСчета");
Таб.ВывестиСекцию("Строка");
Таб.ТолькоПросмотр(1);
Таб.Показать("Номенклатура","");
КонецПроцедуры

Процедура ПриОткрытии()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Расшифровка = СоздатьОбъект("СписокЗначений");
КонецПроцедуры

И все прекрасно работает, карточка счета открывается.
Но. Понадобилась на отчете кнопка "Обновить", так чтобы заново запускалась процедура "Сформировать". Дописываю модуль:


Процедура ОбработкаЯчейкиТаблицы(Зн� �чение, Флаг, Таб);
Если НЕ(Значение = "Обновить") Тогда
Флаг = 1;
СтатусВозврата(0);
Возврат;
Иначе
Флаг = 0;
Сформировать();
КонецЕсли;
КонецПроцедуры

Обновление отчета срабатывает как надо, НО перестала открываться карточка счета. Понятно, что если в модуле обработки есть процедура "ОбработкаЯчейкиТаблицы", то выполняется именно она а не аналогичная процедура из глобального модуля. И при этом при двойном клике на ячейке с номенклатурой (в которой прописана расшифровка типа "Список Значений" с параметрами нужной карточки счета) появляется предупреждение с текстом "СписокЗначений".
Игрался и с Флагом и со СтатусомВозврата (кто-то посоветовал), но не помогло.
Как сделать так, чтобы при клике на любую ячейку кроме "Обновить" срабатывала именно процедура глобального модуля. Или может как-то по другому надо решать эту задачу. Не могу сообразить.
Подскажите плизз.

Igoor46
19.10.2022, 15:01
Похоже, что сам нашел решение.


Процедура ОбработкаЯчейкиТаблицы(Зн� �чение, Флаг, Таб);
Если Значение = "Обновить" Тогда
Сформировать();
Иначе
глРасшифровка = Расшифровка;
глФлагРасшифровки = 1;
Отчет = Расшифровка.Получить("Отчет");
Попытка
Если Метаданные.Отчет(Отчет).Выб ран() = 1 Тогда
ОткрытьФорму("Отчет."+Отчет+"#");
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
глФлагРасшифровки = 0;
глРасшифровка = 0;
КонецЕсли;
КонецПроцедуры

Все срабатывает как и требовалось. Может еще есть более оптимальные варианты решения?