Нестандартная расшифровка СКД или расшифровка одного отчета СКД при помощи другого отчета СКД с выбором варианта настроек (в управляемых формах, методика + пример для УТ11)

Публикация № 165599 11.12.12

Приемы и методы разработки - СКД

Когда требуется расшифровка одного отчета СКД при помощи другого отчета СКД с возможностью выбора дополнительных настроек, можно использовать представленный вариант. Под "нестандартной расшифровкой" имеется ввиду расшифровка данных одного вида отчета - другим видом, отличным от первого (с предварительной установкой нужных параметров и отборов в отчете-расшифровке).

Реализация основана на статье Нестандартная расшифровка СКД или расшифровка одного отчета СКД при помощи другого отчета СКД, но имеет существенное дополнение, а именно позволяет производить как стандартное действие расшифровки отчета, так и нестандартное (расшифровку через другой отчет). Причем управление параметрами и отборами в текущей реализации вынесено в отдельные процедуры и функции, что повысило наглядность кода.

За основу отчета для расшифровки взят [УТ11] Дебиторка fifo по долгам контрагентов (СКД, управляемый интерфейс), к которому добавлена актуальная возможность расшифровки через стандартный отчет УТ11 "РасчетыСПартнерами". 

Сама методика работает в любой конфигурации на управляемых формах, но пример привожу для УТ11. Отчет интересен не только как реализация методики гибкой расшифровки, но и как удобное подспорье, для пользователя непосредственно при использовании.

Анимированная gif картинка показывает то, что увидит пользователь при попытке расшифровки по элементу "Партнер", предварительно построенного начального отчета:

Принцип работы

Т.е. при двойном клике по ячейке, в которой содержится информация о Партнере, открывается дополнительное уточняющее меню, в котором можно выбрать действие по умолчанию "Открыть...", либо получить уточняющий отчет "Показать расчеты с отбором...", причем по разным интервалам времени.

Реализация:

  1. Прежде всего, чтобы иметь возможность запрограммировать расшифровку нам понадобится форма расшифровываемого отчета, например ФормаОтчета, её необходимо добавить (элементы формы система добавит сама).

  2. Для элемента формы «Результат» в событии «ОбработкаРасшифровки» нужно добавить процедуру, например: «РезультатОбработкаРасшифровки»

  3. В модуле этой формы (ФормаОтчета) нужно наполнить процедуру РезультатОбработкаРасшифровки содержимым:

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

   
ЭтоГруппа = Ложь;
//Заполняем массив отрабатывемых типов 
   
МассивРасшифровываемых = Новый Массив();
   
МассивРасшифровываемых.Добавить("Партнер");
   
МассивРасшифровываемых.Добавить("Контрагент");
   
МассивРасшифровываемых.Добавить("Организация");

//Получаем значение, по которому произвели двойной щелчек
   
РасшифровываемоеЗначение = ПолучитьРасшифровкуНаСервере(Расшифровка, МассивРасшифровываемых, ЭтоГруппа); //Партнер, Контрагент или Организация.

   
Если РасшифровываемоеЗначение = Неопределено Тогда Возврат; КонецЕсли;
   
СтандартнаяОбработка = Ложь;


//Создание и заполнени объекта ОбработкаРасшифровкиКомпоновкиДанных (подробности в Хелпе)

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

   
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет;
   
ПараметрВыполненногоДействия = Неопределено;
   
ДоступныеДействия = Новый Массив;
   
ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
   
//ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Оформить);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Сгруппировать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить);
   
ДополнительныеПунктыМеню = Новый СписокЗначений;
   
ОбщаяСтрока = "Показать расчеты с отбором " + """" + Строка(ТипЗнч(РасшифровываемоеЗначение)) + " = " + РасшифровываемоеЗначение + """";
   
ДополнительныеПунктыМеню.Добавить( 1, ОбщаяСтрока + " за месяц");
   
ДополнительныеПунктыМеню.Добавить( 3, ОбщаяСтрока + " за 3 месяца");
   
ДополнительныеПунктыМеню.Добавить( 6, ОбщаяСтрока + " за пол года");
   
ДополнительныеПунктыМеню.Добавить(12, ОбщаяСтрока + " за год");


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

    Если
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет Тогда
    ИначеЕсли
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда

//Имитация стандартного действия
       
ОткрытьЗначение(ПараметрВыполненногоДействия);
    ИначеЕсли
ТипЗнч(ВыполненноеДействие) = Тип("Число") Тогда // Тут требуется наша расшифровка

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

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


//Заполняем настройки отчета расшифровки
       
УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу(КомпоновщикНастроек, КомпоновщикНастроекР, "Партнер");
       
УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу(КомпоновщикНастроек, КомпоновщикНастроекР, "Контрагент");
       
УстановитьЗначениеОтбораКомпоновщикаНастроек(КомпоновщикНастроекР, Строка(ТипЗнч(РасшифровываемоеЗначение)), РасшифровываемоеЗначение, ?(ЭтоГруппа, ВидСравненияКомпоновкиДанных.ВИерархии, ВидСравненияКомпоновкиДанных.Равно));

       
ДатаКонца = ПолучитьЗначениеПераметраКомпоновщикаНастроек(ЭтаФорма.Отчет.КомпоновщикНастроек, "ДатаКонца");
       
ПериодОтчета = Новый СтандартныйПериод(ДобавитьМесяц(ДатаКонца, - ВыполненноеДействие), ДатаКонца);
       
УстановитьЗначениеПераметраКомпоновщикаНастроек(КомпоновщикНастроекР, "Период", ПериодОтчета);

//Формируем и выводим отчета-расшифровку
       
СтруктураВозврата = ОбработатьРасшифровкуНаСервере(ФормаР.Отчет, "ОтчетОбъект.РасчетыСПартнерами", ФормаР.Результат, ФормаР.ДанныеРасшифровки, ФормаР.УникальныйИдентификатор);
       
ФормаР.Результат = СтруктураВозврата.Результат;
       
ФормаР.ДанныеРасшифровки = СтруктураВозврата.ДанныеРасшифровки;
       
ФормаР.Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;  //Избавление от надписи. Отчет не сформирован
       
ФормаР.Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
       
ФормаР.Открыть();

    КонецЕсли;
КонецПроцедуры

 

Серверная процедура ПолучитьРасшифровкуНаСервере, вызываемая из РезультатОбработкаРасшифровки - получает значение расшифровки (конкретную ссылку на элемент справочника, список типов которых переданы в параметрах), а также возвращает признак группы ЭтоГруппа:

&НаСервере
Функция ПолучитьРасшифровкуНаСервере(Расшифровка, МассивИменРасшифровки, ЭтоГруппа = Ложь)
   
Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
   
Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля();
    Для Каждого
ИмяРасшифровки Из МассивИменРасшифровки Цикл
       
ПолеНоменклатура = Поля.Найти(ИмяРасшифровки);
        Если Не
ПолеНоменклатура = Неопределено Тогда Прервать; КонецЕсли;
    КонецЦикла;

    Если
ПолеНоменклатура = Неопределено Тогда
        Возврат Неопределено;
    Иначе
       
ЭтоГруппа = ПолеНоменклатура.Значение.ЭтоГруппа;
        Возврат
ПолеНоменклатура.Значение;
    КонецЕсли;
КонецФункции


Клиентская процедура УстановитьЗначениеОтбораКомпоновщикаНастроек вызываемая из РезультатОбработкаРасшифровки (и из УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу) - устанавливает параметры отбора Компоновщика настроек отчета расшифровки, сначала пытается произвести установку пользовательских настроек отбора:

&НаКлиенте
Процедура УстановитьЗначениеОтбораКомпоновщикаНастроек(КомпоновщикНастроекР, ИмяОтбора, Значение, ВидСравнения, Использование = Истина)
   
ПолеЭлементаОтбора = КомпоновщикНастроекР.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти(ИмяОтбора).Поле;

   
ИДЭлмОтбора = "";
    Для Каждого
Элемент Из КомпоновщикНастроекР.Настройки.Отбор.Элементы Цикл
        Если
Элемент.ЛевоеЗначение = ПолеЭлементаОтбора Тогда ИДЭлмОтбора = Элемент.ИдентификаторПользовательскойНастройки; Прервать; КонецЕсли;
    КонецЦикла;

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

   
Если ИДЭлмОтбора = "" Тогда //Не нашли среди стандартных настроек
       
Для Каждого Элемент Из КоллекцияР Цикл //Ищем отбор, и добавляем в него.
           
Если ТипЗнч(Элемент) = Тип("ОтборКомпоновкиДанных") Тогда
               
ПолеОтбора = Новый ПолеКомпоновкиДанных(ИмяОтбора);
               
ОтборНайден = Ложь;
                Для Каждого
ЭлементОтбора Из Элемент.Элементы Цикл
                    Если
ЭлементОтбора.ЛевоеЗначение = ПолеОтбора Тогда ОтборНайден = Истина; Прервать; КонецЕсли;
                КонецЦикла;
                Если Не
ОтборНайден Тогда
                   
ЭлементОтбора = Элемент.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
                   
Элемент.Элементы[0].ЛевоеЗначение = ПолеОтбора;
                   
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОтбора);
                КонецЕсли;
                Прервать;
            КонецЕсли;
        КонецЦикла;
    Иначе
       
ЭлементОтбора = КоллекцияР.Найти(ИДЭлмОтбора);
    КонецЕсли;

   
ЭлементОтбора.ПравоеЗначение = Значение;
   
ЭлементОтбора.Использование = Использование;
   
ЭлементОтбора.ВидСравнения = ВидСравнения;
КонецПроцедуры

 

Клиентская процедура УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу вызываемая из РезультатОбработкаРасшифровки - устанавливает параметры отбора Компоновщика настроек отчета расшифровки извлекая их из текущего (расшифровываемого) отчета:

&НаКлиенте
Процедура УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу(КомпоновщикНастроек, КомпоновщикНастроекР, ИмяОтбора)

   
Коллекция = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; //Коллекция элементов пользовательчких настроек в текущем отчете
   
Отбор = КомпоновщикНастроек.Настройки.Отбор;
   
ПолеЭлементаОтбора = Отбор.ДоступныеПоляОтбора.Элементы.Найти(ИмяОтбора).Поле;
   
ИДЭлмОтбора = "";
    Для Каждого
Элемент Из Отбор.Элементы Цикл
        Если
Элемент.ЛевоеЗначение = ПолеЭлементаОтбора Тогда ИДЭлмОтбора = Элемент.ИдентификаторПользовательскойНастройки; Прервать; КонецЕсли;
    КонецЦикла;
   
ЭлементОтбора = Коллекция.Найти(ИДЭлмОтбора);

   
УстановитьЗначениеОтбораКомпоновщикаНастроек(КомпоновщикНастроекР, ИмяОтбора, ЭлементОтбора.ПравоеЗначение, ЭлементОтбора.ВидСравнения, ЭлементОтбора.Использование);
КонецПроцедуры

 

Клиентская функция  ПолучитьЗначениеПераметраКомпоновщикаНастроек и процедура УстановитьЗначениеПераметраКомпоновщикаНастроек вызываемые из РезультатОбработкаРасшифровки - устанавливают и получают значения параметров из компоновшика настроек СКД:

&НаКлиенте
Функция ПолучитьЗначениеПераметраКомпоновщикаНастроек(КомпоновщикНастроек, ИмяПараметра)
   
ИДНастройки = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра).ИдентификаторПользовательскойНастройки;
   
Коллекция = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    Возврат
Коллекция.Найти(ИДНастройки).Значение;
КонецФункции

&НаКлиенте

Процедура УстановитьЗначениеПераметраКомпоновщикаНастроек(КомпоновщикНастроекР, ИмяПараметра, Значение)
   
ИДНастройкиПараметраР = КомпоновщикНастроекР.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра).ИдентификаторПользовательскойНастройки;
   
КоллекцияР = КомпоновщикНастроекР.ПользовательскиеНастройки.Элементы; //Пользовательские настройки
   
КоллекцияР.Найти(ИДНастройкиПараметраР).Значение = Значение;
КонецПроцедуры

 

Серверная процедура  ОбработатьРасшифровкуНаСервере, вызываемая из РезультатОбработкаРасшифровки - собственно создает (компонует) отчет для дальнейшего отображения на экране 

&НаСервере
Функция ОбработатьРасшифровкуНаСервере(Знач ОтчетХ, ИмяТипаОтчета ,Знач РезультатХ, Знач ДанныеРасшифровкиХ, Знач ИДФормы)
   
ОтчетОбъект = ДанныеФормыВЗначение(ОтчетХ, Тип(ИмяТипаОтчета)); //Для компоновки результата
   
РезультатХ.Очистить();
   
ОтчетОбъект.СкомпоноватьРезультат(РезультатХ, ДанныеРасшифровкиХ);                                  //Собственно формирование отчета
   
АдресДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиХ, ИДФормы);                //Запоминаем расшифровку (с ИД формы)
   
Возврат Новый Структура("Результат,ДанныеРасшифровки", РезультатХ, АдресДанныеРасшифровки);         //Возвращаем результат и Адрес расщифровки
КонецФункции

 

Коротко поясню что делается в основной процедуре  РезультатОбработкаРасшифровки: 

  1. Получаем Ссылку (одного из нужных типов), по которой пользователь произвел клик (вызов серверной функции "ПолучитьРасшифровкуНаСервере") 

  2. Формируем и наполняем содержимым объект ОбработкаРасшифровки

  3. Выводим на экран меню расшифровки и считываем выбор пользователя

  4. В зависимости от выбора пользователя либо вызываем стандартное действие, либо производим нестандартную расшифровку (//infostart.ru/public/151562/)

 

Скачать файлы

Наименование Файл Версия Размер
ДолгиКлиентов.erf

.erf 15,06Kb
271
.erf 15,06Kb 271 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4585 11.12.12 12:02 Сейчас в теме
(0) Может оформите код нормально, с помощью раскраски кода http://infostart.ru/public/19856/? Цветомузыка по глазам бьёт.
2. mxm2 1230 11.12.12 17:00 Сейчас в теме
(1) Поручик, Спасибо за ссылку: Переделал, но не уверен что стало лучше.
3. Модератор раздела artbear 12.12.12 10:51 Сейчас в теме
Хорошо бы шрифт поменять. Текущий слишком плотный, буквы очень близко :(
4. mxm2 1230 12.12.12 18:06 Сейчас в теме
(3) artbear, уменьшил размер шрифта, теперь вроде "читабельно"
5. gn@mik 52 24.12.12 17:28 Сейчас в теме
Большое спасибо. Данный алгоритм помог мне создать отчет остатки товаров с расшифровкой по оборотам за период.
6. mxm2 1230 24.12.12 20:56 Сейчас в теме
(5) gn@mik, если в пределах стандартной (или почти стандартной) конфигурации - то смело выкладываете результат, и Вам польза и сообществу.
7. It-developer 20 02.04.13 12:13 Сейчас в теме
Спасибо. 3 часа *бъюсь уже с расшифровкой. Это статья тоже немного помогла
8. mxm2 1230 02.04.13 14:22 Сейчас в теме
(7) It-developer, возможно это вариант проще: http://infostart.ru/public/161994/
19. newvideo 20.02.20 10:00 Сейчас в теме
(8)Подскажите пожалуйста а как можно ? получить данные не ячейки, на которой кликает юзер, а данные группировки, в которой эта ячейка находится и название колонки, ведь в моем отчете нет ссылки в ячейке, есть только сумма, а сумму нужно расшифровать с разным результатом, в зависимости от того где эта ячейка расположена в отчете.
20. user1287374 25.03.20 22:06 Сейчас в теме
(19) ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле - это будет наименование колонки
Взяла тут, мне помогло
http://infostart.dexcel.ru/public/18961/
9. Serge_ASB 25.03.14 11:23 Сейчас в теме
а как-то можно сделать. чтобы расшифровка выдавалась в одной таблице с отчетом, как нижний уровень группировки, например?
Было б удобно:
например Документ Реализация, а к нему снизу табличная часть документа: наименование, количество, цена, сумма
Или
Документ Выписка, а к нему снизу документы Поручение входящее/исходящее - Контрагент, Сумма (приход/Расход)
11. alex_shkut 57 03.06.14 15:50 Сейчас в теме
(9)Думаю, что можно. Добавить программно вложенную схему с рашифровкой или сделать нужное количество предопределенных.
Перестроить программно структуру отчета с вставкой вложенной схемы на нужный уровень и переформировать полученный отчет.
Это только теория, я ее не проверял.
10. alex_shkut 57 03.06.14 15:44 Сейчас в теме
В файловом варианте все работало без проблем, пришлось изменить немного код:
Данные = ДанныеРасшифровкиОтчета; //было ПолучитьИзВременногоХранилища( тра-ля-ля
Поскольку никакого сервера не было в помине - все было "на клиенте" по умолчанию.
Теперь клиент-сервер.
Исходные: сервер терминалов Виндовс, толстый клиент. Сервер 1С и база Постгри на Линуксе.

Попытка исполнить отчет созданный на базе этой статьи привел к ошибке "Процедура с таким именем не определена ?ПолучитьРасшифровку"
Пытался понять, как все это подружить, и просто убрал директиву &НаСервере
Работает. Можно допилить под все варианты, но я пока этим заниматься не буду. Тонкий клиент мне еще не светит :)))
12. Razrab1c 41 07.01.15 21:28 Сейчас в теме
спасибо огромное, мне статья очень помогла!
13. gusen_it 01.03.15 13:03 Сейчас в теме
Спасибо за публикацию, мне очень помогло... хотя я и переделал на 8.2 в режиме толстого клиента в файловой версии.
Все получилось кроме одной одного момента..

Во втором отчете, который был открыть передачей параметров расшифровки перестает работать расшифровка отрытого отчета (второго)

В отчете "А" путем добавления своих параметров расшифровки и обработки их в процедуре РезультатОбработкаРасшифровки открываю второй отчет "Б" через вызов:
ФормаР = Отчеты.Долговая.ПолучитьФорму("ФормаОтчета");

Но вот во втором отчете "Б" перестает открывается стандартное меню расшифровки.
Вместо него появляется меню с какими то цифрами.

Как это можно исправить?

14. chmv 07.04.15 17:42 Сейчас в теме
15. maloy-v 25.09.15 10:04 Сейчас в теме
Управляемые формы - это заворот мозгофф...
Видимо, я древний как мамонт, но тока дошли руки до этого дела.
Конечно, гениальный финт, с формированием отчёта без открытия формы!

Где-то на Мисте я подсмотрел такой вариант:

получили значение расшифровки и решили, что будем открывать другой отчёт:
...................
ПараметрыОтчета = Новый Структура("КлючВарианта","РасчетыСПартнерами");
ПараметрыОтчета.Вставить("СформироватьПриОткрытии",Истина);

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

НастройкиРасчеты = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки;
ПользНастройкиРасчеты = ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
............................
бла бла бла..... устанавливаем пользовательские настройки компоновщика открываемого отчёта.
............................
ПараметрыОтчета.Вставить("ПользовательскиеНастройки",ПользНастройкиРасчеты);

ФормаОтчета.Открыть();

Вроде, работает, и можно не морочиться с ОтображениеСостояния.
Или я не замечаю каких-то косяков в таком подходе?
16. Ольга_tmp 65 29.05.16 04:12 Сейчас в теме
ФормаР = ПолучитьФорму("ВнешнийОтчет.МойОтчет.Форма", , , РасшифровываемоеЗначение);
ОтчетОбъект = ДанныеФормыВЗначение(ФормаР.Отчет, Тип(""ВнешнийОтчетОбъект.МойОтчет""))

во второй строке ошибка "Несоответствие типов (параметр номер '2')"

Работает такой вариант: ОтчетОбъект = ДанныеФормыВЗначение(ФормаР.Отчет, ТипЗнч(РеквизитФормыВЗначение("Отчет")));
17. kotlovD 80 05.09.17 08:33 Сейчас в теме
18. akim2040 26 22.05.18 07:58 Сейчас в теме
Может кто скинуть простой пример расшифровки для внешнего отчета. Когда расшифровывается одна вложенная схема другой? Соответственно для каждой схемы настроен свой вариант отчета.
21. platonov.e 122 13.08.21 19:02 Сейчас в теме
Спасибо за статью!
А что делать, если нужно оставить стандартную расшифровку, но у меня асинхронный вызов?
22. akim2040 26 22.08.21 14:25 Сейчас в теме
Коллеги, подскжите что не так делаю.
На УФ ловлю ошибку Переменная не определена (ДанныеРасшифровки) в функции ПолучитьРасшифровкуНаСервере
Оставьте свое сообщение

См. также

Шаблон отчета на СКД (обычные формы) Промо

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Улучшенный шаблон отчёта СКД, реализованный на обычных формах. Лаконичный и функциональный, весь необходимый минимум для управления отчётом вынесен на форму отчёта, что избавляет рядовых пользователей от необходимости лезть внутрь настроек отчёта. Форма сделана гибкой и позволяет легко себя адаптировать под Ваши потребности. Ряд элементов формы сделан сворачиваемыми и растягиваемыми.

2 стартмани

14.02.2022    3139    7    Eugen-S    3    

Добавление нумерации колонок СКД одной процедурой

СКД v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Была цель добавить номера колонок в имеющийся отчет в СКД. Добавив эту функцию в код СКД, можно это сделать без проблем. Нумерация проводится программно и проставляется. Полезна будет для разработчиков.

1 стартмани

16.06.2022    793    0    user700035_6550355    3    

Таблица умножения, деления на СКД, управляемые формы (пример тестового задания)

Подготовка к аттестации СКД v8 Абонемент ($m)

Пример тестового задания и его реализации. Протестировано на версии платформы 8.3.18.1289.

1 стартмани

30.05.2022    1489    5    Johnson1987    13    

Вывод изображений штрихкодов на СКД

СКД v8::СКД 8.3.14 1cv8.cf Россия Абонемент ($m)

Расширение и отчет для вывода изображений штрихкодов номенклатуры в СКД. Может быть использована как заготовка для создания собственного отчета.

1 стартмани

27.04.2022    1217    2    SergeyPZU    1    

СКД. Использование встроенного макета, разделителя страниц Промо

СКД v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

31.03.2017    21071    20    Vin_Tik    0    

Отборы СКД на форме УФ

СКД v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Создание отборов из СКД для таблиц значений.

1 стартмани

22.04.2022    2416    3    Chinga050    4    

Редактирование данных в ячейках СКД (простая реализация)

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

На примере справочника "Номенклатура" рассмотрим, как в отчёте можно редактировать его реквизиты, и изменения мгновенно будут записываться в элемент справочника.

1 стартмани

11.03.2022    4469    5    Flashill    19    

Срез последних N записей, пример на СКД

Запросы СКД v8 v8::УФ 1cv8.cf Абонемент ($m)

Пример получения в СКД последних N записей, т.е. например, получить последние 3 записи по каждой категории.

1 стартмани

09.03.2022    2131    3    user-z99999    9    

Редактирование данных прямо в отчете СКД (как в Excel). Теперь с пересчетом итогов! Промо

СКД v8::СКД 1cv8.cf Абонемент ($m)

Вам не подходит обычная форма ввода данных Клиент хочет прямо в отчете изменять цифры Тогда этот шаблон поможет вам быстро добавить в ваш отчет СКД механизм редактирования данных

2 стартмани

21.11.2012    50179    664    Visitizer    52    

Расчет нарастающего итога, дельты и другие варианты в СКД

СКД v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Пример получения в СКД значений: нарастающий итог, дельта, среднее значение, отклонение и т.д.

1 стартмани

07.02.2022    2192    3    user-z99999    0    

Отчет "Документы "Реализации" на каждый день" когда была реализация

СКД v8 КА2 Россия Абонемент ($m)

Пример отчета показывает, как получить какой либо документ на каждую дату в периоде. Если с остатками все более-менее понятно, их можно получить на День и потом связать, то чтобы то же самое проделать с датой документа, требуется привести ее к какому-то единому формату (к началу дня, например).

1 стартмани

27.08.2021    1836    0    Shvapsss    2    

Программное формирование отчетов в БП 3.0 на примере оборотно-сальдовой ведомости по счету

Адаптация типовых решений СКД v8 v8::БУ v8::СКД БП3.0 Россия БУ Абонемент ($m)

Порой возникает задача получить программно результат отчета на основе СКД в виде табличного документа. В данной статье будет описан один из вариантов реализации данной задачи.

1 стартмани

14.07.2021    5067    19    arman1997    1    

Авторегистрация обработок заполнения табличных частей и внешних печатных форм в информационной базе + Видео-пример использования шаблона - создание внешней печатной формы самостоятельно + Универсальный отчет СКД (набор отчетов в одном с группировками уров Промо

СКД v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Если Вы станете использовать в Ваших разработках нижеприведенную методику, тогда Вам больше никогда не придется тратить свое время на объяснение пользователю, КАК ему зарегистрировать Вашу разработку в базе (пользователю достаточно только открыть её или перетащить драг-энд-дропом в 1С:Предприятие). И вообще, на мой взгляд данная методика является примером хорошего тона отношений разработчик-клиент

1 стартмани

03.03.2010    37000    443    Borisych    25    

Отчет по расписаниям (пример)

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Пример построения отчета по нескольким расписаниям.

1 стартмани

18.05.2021    5843    0    echo77    4    

Отчет с настройкой роли поля СКД со свойством период

СКД v8 v8::СКД Платформа 1C v8.2 1cv8.cf УУ Абонемент ($m)

Отчёт демонстрирует правильную настройку роли СКД со свойством «Период», по которой рассчитывается остаток. Этот отчет тестировался на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Может работать на любой конфигурации, если имеется регистр накопления «ТоварыНаСкладах».

2 стартмани

01.04.2021    4426    4    softmaker    0    

Примеры использования функций СКД Массив (Array) и СоединитьСтроки (JoinStrings) в отчётах 1С 8

СКД v8::СКД Платформа 1C v8.2 1cv8.cf Казахстан БУ Абонемент ($m)

Здесь приведено два отчёта, в которых использованы функции СКД Массив (Array) и СоединитьСтроки (JoinStrings). Отчет по ГТД и отчет по продаже номенклатуры, оба тестировались на конфигурации Управление торговым предприятием (УТП) для Казахстана, редакции 2.0.19.2. Также добавлена электронная книга, в которой собраны знания по основам СКД, которые я получил, во время работы и изучения системы компоновки данных.

5 стартмани

15.03.2021    9511    32    softmaker    0    

Использование характеристик в СКД Промо

СКД v8::СКД 1cv8.cf Россия Абонемент ($m)

В конструкторе запросов, когда он вызывается из формы настройки источника данных, для схемы компоновки данных. Есть закладка "характеристики", использование которой не вполне ясно описано в документации. В этой статье я постараюсь объяснить, как и для чего используются характеристики в СКД.

1 стартмани

16.09.2011    71845    736    WaterSmith    80    

Расшифровка СКД. Фильтр отчета по диапазону чисел. Переопределение обработки расшифровки. Не модальный режим

СКД v8::УФ v8::СКД 8.3.14 1cv8.cf Абонемент ($m)

Создание дополнительного пункта меню в отчете на СКД, который позволяет установить отбор (отфильтровать) колонки отчета в выбранном диапазоне. Программная работа с отборами СКД, переопределение обработки расшифровки, перерисовка элементов пользовательских настроек. Не модальный режим работы.

1 стартмани

08.02.2021    6431    2    denmon88    1    

Простой пример отчета на СКД. Программное формирование, расшифровка, работа с параметрами и отборами

СКД v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Делал внешний отчет для Документооборота, очень долго собирал примеры, как сделать его максимально простым в разработке.

1 стартмани

15.10.2020    8751    11    Stivens    10    

Шесть стандартных задач, которые должен уметь решить 1сник. Задача 1 из 6

СКД v8 1cv8.cf Россия Абонемент ($m)

Задача 1. Хитрости СКД

2 стартмани

12.08.2020    3645    6    tango    13    

Повторение шапки отчета в начале каждого листа при печати (СКД) + вывод колонтитулов. Промо

СКД v8::СКД 1cv8.cf Россия Абонемент ($m)

Повторение шапки отчета в начале каждого печатного листа при использовании системы компоновки данных (СКД). Пример выводов колонтитулов.

1 стартмани

21.08.2012    63993    348    nalivai-chai    30    

Быстрое формирование наборов данных Объект схемы СКД

СКД v8::СКД 1cv8.cf Абонемент ($m)

При разработке отчета, использующего наборы данных Объект, зачастую много времени занимает описание самих наборов в схеме СКД. Если таких наборов несколько или количество полей в них достаточно велико, то задача усложняется. В публикации приводится способ сокращения подобных трудозатрат.

1 стартмани

05.07.2020    10120    8    Алексей Воробьев    16    

Задачка: Список всех документов за заданный период, используя СКД

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Вывести все документы за заданный период, используя СКД.

2 стартмани

11.03.2020    8125    20    MaxxiMiliSan    11    

Получение курса валюты за период с помощью СКД

СКД v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Иногда приходится сталкиваться с ситуацией, когда для решения той или иной задачи требуется знать курс валюты на каждый день заданного периода. Есть несколько вариантов решений данной проблемы, один из которых хочу предложить.

1 стартмани

04.02.2020    6459    1    KawaNoNeko    2    

Шаблон СКД (Универсальный отчет) Промо

СКД v8 1cv8.cf Россия Абонемент ($m)

Может кому понадобится. Нигде не нашел. Шаблон СКД (Универсальный отчет).

1 стартмани

11.05.2012    14967    274    tivanitsky    8    

Проверка несуществующих полей в настройках СКД

СКД v8 v8::СКД ERP2 УТ11 КА2 Абонемент ($m)

Обработка находит все поля настроек СКД, которые утратили свою актуальность Подходит для УТ 11, ERP, КА 2.

1 стартмани

20.06.2019    8630    4    MuI_I_Ika    2    

Модуль, реализующий хранение настроек отчетов СКД в типовом регистре "Сохраненные настройки"

СКД v8 v8::СКД КА1 БП2.0 ЗУП2.5 УТ10 БП1.6 Абонемент ($m)

Модуль, обеспечивающий хранение настроек отчетов на СКД в типовом регистре "Сохраненные настройки", присутствующем в конфигурациях УПП 1.2, 1.3, УТ 10.3, БП 2.0 и т.д.

1 стартмани

12.01.2019    10143    3    lunjio    0    

Передача набора данных типа Объект в отчет СКД

СКД v8 v8::УФ v8::СКД 1cv8.cf Россия Абонемент ($m)

Пример показывает, каким образом можно передать таблицу значений в отчет СКД (в набор данных объект). Пример работает как на обычных, так и на управляемых формах.

1 стартмани

12.11.2018    45682    11    evgen7938    4    

Примеры программной работы с СКД, а также программного создания управляемой формы

СКД v8 v8::УФ v8::СКД Абонемент ($m)

Примеры работы с СКД (четыре отчета с использованием сложных выражений), программного создания управляемой формы, а также программное формирование СКД в обработке и другие интересные механизмы на конфигурации "с нуля".

1 стартмани

12.08.2018    9953    29    MaxStrelok    0    

Полезные примеры составления схемы компоновки данных #2

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    47598    12    SITR-utyos    13    

Альтернатива ОтборуСтрок() с возможностями условий отборов СКД

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Типовой ОтборСтрок() использует только условия на равенство. Для таблицы формы, источником которой является "ДеревоЗначений" возможность отбора вообще отсутствует. Но есть возможность использовать всю широту возможностей отборов СКД.

1 стартмани

04.02.2018    10419    10    mszsuz    5    

Расшифровка табличного документа без расширения отчета

СКД v8::УФ v8::СКД 1cv8.cf Россия Абонемент ($m)

Быстрая расшифровка в табличном документе вне формы отчета

1 стартмани

29.05.2017    13352    8    smirnov.es    2    

Процессор вывода результата компоновки данных в JSON. И не только...

Внешние источники данных СКД v8 Абонемент ($m)

У каждого разработчика возникают задачи интеграции решений. Основная масса решений призвана вывести данные из «1С:Предприятие 8» в обусловленном формате. Разработчики используют огромную часть своих драгоценных ресурсов на реализацию определенной структуры вывода и необходимого формата. А что если...

1 стартмани

14.02.2017    30108    47    pbazeliuk    33    

Фильтр на таблицу значений системой компоновки данных

СКД v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Часто здесь проскакивает вопрос, а как установить фильтр на таблицу значений в управляемых формах. На самом деле, есть только один способ - залить старую таблицу значений в новую, отфильтровав или отсортировав по каким-либо правилам. Здесь реализуем на компоновке данных.

1 стартмани

14.12.2016    14907    2    igel9780    2    

Полезные процедуры по работе с СКД и табличными документами (часть 2)

СКД v8::СКД 1cv8.cf Абонемент ($m)

Еще несколько универсальных процедур

1 стартмани

27.09.2016    39309    37    json    19    

Полезные процедуры по работе с СКД и табличными документами (часть 1)

СКД v8::СКД 1cv8.cf Абонемент ($m)

На одном из последних проектов пришлось делать большое количество отчетов на СКД, в которых некоторые требования к оформлению нельзя было реализовать настройками схемы компоновки. В данной публикации приводятся несколько процедур, дополняющие возможности СКД, при решении таких задач

1 стартмани

03.09.2016    77966    109    json    25    

Расшифровки при программном формировании отчета на СКД

СКД v8 1cv8.cf Абонемент ($m)

Что делать, если не работают расшифровки при программном формировании отчета на СКД? Ответ ниже.

1 стартмани

11.08.2016    35498    25    kotlovD    14    

Использование методов глобального контекста в системе компоновки данных или недокументированные возможности СКД

СКД v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Прочитал на форуме, что СтрРазделить() и ТекущаяДата() работают в языке выражений системы компоновки данных. Почитал справку, там ничего не нашёл, поэтому не поверил. Посмотрел на практике – и правда работает… В данной статье попытался привести весь перечень методов, работающих в СКД, но не описанных в документации.

1 стартмани

05.08.2016    47512    28    klinval    41    

Сформировать дерево спецификаций быстро

СКД v8 v8::СКД УПП1 Абонемент ($m)

Обработка строит дерево состава изделия (структура изделия) с помощью СКД.

5 стартмани

30.07.2016    19704    44    SITR-utyos    7    

Разработка отчета СКД с использованием заглушек наборов данных

СКД v8 1cv8.cf Абонемент ($m)

Данный метод универсальный, понятный и простой в реализации. Я сам его постоянно использую при разработке сложных отчетов. Возможно, найдутся разработчики, которые также найдут его полезным для себя

1 стартмани

25.06.2016    21120    10    json    15    

Штамп времени в отчете, написанном с использованием СКД

СКД v8 Абонемент ($m)

Иногда возникает необходимость вывести на форму отчета, который написан на СКД, какие-либо данные: - пользователя, который сформировал отчет; - время, когда был запущен отчет на формирование и т.д.

2 стартмани

25.05.2016    14051    0    wowik    7    

СКД и внешние источники данных. Набор данных — объект

СКД v8 1cv8.cf Абонемент ($m)

О том, как можно работать с СКД, используя набор данных "Объект" (аналог временных таблиц, только передаваемых не напрямую в запрос, а в СКД)

1 стартмани

19.10.2015    75837    35    qapex    13    

Регламентное выполнение внешних обработок с параметрами (при помощи СКД) без изменения конфигурации (на примере УТ 11)

СКД v8::ОУ v8::СКД УТ11 Абонемент ($m)

Что, если нужно по расписанию делать что-то, зависящее от кучи параметров? Например, формировать индивидуальные прайсы и отправлять их (или сохранять на ftp), предварительно записав в excel. Технология будет полезна тем, кто уже имеет готовую сложную обработку, которую нужно заставить выполняться по расписанию.

1 стартмани

08.10.2015    24294    10    Ibrogim    19    

1С 8. Часть 2 - Управляемые формы. СКД: смена типа «набор данных – запрос» на «набор данных – объект» с сохранением полей

СКД v8 1cv8.cf Абонемент ($m)

Продолжение публикации "1С 8. СКД: смена типа «набор данных – запрос» на «набор данных – объект» с сохранением полей" http://infostart.ru/public/405762/ . Теперь напишем обработку под управляемые формы. Мы узнаем как в управляемой форме (под тонкий-клиент и web-клиент) реализовать: Открытие диалога выбора файла с выделением в асинхронную процедуру; Открытие диалога сохранения файла с выделением в асинхронную процедуру; Передача файла с клиента на сервер; Заполнение дерева значений (оперирование с ДанныеФормыДерево, ДанныеФормыКоллекцияЭлементовДерева, ДанныеФормыЭлементДерева); Передача файла с сервера на клиент.

1 стартмани

08.10.2015    16622    4    Luchik    3    

1С 8. СКД: смена типа «набор данных – запрос» на «набор данных – объект» с сохранением полей

СКД v8 1cv8.cf Абонемент ($m)

Возникла у меня необходимость в существующем отчете на СКД, имеющем набор данных - запрос, изменить тип набора данных с запроса на объект - таблицу значений. Но при смене типа набора данных слетели все поля, роли, ресурсы, оформление – в общем, все слетело. Погуглил и нашел способ – редактирование xml- файла схемы компоновки данных в текстовом редакторе. А почему бы не написать обработку для 1С, которая все сделает сама? Предлагаю вместе создать такую обработку. На примере обработки рассмотрим, как в 1С реализовать: Чтение и запись XML, использование СериализаторXDTO; Программное изменение схемы компоновки данных; Рекурсивное построение дерева значений; Изменение вида элемента управления (флажок вместо поля ввода); Работа с файлами диалог открытия, сохранения; Управление видимостью строк/колонок и отдельных ячеек дерева значений.

1 стартмани

06.10.2015    17075    6    Luchik    5