Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Схема компоновки данных или отчет вручную?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Vofka
Привет!

Кто как создает отчеты? И какой способ когда лучше использовать? 19000000.gif
Fynjy
Все зависит от того, что ты хочешь получить ...
Я если быстро - компоновку, если качественно - построитель, а точнее универсальный отчет ...
Компоновка хороша, но не все отчеты в компоновке можно нарисовать ...
Vofka
Ясно. Спасибо за ответ! smile.gif
Cnhtkjr
(спрашиваю здесь, что бы не плодить темы)


Подскажите пожалуйста, как сделать отбор по Контрагенту, к примеру, в схеме компоновки данных?

Как пытаюсь сделать я:

При формировании запроса, я задаю выбранной виртуальной таблице условие "Контрагент = &Контрагент"... но тут я столкнулся с тем, что не понял, как в таком случае задать параметр &Контрагент. Кода невидно. Где задавать параметры мне пока непонятно.

Подскажите пожалуйста, как же сделать отбор по Контрагенту, который задается пользователем через форму отчета.
Creaturka
параметр в режиме пользователя задается в форме настроек отчета Настройки-ПараметрыДанных (это при схеме компоновки в стандартном случае), код не нужен
Cnhtkjr
Цитата(Creaturka @ 17.05.10, 19:33) необходимо зарегистрироваться для просмотра ссылки
параметр в режиме пользователя задается в форме настроек отчета Настройки-ПараметрыДанных (это при схеме компоновки в стандартном случае), код не нужен



Спасибо, добрый человек! )
Приоткрыл глаза!
Но, к сожалению, проблема все-равно остается актуальной по той причине, что пользователь не должен сам выбирать контрагента - он должен подставляться в зависимости от пользователя.
Как тут быть?
logist
Цитата(Cnhtkjr @ 17.05.10, 19:51) необходимо зарегистрироваться для просмотра ссылки
Но, к сожалению, проблема все-равно остается актуальной по той причине, что пользователь не должен сам выбирать контрагента - он должен подставляться в зависимости от пользователя.
Как тут быть?

В настройках пользователя добавить настройку "Контрагент для отчетов" и подставлять ее.

Хотя мне трудно понять что же надо:
Цитата(Cnhtkjr @ 17.05.10, 18:40) необходимо зарегистрироваться для просмотра ссылки
Подскажите пожалуйста, как же сделать отбор по Контрагенту, который задается пользователем через форму отчета.

Цитата(Cnhtkjr @ 17.05.10, 19:51) необходимо зарегистрироваться для просмотра ссылки
пользователь не должен сам выбирать контрагента - он должен подставляться в зависимости от пользователя.
Creaturka
можно попробовать так:
а).в режиме конфигуратора в схеме компоновки напротив нужного параметра ставим флажок "ограничение доступности"
б).изменяем процедуру формирования отчета в форме, вместо стандартной вставляем что-то типа
Процедура СформироватьОтчет()
КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки=КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, ОтчетОбъект.КомпоновщикНастроек.Настройки);
//в этот момент подставляем нужный параметр
МакетКомпоновки.ЗначенияПараметров.Контрагент.Значение=НужныйКонтрагент;
ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,,Истина);
ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.ОтображатьПроцентВывода=Истина;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.ТабДок);
ПроцессорВывода.НачатьВывод();
Пока Истина Цикл
    СледЭлемент=ПроцессорКомпоновки.Следующий();
    Если СледЭлемент=Неопределено Тогда
        Прервать;
    Иначе
        ПроцессорВывода.ВывестиЭлемент(СледЭлемент);
    КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
Cnhtkjr
Цитата(logist @ 17.05.10, 20:03) необходимо зарегистрироваться для просмотра ссылки
В настройках пользователя добавить настройку "Контрагент для отчетов" и подставлять ее.

не совсем понял, но посмотрю и попробую понять. спасибо.


Цитата(logist @ 17.05.10, 20:03) необходимо зарегистрироваться для просмотра ссылки
Хотя мне трудно понять что же надо:


Извините )) Это я уже просто думаю одно - говорю другое. Запарился немного.



Цитата(Creaturka @ 17.05.10, 20:08) необходимо зарегистрироваться для просмотра ссылки
можно попробовать так:
а).в режиме конфигуратора в схеме компоновки напротив нужного параметра ставим флажок "ограничение доступности"
б).изменяем процедуру формирования отчета в форме, вместо стандартной вставляем что-то типа


Спасибо! Кажется главный смысл уловил, утром опробую. Спасибо!
Cnhtkjr
2Creaturka

Дай Бог вам здоровья и счастья!!!
Нет слов, что бы выразить как я счастлив! И как вы мне помогли!
Работает! Прелесть как работает!
Вот только если я в отчете задал параметр, то потом даже если я его меняю, все-равно отчет выводится по старому параметру. Буду думать почему так, но это уже не жизненно важно.
(а нет, если меняю параметр, то добавляется просто новая таблица с заданным параметром, не затирая старую. Тоже интересно)) В общем вектор получил и это главное)
Creaturka
перед выводом результата отчета очистить поле табличного документа
Cnhtkjr
Люди. Подскажите такую вещь:
можно ли как-то сделать так, что бы пользователь мог сохранять и загружать свои настройки компоновки данных?
Если пользователь сможет сохранять где-то свои настройки отчетов и потом загружать себе по надобности нужный, то отпадет львиная доля работы.
Cnhtkjr
Процедура ДействияФормыСохранить(Кнопка)
    Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки;
    НовыйCXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    Путь = СокрЛП("d:\настройки\");
    Запись = Новый ЗаписьXML;
    
    Запись.ОткрытьФайл(Путь + "\config.xml");
    Запись.ЗаписатьОбъявлениеXML();
    
    НовыйCXDTO.ЗаписатьXML(Запись, Настройки, НазначениеТипаXML.Явное, ФормаXML.Элемент);
    Запись.Закрыть();
КонецПроцедуры

Процедура ДействияФормызагрузить(Кнопка)
    
    Чтение = Новый ЧтениеXML;
    НовыйCXDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    Путь = СокрЛП("d:\настройки\");
    
    Чтение.ОткрытьФайл(Путь + "\config.xml");
    
    Настройки = НовыйCXDTO.ПрочитатьXML(Чтение);
    
    ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    
КонецПроцедуры



вот мой вариант. Работает, не спорю.
Но может есть другие варианты? можно ил использовать регистры сведений?
И сейчас думаю как реализовать возможность сохранения множества профилей.
Fynjy
В типовых это регистром сведений и сделано ... Посмотри любой отчет ...
Lefer
Что касается компоновки данных и вообще механизмов компоновки в восьмерке. На мой взгляд, это отличные механизмы для формирования отчетов. Гибкий, многофункциональный...НО!

1. Неудобен тем, что пока разберёшься как править отчеты на нем - сойдешь с ума. Но делать нечего...80% отчетов в типовых решениях написаны на нем. Без пива и Хрусталёвой не поддается пониманию)

2. Для тех, кто начинает заниматься 1С программированием, на мой взгляд, этот механизм можно осваивать в последнюю очередь, так как написание отчетов руками - начиная от формы и заканчивая макетом - полезный тяжелый труд.

Лично я пишу руками...как-то интересней.
Creaturka
а чем не устраивают стандартные кнопки "Сохранить\восстановить значения"?(добавляются на панель по дефолту если речь идет о форме отчета). делают именно то что заказывали без РС и привязаны к текущему пользователю
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.