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

Тема в разделе "1C и всё что с ней связано", создана пользователем Skellar, 12 окт 2011.

  1. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Всем доброго времени суток. Такой вопрос возник - можно ли получить значения итогов (программно или еще как), которые СКД формирует автоматически.
     
  2. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    смотря что тебе нужно
     
  3. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Опиши задачу подробнее.
     
  4. Skellar

    Skellar Well-Known Member

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

    Вложения:

  5. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    А компоновка и вывод нескольких схем в один элемент управления у вас программный? Или несколько схем реализовано в одной схеме?
     
  6. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Да, программный, из модуля формы вывожу все схемы. (Сделал бы по-другому, но не знаю как в одной схеме реализовать несколько таблиц с разной структурой)
     
  7. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Тогда в процессе вывода каждой таблицы в переменную вписывай общие итоги по текущей схеме
     
  8. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Прошу прощения, а как это реализовать ?) Вывода у меня стандартный, вот такой:

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

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

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

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

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

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

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

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

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

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

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

    Allexei Well-Known Member

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

    Skellar Well-Known Member

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

    Darlock Well-Known Member
    1C Team

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

    Вложения:

  12. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Вот, да, пока не знаю как "взять" значение. За отчет спасибо, сейчас посмотрю.
     
  13. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Только начал смотреть ваш отчет, как я понимаю вы через расшифровку работаете с результатом и значениями?
     
  14. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    не совсем. в расшифровке - я в зависимости от типа открывают форму элемента/документа. Похожий принцип и у вас должен сработать. вы работаете с конкретным элементом результата компоновки. у вас есть индекс, есть набор, получите по индексу конкретное значение, конкретного набора и будет вам счастье.
     
  15. Skellar

    Skellar Well-Known Member

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

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

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

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

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Сделал примерно такой вариант:

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

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

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

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

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

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

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Расшифровка вызывается при "открытии" ячейки табличного документа. Смотрите внимательно в отладчике. Конкретнее - "МакетКомпоновки", если мне не изменяет память. В отладчике будет что-то типа дерева значений одного и того же типа (это группировки со значениями).
     
  18. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Вот оно что, спасибо. Тогда вариант с расшифровкой не пройдет - нужно чтобы из всех итогов собиралась общая сумма сразу при открытии отчета. Просто я думал, что есть какой-нибудь простой способ получить итоги по таблице, их сложить и куда-нибудь впихнуть.
     
  19. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
     
Загрузка...

Поделиться этой страницей