8.х программные настройки скд

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем gosn1ck, 5 июл 2010.

  1. TopicStarter Overlay
    gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    стоит задача программно открыть отчет из внешней обработки, сделать некоторый отбор и установить программно период в отчете прикрепленном. понедельние день тяжелый никак не могу вспомнить как это делается... проше помощи

    Вложения:

  2. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    что именно то не получается?:)
  3. TopicStarter Overlay
    gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    отрыть отчет я смог :) осталось задать отбор по складе задать период.
  4. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    а если передать в форму отчета параметры и уже в отчете обработать их?
  5. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Код:
    Компоновщик = ВнешнийОбъект.КомпоновщикНастроек;
    
    
    Из синтаксис-помощника
  6. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    о, точно...хотя я навскидку сказал
  7. TopicStarter Overlay
    gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    Код:
        СхемаКомпоновкиДанных  = Отчеты.Продажи.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    
    ДатаНач = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
    ДатаКон = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
    
    ДатаНач.Использование = Истина;
    ДатаКон.Использование = Истина;
    
    ДатаНач.Значение = НачалоДня(ТекущаяДата());
    ДатаКон.Значение = КонецДня(ТекущаяДата());
    
    ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
    ЭлементОтбора.ЛевоеЗначение  = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Продавец")).Поле;
    ЭлементОтбора.ПравоеЗначение = Продавец;
    
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки, Истина);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    
    ФормаОтчета = Отчеты.Продажи.ПолучитьФорму();
    
    ПроцессорВывода.УстановитьДокумент(ФормаОтчета.ЭлементыФормы.Результат);
    //ЭлементыФормы.Результат.Очистить();
    //ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);    
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    ФормаОтчета.Открыть();
    
    
    сделал так, но группировки меня не устраивают по умолчанию. подмигните куда копать :)
  8. TopicStarter Overlay
    gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    Код:
    	СхемаКомпоновкиДанных  = Отчеты.Продажи.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    
    ДатаНач = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
    ДатаКон = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
    
    Группировка = КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    Группировка.Использование = Истина;
    
    ПолеНоменклатура = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
    ПолеНоменклатура.Использование = Истина;
    ПолеНоменклатура.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
    
    ВыбранныеПоляНоменклатуры =  Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    ВыбранныеПоляНоменклатуры.Использование = Истина;
    
    ДатаНач.Использование = Истина;
    ДатаКон.Использование = Истина;
    
    ДатаНач.Значение = НачалоДня(ТекущаяДата()) - 86400;
    ДатаКон.Значение = КонецДня(ТекущаяДата()) - 86400;
    
    ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
    ЭлементОтбора.ЛевоеЗначение  = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Продавец")).Поле;
    ЭлементОтбора.ПравоеЗначение = Продавец;
    
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);//а в этой строке, тоже взятой из Хрусталевой я передаю кажется Намтсройку с незаполненными параметрами
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки, Истина);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    
    ФормаОтчета = Отчеты.Продажи.ПолучитьФорму();
    
    ПроцессорВывода.УстановитьДокумент(ФормаОтчета.ЭлементыФормы.Результат);
    //ЭлементыФормы.Результат.Очистить();
    //ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);	
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    ФормаОтчета.Открыть();
    
    сделал вот так, но результат не понятный. прикрепил картинку.

    Вложения:

    • sshot_1.png
      sshot_1.png
      Размер файла:
      28,9 КБ
      Просмотров:
      465
  9. kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.

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

    1. Как кодом изменить заголовок отчета? Не заголовок формы, а именно самого отчета?
    2. Как убрать или свернуть группировки? Дело в том, что я программно делаю отбор и параметры отбора отображаются в шапке отчета под заголовком. Хотелось бы скрыть эту информацию.
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    по поводу 2-го: на закладке настройки->другие настройки(в низу) есть флаги Заголовок, Выводить параметры данных и Выводить отбор.

    по поводу 1-го:
    Код:
    ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Title"));
    ЗначениеПараметра.Значение = "Название вашего отчета";
    ЗначениеПараметра.Использование = Истина;
    
  11. kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Еще одна проблемка возникла.

    Если заголовок отчета оказывается длинее правого края таблицы отчета, то при печати конец заголовка вылезающий справа обрезается (см. скрин) :unsure:

    Как отрегулировать в СКД или программно ширину макета, выводимого в отчет? Я НЕ имею в виду поля или колонтитулы. Речь идет именно об области макета.

    Вложения:

    • screen5.JPG
      screen5.JPG
      Размер файла:
      28,4 КБ
      Просмотров:
      178
  12. kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Единственное что смог придумать - это задать побольше минимальную ширину центральной колонки (в СКД, на закладке "Наборы данных" в поле "Оформление"), в результате вся таблица растянулась по ширине страницы. Благо эта колонка предназначена для ввода произвольной фразы, поэтому смотрится боле-менее презентабельно.
  13. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    А свой макет задать для заголовка пробовал?
  14. TopicStarter Overlay
    gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    а задать заголовок на закладке "другие настройки" не получается?
  15. kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    А как это сделать? Мне бы просто сделать шрифт помельче.

    Там то я задал общий заголовок. Но в отчете я сделал программный отбор. И это я отражаю в заголовке. Например: "Финансовый отчет за период с такого-то по такое-то число". То есть, в зависимости от выбранных пользователем параметров заголовок разный. Заголовок меняю программно. И все отлично. Только если он получается длинный и вылазит за правый край таблицы отчета, то при печати безжалостно обрезается по правому краю таблицы. :angry:
  16. TopicStarter Overlay
    gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    попробуйте макет в скд. заодно изучите что это такое =)
  17. kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Придется все области прописывать и выводить туда. На данный момент отчеты готовы и отвечают требованиям заказчика. Если появятся новые, тогда можно подумать о переделывании.
  18. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Зачем все области? Просто сделаешь свой макет для заголовка, остальное не трогаешь. И там выставляй шрифт и все что надо
  19. kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    То есть, я создаю новый макет, в нем задаю область "Заголовок" или "Title" или какая она должна быть? А остальные сами что ли подцепятся из СКД? Не очень понятно, можно какой-нибудь пример?
  20. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    В СКД есть закладка макет, там указываешь макет заголовка. Примера под рукой нет, посмотри в книжке Хрусталевой

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