8.х СКД, командный интерфейс, параметры, режим управляемых форм...

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sevish, 22 май 2014.

  1. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    Начал изучать УФ (до этого всё делал в обычных формах).
    Создал простую конфигурацию с нуля, всё пока было ясно и понятно, но вот пришла пора создать отчёт. Создал. Добавил команду открытия в командный интерфейс. Всё отлично, супер, всё работает. Команду добавлял через подсистемы. То же всё стандартно и ничегоне менял. Но вот не задача :( мне надо, чтобы отчёт открылся и сразу сформировался на текущую (например) дату. Как? Я просто не нашел где в подсистеме можно прописать код при нажатии на кнопочку отчета в командном интерфейсе "Отчеты"? Отчет полностью написан на СКД, макет стандартный. И тут же возник второй вопрос: а где в конфигураторе "Рабочий стол", чтобы там разместить тот же отчёт, чтобы он формировался при входе в интерфейс? И вообще, самое забавное, а как настроить, чтобы при входе открывался рабочи стол сразу, а не какая-нибудь подсистема? В общем, если не сложно, помогите, либо дайте ссылку где всё расписано. Спасибо!
  2. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Есть книга - разработка управляемого интерфейса. Там как раз есть пример на выполнение отчета при открытии. Там нужно открывать форму с параметрами, насколько помню.
  3. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    Да, это я понимаю, но где и как вставить процедуру на обработку стандартного элемента открытия отчета на стандартном командном интерфейсе? :) Вот в чём проблема то :(
  4. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    В параметрах команды должно быть какое-то значение, которое должно передаваться в отчет и он будет формироваться.
  5. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    "СформироватьПриОткрытии", кажется так.
  6. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    "В параметрах команды должно быть какое-то значение, которое должно передаваться в отчет и он будет формироваться"
    Это стандартная команда. Беру в конфигураторе: "Общие-Подсистемы-Поступлние", открываю, нажимаю "Командный интерфейс". В разделе "ПанельДействий.Отчеты" добавляю мой отчет.
    Всё. Мне нужно, чтобы при нажатии на эту кнопочку отчёт формировался с уже установленными в зависимости от роли параметрами: "Дата" и "Вариант отчета".
    Сейчас посомтрю что такое "СформироватьПриОткрытии".
  7. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    В модуль отчёта вставил код:

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

    Не вызывается эта процедура при открытии отчёта :(
  8. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    Попробовал так в модуле отчёта:

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

    Ноль результата, не мняется дата :( Что-то я уже нелюблю этот СКД :)
  9. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    Всё, вот рабочий код:
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, мДанныеРасшифровки, СтандартнаяОбработка)
    НайстройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
    Для Каждого врЭлемент Из НайстройкиОтчета.ПараметрыДанных.Элементы Цикл
    Если (СокрЛП(врЭлемент.Параметр) = "Период") Тогда
    Настройка = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(врЭлемент.ИдентификаторПользовательскойНастройки);
    Настройка.Значение = НачалоДня(ТекущаяДата()) - 1;
    Настройка.Использование = Истина;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    Теперь помогите сделать так, чтобы отчёт сразу формировался при открытии! Я так и не нашёл куда встамить "СформироватьПриОткрытии"!
    --- Объединение сообщений, 22 май 2014 ---
    Блин, не пойдет такое решение :( Ибо каждый раз при формировании отчёта эти параметры заново устанавливаются, а надо только чтобы при первом запуске они срабтали :(
    Последнее редактирование: 22 май 2014
  10. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    Открыт ещё вопрос :( Как отследить открытие отчёта, у отчёта нет собственной формы, при открытии система генерирует свою стандартную. В двух подсистемах одна и та же кнопка открытия отчёта, как отследить из какой подсистемы был вызов? И как програмно изменить вариант отчёта?
  11. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Блин, ну почитайте в книге как формировать при открытии...
    По поводу отслеживания открытия. Для чего вам это нужно ???
  12. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    Почитал, сделал как в примере, не получается. Вставил процедуру ПриОткрытии(Отказ) в модуль отчёта - не вызывается она почему-то :( Моежт потому что в отчёте нет формы? А нужно мне это вот зачем:
    Есть 2 подсистемы: для менеджера и для бухгалтера. В обеих подсистемах добавлен этот отчёт стандартной командой через кнопку "Открыть командный интерфейс". Мне надо сделать так, чтобы при вызове из командного интерфейса Менеждера устанавливались одни наборы отборов и вариант отчёта, а из подсистемы для бухгалтера - другие. Сделать это можно как я понимаю в ПриОткрытии(Отказ). Но я добавлял эту процедуру в модуль отчёта с разными дерективами (наСервере, наКЛиенте) и вообще дез них - эта процедура вообще не вызывается при открытии отчёта. Писать свою форму отчёта нельзя, надо воспользоваться стандартно генерируемой.
  13. olegsemenov2005
    Offline

    olegsemenov2005 Новичок в 1С

    Регистрация:
    5 май 2014
    Сообщения:
    48
    Симпатии:
    3
    Баллы:
    4
    Пример
    В форме отчета

    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
        Параметры.СформироватьПриОткрытии = Истина;
    КонецПроцедуры
    
    
    Последнее редактирование: 23 май 2014

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