Имя: Пароль:
1C
1С v8
Можно ли загрузить ТЗ в СКД?
0 men47
 
17.07.13
16:16
Здравствуйте, как правильно загрузить ТаблицуЗначений в СКД?
Что-то не могу найти, находится только как выгрузить ТЗ из скд.

Нашел еще вот что...

http://1cskd.ru/2010/07/vneshnie-nabori-dannyh/

но во 1 я не уверен что правильно во 2 не получается инициализировать ТЗ....

Может кто подскажет как можно
1 hhhh
 
17.07.13
16:19
(0) в БП посмотри отчеты руководителю.
2 fisher
 
17.07.13
16:19
(0) Все верно. В СКД только так можно.
3 Maxus43
 
17.07.13
16:19
можно, набор данных Объект в СКД. у хрусталёвой есть конкретный пример
4 fisher
 
17.07.13
16:20
(0) Показывай, как инициализируешь.
5 men47
 
17.07.13
16:21
я пытался выгрузить ТЗ в структуру потом загрузить, в ТЗ 700 элементов, он вот грузит уже мин 10 и до сих пор на 25%
6 Maxus43
 
17.07.13
16:21
(5) жесть. в СКД надо сразу ТЗ пихать
7 men47
 
17.07.13
16:22
я создал набор данных Объект, в СКД
и пытаюсь теперь инициализировать

СтруктураДляВыгрузки = Новый Структура;
   СтруктураДляВыгрузки.Вставить("тз", Результат1);
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

   ПроцессорКомоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомоновкиДанных.Инициализировать(МакетКомпоновки, СтруктураДляВыгрузки);
   
   ТабДок.Очистить();
   
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ТабДок);
   ПроцессорВывода.Вывести(ПроцессорКомоновкиДанных);
8 men47
 
17.07.13
16:22
а если я пихаю ТЗ то при ПроцессорКомоновкиДанных.Инициализировать(МакетКомпоновки, СтруктураДляВыгрузки);

ошибку выдает
9 Maxus43
 
17.07.13
16:24
вот рабочий код:

   //КОМПАНОВКА ДАННЫХ
   ВнешнийНабор = Новый Структура("ТЗ", Результат);
   Схема = СхемаКомпоновкиДанных;
   Настройки = Схема.НастройкиПоУмолчанию;
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки);
   Процессор = Новый ПроцессорКомпоновкиДанных;
   Процессор.Инициализировать(МакетКомпоновки, ВнешнийНабор);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.ДокРезультат);
   ПроцессорВывода.Вывести(Процессор);
10 fisher
 
17.07.13
16:25
И обратить внимание на красненький овал в сабжевой ссылке.
11 men47
 
17.07.13
16:25
(9) сейчас попробую
12 men47
 
17.07.13
16:25
(10) ну так я написал что добавил в макете СКД
13 Бледно Золотистый
 
17.07.13
16:27
(12) А как эту ТЗ в самой схеме используешь?
14 fisher
 
17.07.13
16:29
(12) Вопрос в том, насколько внимательно ты это сделал. Я, например, когда-то долго тупил, присвоив имя ТЗ набору данных, а не вписав его в предназначенное для этого поле.
15 men47
 
17.07.13
16:30
(13) Я в Схеме создал набор данных-Объект
и в поле написал ТЗ
16 Бледно Золотистый
 
17.07.13
16:30
(15) Соединения есть?
17 men47
 
17.07.13
16:32
(16) нету, я запросом выбрал что мне нужно и пытаюсь в скд отправить
18 fisher
 
17.07.13
16:32
Ну и, наконец - текст сообщения об ошибке будет? Хоть мне и стыдно за свои телепатические способности.
19 men47
 
17.07.13
16:33
(18) а жаль не умеешь, хорошая штука=)) не смогу написать пробую (9) метод, но тоже пичально 3 минуты прошло и все еще 0%, щас тогда перезапущу и линкану ошибку
20 fisher
 
17.07.13
16:36
Сама загрузка 700 строк ТЗ не может длиться так долго.
Где-то в схеме еще косяки, скорее всего.
21 men47
 
17.07.13
16:36
вот ошибка сама

{Форма.ФормаОтчета.Форма(177)}: Ошибка при вызове метода контекста (Инициализировать)
   Процессор.Инициализировать(МакетКомпоновки, Результат);
по причине:
Несоответствие типов (параметр номер '2')

Когда я пытался пихать сразу ТЗ
22 men47
 
17.07.13
16:37
поэтому я пытался через структуру
23 fisher
 
17.07.13
16:39
Я вот понять не могу. Ты типы аргументов всегда подбором определяешь? В справку грешно заглядывать?
24 zladenuw
 
17.07.13
16:40
показывай схему. где то косяк
25 men47
 
17.07.13
16:45
Короче что нужно, нужно сделать отчет наподобии ОборотыСчета, и отдельно сделать отбор по 4 счетам с возможностью отбора по номенклатурной группе (23,25,26,29), но у 25 и 26 нету номенклатурной группы, и я решил сделать внешним запросом.


   
   ТабДок = ЭлементыФормы.Результат;
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   Настройки = КомпоновщикНастроек.ПолучитьНастройки();
   
   Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НачалоДня(НачалоПериода));
   Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КонецДня(КонецПериода));
   
   Если ОпределенныеСчета = Истина Тогда
       Массив = Новый Массив;
       Массив.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду(23));
       Массив.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду(29));
       Массив2 = Новый Массив;
       Массив2.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду(25));
       Массив2.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду(26));
       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |    ХозрасчетныйОбороты.Счет,
                      |    ХозрасчетныйОбороты.Субконто1,
                      |    ХозрасчетныйОбороты.Субконто2,
                      |    ХозрасчетныйОбороты.Субконто3,
                      |    ХозрасчетныйОбороты.КорСчет,
                      |    ХозрасчетныйОбороты.КорСубконто1,
                      |    ХозрасчетныйОбороты.КорСубконто2,
                      |    ХозрасчетныйОбороты.КорСубконто3,
                      |    ХозрасчетныйОбороты.Организация,
                      |    ХозрасчетныйОбороты.Валюта,
                      |    ХозрасчетныйОбороты.ВалютаКор,
                      |    ХозрасчетныйОбороты.Подразделение,
                      |    ХозрасчетныйОбороты.ПодразделениеКор,
                      |    ХозрасчетныйОбороты.СуммаОборотДт,
                      |    ХозрасчетныйОбороты.СуммаОборотКт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт
                      |ИЗ
                      |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&НоменклатурнаяГруппа), , ) КАК ХозрасчетныйОбороты
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&НоменклатурнаяГруппа)) КАК ХозрасчетныйОстаткиИОбороты
                      |        ПО ХозрасчетныйОстаткиИОбороты.Счет = ХозрасчетныйОбороты.Счет
                      |            И ХозрасчетныйОстаткиИОбороты.Субконто1 = ХозрасчетныйОбороты.Субконто1
                      |            И ХозрасчетныйОстаткиИОбороты.Субконто2 = ХозрасчетныйОбороты.Субконто2
                      |            И ХозрасчетныйОстаткиИОбороты.Субконто3 = ХозрасчетныйОбороты.Субконто3
                      |            И ХозрасчетныйОстаткиИОбороты.Организация = ХозрасчетныйОбороты.Организация
                      |            И ХозрасчетныйОстаткиИОбороты.Валюта = ХозрасчетныйОбороты.Валюта
                      |            И ХозрасчетныйОстаткиИОбороты.Подразделение = ХозрасчетныйОбороты.Подразделение
                      |
                      |ОБЪЕДИНИТЬ ВСЕ
                      |
                      |ВЫБРАТЬ
                      |    ХозрасчетныйОбороты.Счет,
                      |    ХозрасчетныйОбороты.Субконто1,
                      |    ХозрасчетныйОбороты.Субконто2,
                      |    ХозрасчетныйОбороты.Субконто3,
                      |    ХозрасчетныйОбороты.КорСчет,
                      |    ХозрасчетныйОбороты.КорСубконто1,
                      |    ХозрасчетныйОбороты.КорСубконто2,
                      |    ХозрасчетныйОбороты.КорСубконто3,
                      |    ХозрасчетныйОбороты.Организация,
                      |    ХозрасчетныйОбороты.Валюта,
                      |    ХозрасчетныйОбороты.ВалютаКор,
                      |    ХозрасчетныйОбороты.Подразделение,
                      |    ХозрасчетныйОбороты.ПодразделениеКор,
                      |    ХозрасчетныйОбороты.СуммаОборотДт,
                      |    ХозрасчетныйОбороты.СуммаОборотКт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт,
                      |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт
                      |ИЗ
                      |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет В ИЕРАРХИИ (&Счет2), , , , ) КАК ХозрасчетныйОбороты
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет В ИЕРАРХИИ (&Счет2), , ) КАК ХозрасчетныйОстаткиИОбороты
                      |        ПО ХозрасчетныйОбороты.Счет = ХозрасчетныйОстаткиИОбороты.Счет
                      |            И ХозрасчетныйОбороты.Субконто1 = ХозрасчетныйОстаткиИОбороты.Субконто1
                      |            И ХозрасчетныйОбороты.Субконто2 = ХозрасчетныйОстаткиИОбороты.Субконто2
                      |            И ХозрасчетныйОбороты.Субконто3 = ХозрасчетныйОстаткиИОбороты.Субконто3
                      |            И ХозрасчетныйОбороты.Организация = ХозрасчетныйОстаткиИОбороты.Организация
                      |            И ХозрасчетныйОбороты.Валюта = ХозрасчетныйОстаткиИОбороты.Валюта
                      |            И ХозрасчетныйОбороты.Подразделение = ХозрасчетныйОстаткиИОбороты.Подразделение";
                      Запрос.УстановитьПараметр("Счет",Массив);
                      Запрос.УстановитьПараметр("Счет2",Массив2);
                      Запрос.УстановитьПараметр("НачалоПериода",НачалоДня(НачалоПериода));
                      Запрос.УстановитьПараметр("КонецПериода",КонецДня(КонецПериода));
                      Запрос.УстановитьПараметр("НоменклатурнаяГруппа", НоменклатурнаяГруппа);
                      Результат = Запрос.Выполнить().Выгрузить();

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




Далее идет если обычно по 1 счету

то все нормально работает
26 men47
 
17.07.13
16:48
а что значит наподобии... это значит по корреспондирующим счетам развертку чтобы показывал
27 men47
 
17.07.13
16:50
я делаю на форме реквизитами отбор по периоду 1 день, ставлю эти счета, и ставлю группу номенклатурной группы, за 1 день выходит около 700 элементов из запроса.... и при нынешнем коде он очень долго думает, а при том коде как я выгружал как структура он 25 мин более 10 мин делал...

могу скрины скинуть СКД если надо
28 men47
 
17.07.13
16:50
тьфу 25% он более 10 минут делал
29 men47
 
17.07.13
16:56
ох... до меня дошло скорее всего почему так...
у меня в СКД есть еще 1 запрос, который выбирает по 1 счету.... он скорее всего пытается и там все счета выгрузить поэтому так долго...

а возможно как-нибудь выключить его или передать чтобы эту ТЗ использовал
30 men47
 
17.07.13
17:22
ап
31 men47
 
17.07.13
21:11
ап
32 men47
 
17.07.13
21:33
при (9) методе он реально доходит до 25% и потом через определенное время вылетает с недостатком памяти....
можно как-нибудь загрузить ТЗ за место того, что он возможно выгрузил у себя (т.к. у меня в СКД свой запрос)
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.