Имя: Пароль:
1C
1С v8
8.2 Внешняя ОБРАБОТКА. Вывод СКД в Табличный документ.
,
0 totparen
 
15.08.11
10:23
Ребята, помогите пожалуйста написать функцию возврата табличного документа на основании СКД. Незнама с чего начать. УТ 11.
1 Wobland
 
15.08.11
10:25
намекаю:
   ДокРезультат=ЭлементыФормы.Результат;
   ДокРезультат.Очистить();
   ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокРезультат);
2 totparen
 
15.08.11
10:28
А как же "СКД = ПолучитьМакет("СКД");"?


и ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент - не для тонкого клиента.
3 Defender aka LINN
 
15.08.11
10:29
(2) Разрешаю сделать это на сервере.
4 Wobland
 
15.08.11
10:30
ну у меня кода чуть больше, чем я привёл ;)
ну делай на сервере, возвращай ТабДок. ТабДок клиент понимает?
5 totparen
 
15.08.11
10:39
Ребята, чё прикалываетесь?! Нифига я не одупляю не Клиент-Серверные кода, не компоновку. Дайте мне какой-нибдуь кодище в тему, я уж его сам по косточкам разберу.
6 Wobland
 
15.08.11
10:45
намекаю:
   ДокРезультат=Новый ТабличныйДокумент;
   ДокРезультат.Очистить();
   ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокРезультат);
   Возврат ДокРезультат;
это на сервере
7 Wobland
 
15.08.11
10:49
>функцию возврата табличного документа на основании СКД
а если у тебя на форму уже выводится отчёт, то ЭлементыФормы.ТвоёПолеТабДока будет содержать то, что надо
8 Wobland
 
15.08.11
10:49
Элементы.ТвоёПолеТабДока в 8.2, да?
9 totparen
 
15.08.11
10:50
(6) Я просто не пойму, как в этом коде указать мою СКД. Это же не Отчет, где можно установить основную СКД, а Обработка.
10 Нуф-Нуф
 
15.08.11
10:53
http://1cskd.ru/
здесь найдешь все что тебе нужно
11 totparen
 
15.08.11
10:57
(10) да, отличный сайт. Давно с ним знаком.
12 totparen
 
15.08.11
11:01
Вот только мне бы это всё под управляемое приложение...
13 Wobland
 
15.08.11
11:06
(12) 1006 руб.
14 totparen
 
15.08.11
13:53
Среагировал тип этого (пользуйтесь люди, мне не жалко!)

функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати)
   Результат = Новый ТабличныйДокумент;
   
   // Схема компоновки данных
   СхемаКомпоновкиДанных = ПолучитьМакет("СКД");
   
   // Загрузка настроек
   КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных;
   КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
   
   // Установка параметров данных
   КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Ссылка", МассивОбъектов[0]);
   
   // Компоновка макета
   КомпоновщикМакетаКомпоновкиДанных = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновкиДанных = КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки());//,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
   
   // Инициализация процессора компоновки
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
   
   ПроцессорВывода = новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

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

   ПроцессорВывода.НачатьВывод();

   Пока Истина Цикл
       ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
       Если ЭлементРезультата= Неопределено Тогда
           Прервать;
       Иначе
           ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       КонецЕсли;
   КонецЦикла;

   ПроцессорВывода.ЗакончитьВывод();
   
   Возврат Результат;
КонецФункции
15 Wobland
 
15.08.11
13:57
(14) ну вот, стоило немного задуматься. а ты кодище, кодище..
16 detec
 
15.08.11
13:58
(0) Можно нескромный вопрос? Почему для СКД выбрана именно обработка, а не отчёт? В (14) приведен самый что ни есть типовой код.
17 totparen
 
15.08.11
14:13
(16) Насколько я понял, в УТ11 "Дополнительные обработки и отчеты" не хавает Внешний отчет, в качестве дополнительной печатной формы для документа... Или я что-то не то делал?
18 detec
 
15.08.11
14:55
(17) Непонятно, какой смысл делать на СКД печатную форму документа? В своей практике я только 1 раз сталкивался, что на СКД было выгодно сделать одну очень забористую ПФ. А так - чем не устраивает конструктор печати?

З.Ы. занимаюсь в основном разработкой отчётов на СКД.
19 totparen
 
15.08.11
15:51
(18) Стыдно признаться - никогда не работал с конструктором печати.

Что-то я не понял ваше ЗЫ - Вы либо один раз сталкивались с СКД, и в основном работаете с конструктором печати, либо в основном в СКД разрабатываете отчеты? Да и тендеция такова что все отчеты скоро будут разрабатываться на СКД.
20 Nutsiiam
 
15.08.11
16:17
(19) конструктор печати не использовал? :) Честно, если бы мне сказали когда про СКД только писюкнули в книжке переход от 8.0 к 8.1 - что СКД так захватит умы - не поверил бы!

Ну ты чтоб стыдно не было, возьми простой запрос какой-нибудь, да отчет обычный конструктором сделай - и посмотришь сразу, какой там код генериться - там все элементарно на столько, на сколько можно.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший