23.03.2018 Алена Крюкова 35155
Система компоновки данных 1С: программная рас...

Содержание:

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

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

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

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


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


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


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


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

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


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

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

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

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

                                               Возврат;

                               КонецЕсли;

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

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

                КонецЕсли;

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

 


&НаСервере

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

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


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

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

 

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

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

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

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

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

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

                               КонецЕсли;

                КонецЦикла;

КонецЕсли;

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

        


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


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


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

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

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

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

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

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

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

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

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

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

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

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

                КонецЕсли;

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

 

&НаКлиенте

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

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

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

            

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

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

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

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

             

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

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

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

 

&НаКлиенте

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

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

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

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

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

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

               

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

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



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


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


&НаКлиенте

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

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

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

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

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

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

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

               

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

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

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


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

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


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

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

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


&НаСервере

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

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

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

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

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

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

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

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

                                           

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

                                               Прервать;

                КонецЕсли;

                КонецЦикла;

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

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

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

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

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

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


&НаКлиенте

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

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

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

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

                              

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

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

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

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

                                               Возврат;

                               КонецЕсли;

                              

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

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

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

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

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

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

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

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

               

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

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

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

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

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

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

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

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

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

                КонецЕсли;   

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



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

 

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


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

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

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

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

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

                КонецЕсли;

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

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


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

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

Наши проекты

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение документов
• Учет рабочего времени
Закупки (снабжение) и...

Внедрение ПП "1С:Управление небольшой фирмой 8 ПРОФ" в ООО «Шокостайл»
ООО «Шокостайл»

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Планирование продаж;
Склад и логистика:
-Управление складскими ...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам
- Оформление заказов покупателей
- Управление складскими запасами ...

ООО «ЛукБелОйл»
ООО «ЛукБелОйл»

Отрасль:
Нефтегазовая отрасль

Внедренное типовое решение:

- Обследовании бизнес-процессов «Документооборот», «Казначейство и Бюджетирование», «Управление закупками»
- Подбор и обоснование оптима...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Бухгалтерский учет Банк и касса Расчеты с контрагентами Торговые операции ...

ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"
ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"

Отрасль:
Деятельность больничных организаций

Внедренное типовое решение:
БИТ:Управление медицинским центром 8

- Управление отношениями с клиентами (CRM)
- Делопроизводство
- Ведение номенклатуры дел
- Работа с обращениями граждан
- У...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО «Союз Три» (Кондитерский дом Renardi)
ООО «Союз Три»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Бухгалтерский учет
- Банк и касса
- Расчеты с контрагентами
Налоговый учет ...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП

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

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

Отрасль:
Авиационно-космическая промышленность

Внедренное типовое решение:
1С:Управление торговлей

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование продаж. ...

ООО «Фипар»
ООО «Фипар»

Отрасль:

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Специалисты «Кодерлайн» внедрили «1С:ERP. Управление предприятием 2» и автоматизировали блоки: продажи, закупки, производство, складская и т...

ПАО «АрселорМиттал Кривой Рог»
ПАО «АрселорМиттал Кривой Рог»

Отрасль:
Металлургическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием для Украины

- Кадровый учет
- Расчет зарплаты
- Регламентированная отчетность
- Учет рабочего времени ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение