Имя: Пароль:
1C
1С v8
Помогите с всё той же СКД
0 2version
 
19.02.13
20:51
Не смог я ничего путнего сделать и решил просто, раз не могу так изменить, то буду згружать СКД в ХМЛ и потом уже его оттуда загружать с таким запросом, как мне нужен. Все вроде норм, но СКД снова таки не поддается даже загрузки. Попробовал вот этот код:
************************************************************************
   КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
   СКД = Отчеты.Результат.ПолучитьМакет("Макет");
   ЧтениеХМЛ=Новый ЧтениеXML;
ЧтениеХМЛ.ОткрытьФайл("D:\Настройки_Отчета.XML");
рНастр=СериализаторXDTO.ПрочитатьXML(ЧтениеХМЛ);
//Попытка
Если рНастр<>Неопределено Тогда
КомпоновщикНастроек.ЗагрузитьНастройки(рНастр);
Сообщить("Выполнил1");
КонецЕсли;
ЧтениеХМЛ.Закрыть();

ЧтениеСхемы = Новый ЧтениеXML;
НовСинх = Новый СериализаторXDTO(ФабрикаXDTO);
ЧтениеСхемы.ОткрытьФайл("D:\СКД_Отчета.XML");
СКД = НовСинх.ПрочитатьXML(ЧтениеСхемы);
Сообщить("Выполнил2");
*********************************************************************
Там, где сообщить проверяю дошло ли до этой части. Понимаю что можно отладчиком, но такая привычка. Ошибок такой код не выдает, но и помогать не хочет. Скажите кто-нибудь, как мне бороться с этим. Можно пошагово или ссылкой на страницу книги, которую я уже не одну перечитал. Но ни один совет не помогает. У меня управляемая форма и отчет тоже управляемый, не основной. Основным пробовал, тот просто форму выдает.
Запись в файл СКД веду вот таким кодом:
**********************************************************************
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   СхемаКомпоновкиДанных =Отчеты.Результат.ПолучитьМакет("Макет");  
   ТекстЗапроса = СхемаКомпоновкиДанных.НаборыДанных[0].Запрос;
   Запрос = "
   |ВЫБРАТЬ
   |    Сотрудники.Имя,
   |    Сотрудники.Фамилия,
   |    Сотрудники.Отчество,
   |    Сотрудники.Должность,
   |    Сотрудники.Где_работает,
   |    Авто.Тип_обслуживания,
   |    Авто.Заезд
   |ИЗ
   |    Справочник.Сотрудники КАК Сотрудники,
   |    Справочник.Авто КАК Авто,
   |    Справочник.Бренды Как Бренды";
   
   ТекстрЗапроса2 = СтрЗаменить(ТекстЗапроса,ТекстЗапроса,Запрос);
   СхемаКомпоновкиДанных.НаборыДанных[0].Запрос = ТекстрЗапроса2;
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   ЗаписьXML = Новый ЗаписьXML;
   ЗаписьXML.ОткрытьФайл("D:\СКД_отчета.xml");  СериализаторXDTO.ЗаписатьXML(ЗаписьXML, СхемаКомпоновкиДанных);
   ЗаписьXML.Закрыть();
   ЗаписьXML.ОткрытьФайл("D:\Настройки_отчета.xml");  СериализаторXDTO.ЗаписатьXML(ЗаписьXML, КомпоновщикНастроек.ПолучитьНастройки());
   ЗаписьXML.Закрыть();
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки, );
   КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию) ;
   Сообщить(Отчеты.Результат.ПолучитьМакет("Макет").НаборыДанных[0].Запрос);
**********************************************************************
Модет быть чтото лишнее в нем, но он писался по мере добавления "новых" идей.
В общем посоветуйте, пожалуйста, или покажите как вы делали.
1 wade25
 
19.02.13
20:53
Видел на инфостарте, обработку, преобразующуй скд чисто в код. Только параметры добавить.
2 2version
 
19.02.13
20:54
Всё это происходит на сервере, клиент как я понял не для этого предназначен.
Вызываю форму вот таким вот кодом:
**************************************************************
Тест();    
Форма = ПолучитьФорму("Отчет.Результат.Форма.ФормаОтчета");
Форма.Открыть();
*************************************************************
После нажимаю на кнопку: "Сформировать отчет". Вызов формы происходит уже на клиенте.
3 2version
 
19.02.13
20:55
На инфостарте требуют за ту штуку де мало денег.
4 2version
 
19.02.13
20:57
Вся соль заключается только в том, чтоб изменить запрос в СКД. Поля там меняться даже не будут, только запрос будет корректировать как вывести. Уже чуть ли не ногой чешу ухо, да чтото ничего не выходит совсем.
5 mistеr
 
19.02.13
21:14
Ничего не понял, что хочешь добиться.
6 2version
 
19.02.13
21:29
Ну смотри, у меня есть отчет, в нем стоит запрос. Отчет сформирован на базе этого запроса. Но нужно чтобы отчет менялся. Т.е. если я чекбокс в форме убрал, то перестроился запрос и отчет сменился, не сразу конечно, но по нажатию кнопки "СформироватьОтчет"
7 2version
 
19.02.13
21:41
8 2version
 
19.02.13
21:42
Сори, я не знаю как картинки грузить сюда.
9 2version
 
19.02.13
21:44
А есть общая форма, в ней будет пользователь выбирать что ему делать, после будет формироваться запрос и передаваться на отчет. Отчет будет меняться. После показываться пользователю. Но запрос отчета не хочет меняться, чтоб я над ним не делал. Только констурктор или ручная(через конструктор по нажатию кнопочки) загрузка меняет запрос. Так, как писал ранее GANR в одном из своих постов. Тогда загружается СКД и запрос меняется, но как это сделать кодом (загрузку этого файла)?
10 mistеr
 
19.02.13
21:58
(9) Прежде чем идти по сложному пути, попробуй простые.
Вариантов запросов сколько? Не бесконечное число, верно? Пользователь же не руками их вводит. Забей все варианты в макет заранее. Если запросы с похожей структурой, делай через объединение. Если совсем разные, через наборы данных. Затем есть варианты отчетов, для удобного переключения. В типовых так и сделано, не игнорируй best practices.
11 2version
 
19.02.13
22:04
Та в том то и дело, что почти что руками. Тут варианты не предугадаешь, что он там выберет.
[URL=http://piccy.info/][IMG]http://i.piccy.info/i7/dcc556f5e7b06979e9ffcf0963061cea/4-55-2077/15806272/1.jpg[/IMG][/URL][URL=http://i.piccy.info/a3c/2013-02-19-18-01/i7-4157633/497x622-r][IMG]http://i.piccy.info/a3/2013-02-19-18-01/i7-4157633/497x622-r/i.gif[/IMG][/URL]

Еще раз прошу прощения за картинку. Вот так вот пользователь будет набирать свой запрос. Сколько ж вариантов мне нужно кинуть? Вообще по иде, тот путь что я выбрал должен был быть вполне логичен и простой. Но то ли из за моего не понимания сути, то ли изза закрытости 1С я не могу достучаться на такую простую функцию.
12 2version
 
19.02.13
22:05
http://i.piccy.info/i7/dcc556f5e7b06979e9ffcf0963061cea/4-55-2077/15806272/1.jpg
Эта картинка лучше работает.
13 2version
 
19.02.13
22:07
Если есть тут что подсказать, всегда рад выслушать и применить. Вообще я хотел это все в табличную форму выводить, набрал запрос, она не выводится. Я так понял это изза управляемого приложения. Не везет по полной короче. Засада (((
14 mistеr
 
19.02.13
22:10
(9) Прежде чем идти по сложному пути, попробуй простые.
Вариантов запросов сколько? Не бесконечное число, верно? Пользователь же не руками их вводит. Забей все варианты в макет заранее. Если запросы с похожей структурой, делай через объединение. Если совсем разные, через наборы данных. Затем есть варианты отчетов, для удобного переключения.

В типовых так и сделано, не игнорируй best practices.
15 2version
 
19.02.13
22:15
Ладно, спасибо и на этом. Не подскажешь, где хотяб можно почитать про эти отчеты и может быть ктото предлагает оптимальное решение. Уже голова кипит от них.
16 mistеr
 
19.02.13
22:16
Извиняюсь за двойной пост. Инет глюкнул, думал что не отправилось.

Если запрос произвольный, то смысл схемы компоновки теряется. Потому что настройки от старого запроса не подойдут к новому. Поля, параметры, макет, оформление - все может оказаться совершенно другим. Получается Консоль отчетов, видел наверное. Но вряд ли это то, что нужно пользователю. Поэтому предлагаю вернуться к постановке бизнес-задачи. Что нужно показать в отчете, и какого лешего пользователь должен руками вводить запрос.
17 2version
 
19.02.13
22:22
В отчете должны быть показаны некоторые поля: Тип(какой тип ремонта был проделан с машиной(3 галочки внизу формы, которую я скрином кинул)), бренд(марка машины, которая ремонтировалась), дата(дата ремонта, фио(фамилия имя и отчество человека, который проводил ремонт). На все это действует выборка.
Тип - выбирается из 3-х значений (галочки формы), бренд(выбирается из справочника бренды(константы не хотят), дата(из справочника авто) ФИО (из справочника сотрудники)
18 2version
 
19.02.13
22:24
И пользователь может вообще не задать некоторые данные или задать, вроде работает шаблон(поэтому я и писал, что поля меняться не будут), но запрос к этому шаблону кинуть не представляется для меня возможным, экземпляр СКД принимает и меняется в запросе, а сама СКД оставляет у себя запрос прежним.
19 2version
 
19.02.13
22:25
Консоль отчетов видел, хорошая штука, но это явно не то.
20 2version
 
19.02.13
22:31
Нужно, чтоб вот как в той форме последней пользоватеь натыкал галочек, цифорок, на основании этого будет генерироваться запрос, он должен передаться в отчет(СКД, как я думал раньше его возьмет), после отчет изменится и выведет все поля по этому запросу. На вид это простая выборка, но я уже угробил на неё кучу времени и ничего не получается. Вроде все просто, у СКД есть объект и там запрос. Его по идее необходимо переприсвоить. СКД глотает запрос но при запске формы и нажатии на кнопку (отчет (общие формы - ФОрмаЗапросов)) мне сообщение выводит старый запрос. Почему так не понимаю.
21 2version
 
19.02.13
22:33
При этом, как представляется. макет не изменится, изменится лишь вместимость отчета(строк станет либо меньше либо больше в зависимости от запроса). Но сам СКД не принимает запрос и передать я его туда не могу. Может быть я не так сделал с формой и необходимо было делать внешний отчет и форму в нем. Я уже запутался.
22 mistеr
 
19.02.13
22:36
(17) Все что есть на форме, это либо параметры к запросу, либо настройки (вкл/выкл полей в отчете). А сами данные-то откуда берутся, из одного регистра наверное? Так что не вижу тут кучи вариантов запроса. Вижу пока один, со всеми возможными отборами и полями.

Как обработать незаданные параметры и не учитывать их в запросе, тут куча тем есть, по одной в неделю, наверное.
23 2version
 
19.02.13
22:41
Либо я уже сильно устал, либо недопонял. Как мне передать запрос? Шаблон то останется, а вот запрос передать не могу. Подскажи уже пошагово чтоли, если я чего совсем не понимаю. Если б у меня запрос передавался, я б уже пытался б ибть по другому. а так абсолютно не передается запрос.
24 2version
 
19.02.13
22:45
Данные из одного регистра, это "тестовая" БД, поэтому так.
25 mistеr
 
19.02.13
22:48
Да дался тебе этот запрос! Я советую принципиально другой подход. Так составить запрос, чтобы его не приходилось модифицировать на лету. Все варианты учесть через параметры.

Заметь, именно так было задумано разработчиками СКД. Это не Дельфи, где полная свобода.
26 kiruha
 
19.02.13
22:54
(0)
http://infostart.ru/public/173317/
автоматически код создаст
ничего писать не надо
27 2version
 
19.02.13
22:56
kiruha, мб штука прикольная но очень дорогая.
mister, не делфи, к сожалению, и не С подобный язык. Может быть ты и прав с параметрами.
28 kiruha
 
19.02.13
22:59
(27)
Оставь адрес скину.
На инфостарте невозможно поставить бесплатное скачивание - искал час
29 2version
 
19.02.13
23:15
EvgeniiLit@mail.ru
30 2version
 
19.02.13
23:16
Спасибо если сбросишь.
31 kiruha
 
19.02.13
23:19
ушло
На http://1cskd.ru/
еще повесил - но там пока на модерации
32 2version
 
19.02.13
23:27
Классно, что на єтом форуме все хотят помочь. Спасибо всем кто взялся.
33 kiruha
 
19.02.13
23:29
Обработка формирует только код компоновки

чтобы вывести надо самому добавить несколько сттрочек
Например для выпод в Табл Зн с внешним набором ТЗ

КомпоновщикМакетаКомпоновкиДанных=Новый КомпоновщикМакетаКомпоновкиДанных ;
         МакетКомпоновки=КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных,НастройкиКомпоновкиДанных,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
         ПроцКомп=Новый ПроцессорКомпоновкиДанных ;
         ВнешниеНаборы=Новый Структура;
         ВнешниеНаборы.Вставить("ТЗ",ТЗ);
         ПроцКомп.Инициализировать(МакетКомпоновки,ВнешниеНаборы,ДанныеРасшифровки);
         ПроцКомпВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
         ТЗ2=ПроцКомпВывода.Вывести(ПроцКомп,Ложь);
34 GANR
 
20.02.13
00:45
(32) запости отчет на файловом хостинге и кинь ссылку в ветку