KoderLine
Обслуживание
и внедрение
Наш Facebook Наш Instagram Наш YouTube
+7 (495) 374 55 29 Обратный звонок
Система компоновки данных 1С: программная рас...

Система компоновки данных 1С: программная расшифровка

0
2100
23.03.2018 Алена Крюкова

Содержание:

1. Пример расшифровки отчета 1С

2. Расшифровка отчета СКД другим отчетом

3. Дополнительная расшифровка отчета

4. Расшифровка отчетов 1С для типовых конфигураций


Рассмотрим задачу изменения расшифровки по умолчанию в 1С отчетах, реализованных с помощью системы компоновки данных (далее СКД). Один из вариантов решения этой задачи – переопределение алгоритма расшифровки в модуле формы отчета СКД.


[Очень часто для отчетов, выполненных с помощью системы компоновки данных, требуется изменить расшифровку по умолчанию. Один из вариантов решения этой задачи – переопределение алгоритма расшифровки в модуле формы отчета.]


1. Расшифровка отчета 1С: Открытие значения группировки отчета


Процедура обработчик события Обработка Расшифровки поля табличного документа выполняется при двойном щелчке мышью по полю отчета.

Следующий код выполняет открытие формы документа, являющегося значением группировки отчета:


&На Клиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

                Если КлючТекущегоВарианта = "Вариант1" Тогда //Проверяем текущий вариант

                               Документ = ПолучитьДокумент(Расшифровка); //получаем ссылку на документ

                               Если Документ = Неопределено Тогда

                                               Возврат;

                               КонецЕсли;

                                СтандартнаяОбработка = Ложь;

ПоказатьЗначение(, Документ);//открываем форму документа

                КонецЕсли;

КонецПроцедуры

 


&НаСервере

Функция ПолучитьДокумент(Расшифровка)

Получим значения группировок для поля, которое пытаются «расшифровать»:


Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); //данные расшифровки – (реквизит формы отчета) строка с адресом хранения данных расшифровки

Группировки = Данные.Элементы.Получить(Расшифровка).ПолучитьРодителей();

 

Если Группировки.Количество() > 0 Тогда

ИдентификаторГруппировки = Группировки[0].Идентификатор;

                ПоляГруппировки = Данные.Элементы.Получить(ИдентификаторГруппировки).ПолучитьПоля();

                Для Каждого ПолеГруппировка Из ПоляГруппировки Цикл //находим нужную группировку

                               Если ПолеГруппировка.Поле = "Документ" Тогда

                                               Возврат ПолеГруппировка.Значение;              

                               КонецЕсли;

                КонецЦикла;

КонецЕсли;

КонецФункции     

        


2. Расшифровка отчета СКД другим отчетом


В следующем примере продемонстрируем, как производится в 1С расшифровка отчета другим отчетом:


&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

                Если КлючТекущегоВарианта = "Вариант1" Тогда //Проверяем текущий вариант

                               СтандартнаяОбработка = Ложь;

ПараметрыФормы = Новый Структура;

                               ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

                               ПараметрыФормы.Вставить("КлючВарианта", "ОтчетРасшифровка");

                               ПараметрыФормы.Вставить("КлючНазначенияИспользования", "Расшифровка");

                               ФормаРасшифровки = ПолучитьФорму("Отчет. Расшифровка.Форма ", ПараметрыФормы, , Истина);

                               КомпоновщикНастроекРасшифровки = ФормаРасшифровки.Отчет.КомпоновщикНастроек;

                               ЗаполнитьНастройкиРасшифровки(КомпоновщикНастроекРасшифровки, Расшифровка);

ФормаРасшифровки.Открыть();

                                ФормаРасшифровки.ВариантМодифицирован = Ложь; //если в процедуре ЗаполнитьНастройкиРасшифровки //меняется настройка типового варианта отчета, то при закрытии отчет расшифровка может выдавать вопрос о сохранении варианта. //Что бы этого не происходило, сбросим флаг модифицированности варианта отчета.

                КонецЕсли;

КонецПроцедуры

 

&НаКлиенте

Функция ЗаполнитьНастройкиРасшифровки(КомпоновщикНастроекРасшифровки, Расшифровка)

                ПараметрыКомпоновки = КомпоновщикНастроекРасшифровки.Настройки.ПараметрыДанных;

Заполним параметры отчета-расшифровки параметрами текущего отчета

            

    ПараметрОтчета = ПараметрПользовательскихНастроек(КомпоновщикНастроек, "Параметр1");

                ПараметрОтчетаРасшифровки = ПараметрПользовательскихНастроек(КомпоновщикНастроекРасшифровки, "Параметр1");

                ПараметрОтчетаРасшифровки.Значение = ПараметрОтчета.Значение;

Получение параметров отчета-расшифровки из группировок текущего отчета

             

   ПараметрОтчетаРасшифровки = ПараметрПользовательскихНастроек(КомпоновщикНастроекРасшифровки, "Параметр2");

                ПараметрОтчетаРасшифровки.Значение =ПолучитьДокумент(Расшифровка);                      

КонецФункции // ЗаполнитьПользовательскиеНастройки()

 

&НаКлиенте

Функция ПараметрПользовательскихНастроек(КомпоновщикНастроек, ИмяПараметра)

                ПараметрыКомпоновки = КомпоновщикНастроек.Настройки.ПараметрыДанных;

                ПараметрКомпоновки = ПараметрыКомпоновки.Элементы.Найти(ИмяПараметра);

                ИдентификаторНастройки = ПараметрКомпоновки.ИдентификаторПользовательскойНастройки;

                Коллекция = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;

                ПараметрПользовательскихНастроек = Коллекция.Найти(ИдентификаторНастройки);

               

                Возврат ПараметрПользовательскихНастроек;

КонецФункции



3. Дополнительная расшифровка отчета


Для переопределения дополнительной расшифровки (контекстное меню поля отчета) используется обработчик ОбработкаДополнительнойРасшифровки табличного поля документа.
Пример:


&НаКлиенте

Процедура РезультатОбработкаДополнительнойРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

                СтандартнаяОбработка = Ложь;

//список стандартных действий доступных в контекстном меню

ДоступныеДействия = СписокДоступныхДействий(Расшифровка);

                //в качестве дополнительного действия сделаем доступной расшифровку другим отчетом

                ДополнительныеДействия = Новый СписокЗначений;

                ДополнительныеДействия.Добавить("ОтчетРасшифровка", "Отчет-расшифровка");

               

                ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет);

                ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, ИсточникНастроек);

Определим процедуру, которая будет обрабатывать выбор пользователя


                ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаРасшифровкиЗавершение", ЭтаФорма, Расшифровка);

Выведем на экран контекстное меню дополнительной расшифровки


ОбработкаРасшифровки.ПоказатьВыборДействия(ОписаниеОповещения, Расшифровка, ДоступныеДействия, ДополнительныеДействия);

КонецПроцедуры

Функция, формирующая список доступных действий для текущей ячейки отчета:


&НаСервере

Функция СписокДоступныхДействий(Расшифровка)

                ДоступныеДействия = Новый Массив;

                ДействияРашифровки = ДействиеОбработкиРасшифровкиКомпоновкиДанных;

                Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);

                Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля();

                Для Каждого ПолеРасшифровки Из Поля Цикл

                               Если ПолеРасшифровки.Поле = "Документ" Тогда

Если это попытка расшифровки поля Документ, добавим возможность открыть форму документа

                                           

    ДоступныеДействия.Добавить(ДействияРашифровки.ОткрытьЗначение);

                                               Прервать;

                КонецЕсли;

                КонецЦикла;

                ДоступныеДействия.Добавить(ДействияРашифровки.Оформить);

                ДоступныеДействия.Добавить(ДействияРашифровки.Отфильтровать);

                ДоступныеДействия.Добавить(ДействияРашифровки.Упорядочить);

                Возврат ДоступныеДействия;

КонецФункции

Функция, выполняющая обработку действия, выбранного пользователем:


&НаКлиенте

Процедура ОбработкаРасшифровкиЗавершение(ВыбранноеДействие, ПараметрВыбранногоДействия, ДополнительныеПараметры) Экспорт

                ДействияРашифровки = ДействиеОбработкиРасшифровкиКомпоновкиДанных;

                Если ВыбранноеДействие = ДействияРашифровки.ОткрытьЗначение Тогда // Действие открытие значения

                               ПоказатьЗначение(, ПараметрВыбранногоДействия);

                              

                ИначеЕслиВыбранноеДействие = "ОтчетРасшифровка" Тогда

                               Расшифровка = ДополнительныеПараметры;

                               Документ = ПолучитьДокумент (Расшифровка);

                               Если Документ = Неопределено Тогда

                                               Возврат;

                               КонецЕсли;

                              

                               ПараметрыФормы = Новый Структура;

                               ПараметрыФормы.Вставить("Отбор", Новый Структура("Документ", Документ));

                               ПараметрыФормы.Вставить("КлючВарианта", "ОтчетРасшифрока");

                               ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

                               ПараметрыФормы.Вставить("КлючНазначенияИспользования", "Расшифровка");

                               ФормаРасшифровки = ПолучитьФорму("Отчет.Расшифровка.Форма", ПараметрыФормы, , Истина);

                               ЗаполнитьНастройкиРасшифровки(ФормаРасшифровки.Отчет.КомпоновщикНастроек);

                               ФормаРасшифровки.Открыть();

               

                Иначе //стандартные действия           

                               ПараметрыФормы = Новый Структура;

                               ПараметрыФормы.Вставить("КлючВарианта", "ТекущийВариантОтчета");

                               ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

                               Расшифровка = ДополнительныеПараметры;

                               ОписаниеОбработкиРасшифровки = Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Расшифровка, ПараметрВыбранногоДействия);

                               ПараметрыФормы.Вставить("Расшифровка", ОписаниеОбработкиРасшифровки);

                               ФормаРасшифровки = ПолучитьФорму("Отчет.ТекущийОтчет.Форма", ПараметрыФормы,, Истина);

                               ФормаРасшифровки.Открыть();

                КонецЕсли;   

КонецПроцедуры // ОбработкаДействияРасшифровки()



4. Расшифровка отчетов 1С для типовых конфигураций 

 

В отчетах, предназначенных для работы в типовых конфигурациях, удобно использовать общую форму отчетов. Чтобы переопределить расшифровку таких отчетов не обязательно менять модуль формы, достаточно прописать процедуры обработки расшифровки в общем модуле ОтчетыКлиентПереопределяемый:


// Обработчик расшифровки табличного документа формы отчета.

Процедура ОбработкаРасшифровки(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка) Экспорт

                //Начало изменений

                Если ФормаОтчета.НастройкиОтчета.ПолноеИмя = "Отчет.ТекущийОтчет" Тогда

                               //сюда помещаем код обработки расшифровки описанный выше

                КонецЕсли;

                //КонецИзменений

КонецПроцедуры


Разработчик ООО «Кодерлайн»

Алена Крюкова.

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Теги
#1С: CRM #1С: ERP #1С: ERP Управление строительной организацией #1С: ERP. Управление буровой компанией #1С: WMS Управление складом #1С: Аренда и управление недвижимостью #1С: БУХ #1С: Договорчики #1С: Документооборот #1С: ЗУП #1С: Интеграция #1С: КА #1С: Колледж #1С: Конвертация данных #1С: Платформа #1С: Розница #1С: Сценарное тестирование #1С: ТОИР #1С: УАТ #1С: УКФ #1С: Университет #1С: УНФ #1С: УПП #1С: Управление строительной организацией #1С: УТ #1С: УХ #ADO #APACHE #API #com-объекты #Excel #GoogleDrive #HTTP #ITIL #Koderline: Управление медиа-холдингом #Koderline: Управление проектами строительства скважин #LINUX #MS SQL Server #WEB #WEB-сервисы 1С #Word #XML #Администрирование 1С #Безопасность сервера #Бесшовная интеграция #БИТ.Финанc #Битрикс24 #Блокировки в 1С #БСП #БУ #Бурение скважин #Бюджетирование #Внедрение #Внедрение ERP #Закрытие месяца #Запросы 1С #Интеграция 1С #Как сделать в 1С #Конвертация данных #Корпоративное сопровождение #Лизинг #Лицензии 1С #Моделирование #МСФО #Налоги #Обмен между базами #Обновления #Оптимизация #Отпуск #Отчетность #Отчеты в 1С #Оценка задач #Перенос данных #Планирование #Полезные обработки #Правила обмена #Проводки 1С #Программирование в 1С #Программные права #Продажи #Производство #Расширение конфигурации #РСБУ #СКД #Сравнение конфигураций #Тестирование 1С #Техническое задание #Торговое оборудование #Транспортная логистика #Управление проектами #Финансовый учет #Ценообразование #Экзамен 1С #Яндекс.Касса Email или телефон
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.
Яндекс.Метрика