• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

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

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

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

Получение Значения Итога В Скд

  • Автор темы Skellar
  • Дата начала
S

Skellar

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

Skellar

К примеру, у меня есть отчет(скрин), который собран из нескольких схем компановки. Мне нужно добавить строку с итогом по всем таблицам, то есть сумму итогов всех схем - Итого Запасы + Итого Деб задолженность. Значение поля "Итого" скд формирует автоматически, так вот, можно ли получить значение этого поля? Идеальный вариант - получить его программно из самих таблиц и подставить в новую таблицу.
 

Вложения

  • Картинка_баланс.JPG
    Картинка_баланс.JPG
    77,7 КБ · Просмотры: 350
D

Darlock

А компоновка и вывод нескольких схем в один элемент управления у вас программный? Или несколько схем реализовано в одной схеме?
 
S

Skellar

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

Darlock

Тогда в процессе вывода каждой таблицы в переменную вписывай общие итоги по текущей схеме
 
S

Skellar

Прошу прощения, а как это реализовать ?) Вывода у меня стандартный, вот такой:

Код:
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

Настройки = ДополнительнаяСхемаКомпоновки.НастройкиПоУмолчанию;

КомпоновщикНАстроек.ЗагрузитьНастройки(Настройки);

УстановитьНастройки();

МакетКомпоновки = КомпоновщикМакета.Выполнить(ДополнительнаяСхемаКомпоновки,Настройки);

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

ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);

ДокументРезультат = ЭлементыФормы.Результат;

ПроцессорВывода= Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
 
A

Allexei

Проще всего будет как сказал Darlock перед выводом сделать итоги по двум таблицам а потом вывести этот итог в 3-ю. Можно "извратится"добавить в каждую из этих таблиц колонку "Итого" (можно любое другое имя), для каждой строки внести одно и то же значение, сделать группировку по колонке Итого с суммированием Суммы на начало и Суммы на конец, потом сделать объединение по общему поле колонки итого с суммированием или вычитанием и вывести все это дело на печать :rolleyes:
 
S

Skellar

А где эти итоги делать? В запросе? Если под Итогом вы подразумеваете поле с суммой по всем строкам, то тут кроется корень проблемы, на моем скрине выше сумма итога на КОНЕЦ по последним 3м строкам равна 450 тысяч с чем-то, и это в разрезе субконто. А если получать значение итога в запросе без такого разреза, то из итоговой суммы пропадает строка где начальная и конечная сумма равны и результат = 445 тыщ. Поэтому вместо поисков как переделать запрос, я хотел взять годовое число из таблицы.
 
D

Darlock

Так и возьми его. Не надо править запрос. Скомпоновал, но перед выводом прочитай первую строку результата компоновки и получишь общие итоги по таблице в целом. А потом выводи на печать. Мне кажется или в коде не хватает "СкомпоноватьРезультат" с двумя параметрами? Во вложении мой отчет из нескольких схем. и различными манипуляциями с результатом
 

Вложения

  • Отчет_BSC.rar
    65,6 КБ · Просмотры: 182
S

Skellar

Вот, да, пока не знаю как "взять" значение. За отчет спасибо, сейчас посмотрю.
 
S

Skellar

Только начал смотреть ваш отчет, как я понимаю вы через расшифровку работаете с результатом и значениями?
 
D

Darlock

не совсем. в расшифровке - я в зависимости от типа открывают форму элемента/документа. Похожий принцип и у вас должен сработать. вы работаете с конкретным элементом результата компоновки. у вас есть индекс, есть набор, получите по индексу конкретное значение, конкретного набора и будет вам счастье.
 
S

Skellar

Сделал вот так:
Код:
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
...	
МакетКомпоновки = КомпоновщикМакета.Выполнить(ДополнительнаяСхемаКомпоновки,Настройки,ДанныеРасшифровки);
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
...

СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки); 

ЭлементРасшифровкиДанных = ДанныеРасшифровки.Элементы[0];

ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0];
И начал перебирать по индексам элементы данных расшифровки. Не получилось найти ни одно числовое значение, итоги тоже не понял как выразить, что я делаю не так?
 
S

Skellar

Сделал примерно такой вариант:

Код:
Обл = ДокументРезультат.НайтиТекст("Итого")	;

Если Обл<>неопределено и ДополнительнаяСхемаКомпоновки<>"СхемаВнеоборотныеАктивы" Тогда

CтрокаЧтения1 = Обл.Низ;
СтрокаЧтения2 = Обл.Право;

r = "R"+формат(CтрокаЧтения1,"ЧГ=");
c = "C"+формат(СтрокаЧтения2+1,"ЧГ=");

СуммаНаНачало = СуммаНаНачало + Число(ДокументРезультат.Область(r+c).Текст); 

КонецЕсли;
Но все равно интересно, как через расшифровку можно это реализовать.
 
D

Darlock

Расшифровка вызывается при "открытии" ячейки табличного документа. Смотрите внимательно в отладчике. Конкретнее - "МакетКомпоновки", если мне не изменяет память. В отладчике будет что-то типа дерева значений одного и того же типа (это группировки со значениями).
 
S

Skellar

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!