Имя: Пароль:
1C
1С v8
Как бы вывести все в один макет....
0 ponaroshku
 
17.01.12
12:25
Привет всем:)

Вообщем подключаюсь я через com к двум базам, получилось:)

база1
в этой же функции подключения делаю запрос к базе, вывожу нужную информацию в макет

база2
аналогично в функции подключения идет запрос к базе и вывод информации в макет

Как бы мне объединить это дело и выводить в один и тот же макет?
Сейчас создается 2 одинаковых, но с разными данными

Или неправильна логика работы?

Заранее спасибо
1 Wobland
 
17.01.12
12:26
а как сейчас создаётся?
2 Wobland
 
17.01.12
12:27
и хочешь данные из 2й базы "дописывать" в макет, в котором уже данные из 1й? макеты/данные одинаковые, я так понимаю?
3 Рэйв
 
17.01.12
12:27
Не создавай еще один Новый ТабличныйДокумент. Продолжай в старом объекте выводить строки.
4 Пришел в тапках
 
17.01.12
12:28
(3) Опередил чертяка )
5 Рэйв
 
17.01.12
12:28
(4):-)
6 Пришел в тапках
 
17.01.12
12:28
Табдок создавай вначале и выводи в него инфо с двух макетов.
7 Wobland
 
17.01.12
12:29
(3) честно говоря, я даже не подумал об этом, считая очевидным ;)
8 ponaroshku
 
17.01.12
12:29
тааак, сейчас:))
9 Cube
 
17.01.12
12:29
(6) Тебя (3) опередил, если ты не заметил))
10 ponaroshku
 
17.01.12
12:31
(7) я если честно по аналогии сделала, даже не подумала:) сейчас поправлю
11 Wobland
 
17.01.12
12:32
(10) заходи, когда в следующий раз решишь не подумать ;)
12 Пришел в тапках
 
17.01.12
12:38
(9) Да высказаться решил, ато не усну с мыслями что мог сказать и не сказал )))
13 ponaroshku
 
17.01.12
12:39
Так стоп:) я от счастья, что вопрос оказался таким быстроразрешающимся, переволновалась:))

убрала из функции и первой, и второй

В модуле прописала
Перем ТабДокумент экспорт;

В форме

Процедура ПриОткрытии()
           ТабДокумент = Новый ТабличныйДокумент;
КонецПроцедуры;

В итоге выводит данные только одной базы, вторую не смотрит
14 ponaroshku
 
17.01.12
12:39
(9) я дам вам шанс:))))
15 ponaroshku
 
17.01.12
12:40
(9) не 9, (12) :))
все, говорю переволновалась:)))
16 Wobland
 
17.01.12
12:41
(13) это где всё?
17 ptiz
 
17.01.12
12:42
Сохранить оба макета в разные mxl, потом создать новый табдок из этих двух mxl.
18 ponaroshku
 
17.01.12
12:42
(16) Перем ТабДокумент экспорт;
в модуле объекта

Где и функции подключения

Процедура ПриОткрытии()
           ТабДокумент = Новый ТабличныйДокумент;
КонецПроцедуры;

в модуле формы
19 ponaroshku
 
17.01.12
12:42
(17) ого-го
20 Wobland
 
17.01.12
12:44
(18) почему решила, что вторую не смотрит? ТабДок.Очистить() бы ещё...
21 Wobland
 
17.01.12
12:46
достаточно было убрать ТабДокумент = Новый ТабличныйДокумент из второй процедуры. ну или ТабДокумент вынести в Перем
22 Пришел в тапках
 
17.01.12
12:47
Или передавать между процедурами ТабДок на крайняк.
23 Cube
 
17.01.12
12:48
Подозреваю, что строка ТабДок.Показать() идет сразу после запроса к первой базе...
24 Пришел в тапках
 
17.01.12
12:48
хм, думаю (23) прав
25 Пришел в тапках
 
17.01.12
12:48
или лев )))
26 Пришел в тапках
 
17.01.12
12:49
ТабДок.Показать()  убери после вывода первой базы
27 hhhh
 
17.01.12
12:50
(19) сложи их просто

ТабДокобщий = Новый ТабличныйДокумент;
ТабДОкОбщий.Вывести(ТабДок1);
ТабДОкОбщий.Вывести(ТабДОк2);
ТабДокОбщий.Показать();
28 Cube
 
17.01.12
12:50
(25) Главное, чтобы не сред!))
29 ponaroshku
 
17.01.12
12:54
Так:) вообщем попробовала:

(20) тогда пропадает результат первой базы, выводит только вторую

(23) (26) тогда  выводит результат первой базы, второго результат нет
30 Wobland
 
17.01.12
12:57
(29) так.
Перем ТабДок;

Процедура1()
ТабДок.Очистить();
ТабДок.Вывести(ОбластиВсякие);
Конец

Процедура2()
ТабДок.Вывести(ОбластиВсякие);
ТабДок.Показать();
Конец
31 TeddySlaf
 
17.01.12
12:58
(15), (29) сходи на обед, развейся, успокойся от переволнения - и всё получится.
32 ptiz
 
17.01.12
13:15
Объясни по-человечески, в объект (таб.документ) какой базы ты выводишь COM-объекты (таб.документы), полученные из других баз?
33 ponaroshku
 
18.01.12
06:04
(30) есть очистить

не корректно выводится : вначале выводит данные первой базы, затем второй, ниже
макет дублируется, но там уже данные второй базы

(31) я даже поспала:) успокоилась, но не догадалась еще)
34 Wobland
 
18.01.12
06:25
(33) давай уже свою обработку
35 ponaroshku
 
18.01.12
06:50
(34) искренне надеялась сама найти ошибку когда сокращала куски кода. Увы

Функция ПодключитьсяКИнформационнойБазеИсточнику(СтруктураПодключения, СтрокаСообщенияОбОшибке = "")
...подключаемся
       ТекCOMОбъект = ТекCOMПодключение.Connect(СтрокаПодключения);
...
   Макет = ПолучитьМакет("СводнаяТаблицаПоСчетамБУ");
   ЗапросИсточника = ТекCOMОбъект.NewObject("Запрос");
   ЗапросИсточника.Текст =    ...
       РезультатЗапросаКИсточнику = ЗапросИсточника.Выполнить();
       Выборка = РезультатЗапросаКИсточнику.Выбрать();
...Получаем области
       Пока  Выборка.Следующий()    Цикл
...заполняем области
       КонецЦикла;
       ТабДокумент.Очистить();
       ...выводим области
КонецФункции
=================Вторая Функция ===========
Функция ПодключитьсяКИнформационнойБазеПриемнику(СтруктураПодключения, СтрокаСообщенияОбОшибке = "")
...подключаемся
       ТекCOMОбъектПриемник = ТекCOMПодключениеПриемник.Connect(СтрокаПодключения);
...
   Макет = ПолучитьМакет("СводнаяТаблицаПоСчетамБУ");
   ЗапросПриемника = ТекCOMОбъектПриемник.NewObject("Запрос");
   ЗапросПриемника.Текст = ...
       РезультатЗапросаКПриемника = ЗапросПриемника.Выполнить();
       ВыборкаПриемника = РезультатЗапросаКПриемника.Выбрать();

...Получаем области
       Пока  Выборка.Следующий()    Цикл
...заполняем области
       КонецЦикла;
       ...выводим области
       ТабДокумент.Показать();
КонецФункции
36 Wobland
 
18.01.12
06:53
(35) схематично уже не получается, я имел в виду готовую живую обработку. ну вот смотри, что нашёл:
==== 1 ====
       Пока  Выборка.Следующий()    Цикл
...заполняем области
       КонецЦикла;
       ТабДокумент.Очистить();
усердно заполняем, потом это очищаем?
==== 2 ====
       Пока  Выборка.Следующий()    Цикл
...заполняем области
       КонецЦикла;
       ...выводим области
заполнять заполняем, но выводим только последнюю?


не понятно
37 ponaroshku
 
18.01.12
07:13
(36) по пункту 1 - это реализация (30) :)
по пункту 2 - не поняла, почему выводим последнюю?
38 Рэйв
 
18.01.12
07:15
(37)Потому что оператор вывода за циклом.И срабатывает когда цикл кончился,т.е. когда заполнена последняя область
39 ponaroshku
 
18.01.12
07:17
(38) поняла суть вопроса

в моем случае можно как в цикле, так и вне цикла делать заполнение, т.к. там 1 строка, 1 параметр

не несколько строк
40 Wobland
 
18.01.12
07:19
(37) в (30) сначала Очистить(), потом Вывести()
потому что вывод после цикла
41 Wobland
 
18.01.12
07:21
прекрати стесняться, дай обработку посмотреть. текущими методами можно долго делать. обещаю сильно не ругаться ;)
42 ponaroshku
 
18.01.12
07:22
(41) а скайпа нет?:))) я тут если код выложу меня закидают помидорами:)))
43 Wobland
 
18.01.12
07:23
(42) у меня почта есть. а скайп дома только
44 Рэйв
 
18.01.12
07:29
(42)Да брось:-)  Фотка есть, все в порядке:-)...Все будут милыми и покладистыми.
45 ponaroshku
 
18.01.12
07:30
(43) Отправила

(44) с моим кодом начнут требовать фотку топлесс или закидают помидорами :P
46 Wobland
 
18.01.12
07:36
хочется взять и переписать ;)
даже не знаю, что с тобой делать... процедура ВыполнитьПодключениеКИБИсточнику(), как следует из названия, должна подключаться и всё... щас попробую всё это вслепую переделать
47 Wobland
 
18.01.12
07:37
и знаешь, сколько усилий потратил на нажатие кнопки Выполнить? ;) размеры формы не меняются, кнопка уехала вниз
48 ponaroshku
 
18.01.12
07:41
(46) не не не
ВыполнитьПодключениеКИБИсточнику вызывает процедуру подключения из общего модуля, где и есть запрос

(47) :))) я всегда изначально гигантское все делаю
49 Wobland
 
18.01.12
07:53
гигантское тебя и путает. смотри, как понятней стало:

Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
   КОМ1=ВыполнитьПодключениеКИБИсточнику();
   КОМ2=ВыполнитьПодключениеКИБПриемнику();

   Если КОМ1=Неопределено ИЛИ КОМ2=Неопределено Тогда
       Возврат;
   КонецЕсли;
   
   ТабДокумент.Очистить();

   Печать1(КОМ1);
   Печать2(КОМ2);

   ТабДокумент.Показать();
КонецПроцедуры

а на почте больше ;)
50 Wobland
 
18.01.12
07:55
несколько поспешил. надо КОМ1=ВыполнитьПодключениеКИБИсточнику() вызывать. поправишь же сама?
51 Wobland
 
18.01.12
07:55
тфу, я так и делаю ;)
52 ponaroshku
 
18.01.12
08:14
(50) я поняла, спасибо
поблагородней стало внутри, код сразу стал симпотичным:)

но в макет же все равно выводится в низ данные, вначале первая, потом вторая база
53 Wobland
 
18.01.12
08:15
(52) попробуй сказать последнее предложение другими словами
54 ponaroshku
 
18.01.12
08:21
(53) ууу, куда смотрела, то и написала
в макете выводятся вначале данные первой базы в столбец 2, затем ниже данные второй базы в столбец4
получается макет дважды выводится, но не объединяется?
55 Wobland
 
18.01.12
08:31
(54) я ещё в (2) пытался что-то этакое выяснить...
предлагаю выгрузить запрос1 в ТЗ, потом прикрутить к этой ТЗ запрос2 и выводить в ТабДок уже ТЗ. было б всё в одной базе, это бы называлось соединением ;)
56 Wobland
 
18.01.12
08:46
возможные мелкие недописки/ошибки, надеюсь, простишь. лови почту