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

Содержание:

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

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

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

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


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


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


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


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

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


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

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

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

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

                                               Возврат;

                               КонецЕсли;

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

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

                КонецЕсли;

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

 


&НаСервере

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

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


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

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

 

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

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

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

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

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

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

                               КонецЕсли;

                КонецЦикла;

КонецЕсли;

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

        


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


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


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

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

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

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

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

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

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

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

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

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

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

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

                КонецЕсли;

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

 

&НаКлиенте

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

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

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

            

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

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

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

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

             

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

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

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

 

&НаКлиенте

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

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

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

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

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

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

               

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

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



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


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


&НаКлиенте

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

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

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

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

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

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

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

               

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

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

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


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

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


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

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

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


&НаСервере

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

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

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

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

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

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

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

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

                                           

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

                                               Прервать;

                КонецЕсли;

                КонецЦикла;

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

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

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

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

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

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


&НаКлиенте

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

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

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

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

                              

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

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

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

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

                                               Возврат;

                               КонецЕсли;

                              

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

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

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

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

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

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

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

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

               

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

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

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

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

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

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

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

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

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

                КонецЕсли;   

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



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

 

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


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

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

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

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

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

                КонецЕсли;

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

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


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

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

Наши проекты

Группа компаний АО «Киномакс»
Группа компаний АО «Киномакс»

Отрасль:
Культура, шоу-бизнес

Внедренное типовое решение:
БИТ.Финанс

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

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

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

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

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

ООО "Смена"
ООО "Смена"

Отрасль:
Торговля, склад, логистика, транспорт

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

Банк и касса
Расчеты с контрагентами
Торговые операции
Взаиморасчеты с...

ПЭК
ПЭК

Отрасль:
Грузоперевозки

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Перевод зарплатных баз с версии ЗУП 2.5 на версию ЗУП 3.1.
- Сопровождение в п...

Внедрение блока бухгалтерского учета «1С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

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

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

Бухгалтерский учет:
- Завершение периода;
- Регламентированная отчетнос...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

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

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

Объемно-календарное планирование производства Автоматизация бизнес-проце...

АО «Вертолетная сервисная компания»
АО «Вертолетная сервисная компания»

Отрасль:
МТО эксплуатации вертолетной техники

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

- Консультации по сложным вопросам налогового и бухгалтерского учета;
- Ра...

МГК "Световые Технологии"
МГК "Световые Технологии"

Отрасль:

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

Специалисты "Кодерлайн" произвели доработки в системе 1С:ЕРП 2.4 с учетом треб...

Филиал ГлавУпДК при МИД России фирма «Инпредкадры»
Филиал ГлавУпДК при МИД России фирма «Инпредкадры»

Отрасль:
Государственное управление

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

- Расчеты с контрагентами;
- Управленческий учет;
- Формирование отраслев...

Внедрение 1С:Управление торговлей в оптово-розничной компании «Ална-Байк»
ИП Титов Виктор Сергеевич «Ална-Байк»

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

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

- Управление складами;
- Управление заказами поставщиков;
- Управление зак...

Автоматизации бизнес-процессов учета и планирования на базе «1С:ERP Управление предприятием 2.0»
ООО «Буровая сервисная компания «ГРАНД»

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

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

- Создание полноценной управленческой системы взамен существующих
- Внедр...

Автоматизация контроля исполнительской дисциплины на базе ПП «1С:Документооборот 8 ПРОФ»
ООО «ФСК Лидер»

Отрасль:
Строительство и девелопмент

Внедренное типовое решение:
1С:Документооборот 8 ПРОФ

- Делопроизводство;
- Учет и хранение документов;
- Учет и контроль исполне...

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

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

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

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