 |
| Реестр НН |
| Vava | Дата: Суббота, 28.06.2008, 12:55 | Сообщение # 1 |
 Подполковник
Группа: Пользователи
Сообщений: 134
Репутация: 0
Статус: Offline
| Вопросик. Понадобилось изменить стандартный реестр НН. В частности изменить порядок выводимых строк таблицы и по требованию сворачивать строки с одинаковыми контрагентами. В стандартном реестре при двойном клике по значению ячейки программа "проваливалась" в книгу (приобретений/продаж). После реализации описанных выше возможностей (строки перехватывались перед выводом, заносились в таблицу значений, обрабатывались и только потом выводились) эта функция пропала Почему и как вообще ЭТО работает? Спасибо!
|
| |
|
| |
| ivisor | Дата: Суббота, 28.06.2008, 20:52 | Сообщение # 2 |
 Генерал-полковник
Группа: Проверенные
Сообщений: 1049
Репутация: 98
Статус: Offline
| Работало это через расшифровку - у ячейки в свойствах в атрибуте "Расшифровка" пишется #Расшифровка. Это обычно список значений, который заполняется перед выводом ячейки/строки. Когда потом на ячейку таблицы нажимаешь мышкой - вызывается глоб. процедура обработки Процедура ОбработкаЯчейкиТаблицы(Расшифровка, СтандартнаяОбработка, Таблица) В ней в зависимости от содержимого Расшифровки вызывается/открывается тот или иной объект/отчет конфигурации. Т.е.: 1. У ячейки табл. в "Расшифровка" пишем #Расшифровка. 2. В модуле из которого формируем данные таблицы, до вывода ячейки пишем: Code Расшифровка = СоздатьОбъект("СписокЗначений"); Расшифровка.ДобавитьЗначение("..."); // Здесь добавляется все данные, которые необходимиы ... Расшифровка.ДобавитьЗначение("..."); // для вызываемого по расшифровке объекта Какие данные нужны для расшифровки можно посмотреть в процедуре ПриОткрытии() модуля того объекта, который планируется вызывать по расшифровке. (Можно подсмотреть в стандартном отчете, где уже реализована расшифровка этого объекта) 3. По нажатию на ячейку вызывается глоб. предопред. процедура ОбработкаЯчейкиТаблицы(), где определяется какой же именно оъект открывать при расшифровке и собственно открывает форму этого объекта. Кроме того здесь важны еще 2 строки: Code глРасшифровка = Расшифровка; глФлагРасшифровки = 1; глОбновить = Число(Расшифровка.Получить("Обновить")); Если глОбновить <> 0 Тогда глТаблица = Таблица; КонецЕсли; В первой - переданные параметры расшифровки передаются глобальной переменной глРасшифровка, из которой получают данные все/любой объект использующий расшифровку в т.ч. и по кнопке "Обновить" (тогда объект вызывает сам себя в кач. расшифровки). Во вотрой - глФлагРасшифровки - устанавливает признак наличия данных в расшифровке (говорит что при открытии данные надо брать из расшифровки) Далее - получет признак обновления и если он не равен 0, то получает таблицу которую нужно обновить (Это все для того чтобы работала кнопка "Обновить" в шапке таблицы). 4. В модуле открываемого объекта в процедуре ПриОткрытии() проверяется - если глФлагРасшифровки = 1 то параметры отчета получаются из списка глРасшифровка.
Чтобы получить перечень доступных обновлений отошлите пустое письмо на адрес: 1c_download@bk.ru Впишите нужный пункт в тему письма для 1c_download@bk.ru и получите ссылку на закачку.
|
| |
|
| |
| Vava | Дата: Понедельник, 30.06.2008, 15:23 | Сообщение # 3 |
 Подполковник
Группа: Пользователи
Сообщений: 134
Репутация: 0
Статус: Offline
| Спасибо ivisor ! Но я не до конца разобрался. Quote 1. У ячейки табл. в "Расшифровка" пишем #Расшифровка. Я смотрел в отчете, где реализована расшифровка - там нет в свойствах ячеек записи "#Расшифровка" но все работает..? Quote 2. В модуле из которого формируем данные таблицы, до вывода ячейки пишем: Code Расшифровка = СоздатьОбъект("СписокЗначений"); Расшифровка.ДобавитьЗначение("..."); // Здесь добавляется все данные, которые необходимиы ... Расшифровка.ДобавитьЗначение("..."); // для вызываемого по расшифровке объекта Какие данные нужны для расшифровки можно посмотреть в процедуре ПриОткрытии() модуля того объекта, который планируется вызывать по расшифровке. (Можно подсмотреть в стандартном отчете, где уже реализована расшифровка этого объекта) Список значений Расшифровка формируется для всего документа или для каждой строки таблицы в отдельности? И как из этого списка потом извлекаются данные? И если планиуется, к примеру, открыть книгу приобретений, то где посмотреть ее процедуру ПриОткрытии()? За первый ответ благодарю!
|
| |
|
| |
| ivisor | Дата: Понедельник, 30.06.2008, 16:22 | Сообщение # 4 |
 Генерал-полковник
Группа: Проверенные
Сообщений: 1049
Репутация: 98
Статус: Offline
| Quote Я смотрел в отчете, где реализована расшифровка - там нет в свойствах ячеек записи "#Расшифровка" но все работает..? Заметь #Расшифровка ставиться в атрибуте "расшифровка", причем это значение может быть проставлено не во всех ячейках секции (в оборотно-сальдовой, например, расшифровка установлена только в ячейках колонки "Субконто" ).
Чтобы получить перечень доступных обновлений отошлите пустое письмо на адрес: 1c_download@bk.ru Впишите нужный пункт в тему письма для 1c_download@bk.ru и получите ссылку на закачку.
|
| |
|
| |
| ivisor | Дата: Понедельник, 30.06.2008, 16:31 | Сообщение # 5 |
 Генерал-полковник
Группа: Проверенные
Сообщений: 1049
Репутация: 98
Статус: Offline
| Quote Список значений Расшифровка формируется для всего документа или для каждой строки таблицы в отдельности? Расшифровка формируется перед каждой строкой т.к. например ты вывел строку с ТМЦ1 и расшифровка должна вызываться по ТМЦ1, а для ТМЦ2 соответственно должна вызываться расшифровка в которой в параметрах передан ТМЦ2 след. перед выводом строки с ТМЦ нужно в спис. Расшифровка внести значение ТМЦ и остальные параметры. Quote И как из этого списка потом извлекаются данные? И если планиуется, к примеру, открыть книгу приобретений, то где посмотреть ее процедуру ПриОткрытии()? Данные извлекаются из глРасшифровка (как они из Расшифровка в глРасшифровка попадают смотри в п.3 поста №2). Процедура ПриОткрытии() находится в модуле отчета Отчеты->КнигаПриобретения.
Чтобы получить перечень доступных обновлений отошлите пустое письмо на адрес: 1c_download@bk.ru Впишите нужный пункт в тему письма для 1c_download@bk.ru и получите ссылку на закачку.
|
| |
|
| |
| Vava | Дата: Понедельник, 30.06.2008, 16:37 | Сообщение # 6 |
 Подполковник
Группа: Пользователи
Сообщений: 134
Репутация: 0
Статус: Offline
| В колонке "№ з/п" в атрибуте "Расшифровка" стоит значение "Запр.НН#". В теле модуля Запр - созданный запрос, а НН - его группировка. Группировка - грубо говоря список строк значенмий. Так все таки что происходит при выводе строки? Как работает Расшифровка? Спасибо
|
| |
|
| |
| ivisor | Дата: Понедельник, 30.06.2008, 16:53 | Сообщение # 7 |
 Генерал-полковник
Группа: Проверенные
Сообщений: 1049
Репутация: 98
Статус: Offline
| Щас посмотрел - в расшифровке строки КнигиПреобретения стоит ЗКП.ТекущийДокумент() - єто значит, что при расшифровке будет передаваться не список Расшифровка, а сразу конкретный документ, и в глобальной процедуре ОбработкаЯчейкиТаблицы() будет сразу открываться форма операции соответствующего документа.Делает это вот такой фрагмент кода: Code Док = Расшифровка.Получить("Документ"); Если ТипЗначения(Док) <> 0 Тогда ОткрытьФорму("Операция",, Док, Расшифровка.Получить("НомерПроводки"), Расшифровка.Получить("НомерКорреспонденции"),-1); Добавлено (30.06.2008, 16:50) --------------------------------------------- Посмотри отладчиком установив точку останова в начала процедуры: ОбработкаЯчейкиТаблицы() Добавлено (30.06.2008, 16:53) ---------------------------------------------
Quote В колонке "№ з/п" в атрибуте "Расшифровка" стоит значение "Запр.НН#" Это и есть передача в расшифровку ссылки на документ (а не списка с параметрами расшифровки, т.к. в случае документа достаточно передать документ). При этом Запр.НН - должне быть документом, иначе расшифровка не будет работать.
Чтобы получить перечень доступных обновлений отошлите пустое письмо на адрес: 1c_download@bk.ru Впишите нужный пункт в тему письма для 1c_download@bk.ru и получите ссылку на закачку.
|
| |
|
|
|
 |
|