|
Выгрузка данных из таблицы SQL в табличные части нового документа | ☑ | ||
---|---|---|---|---|
0
MrFilO
15.07.16
✎
11:38
|
Товарищи, в разработке пока плаваю...
В общем, есть таблица в БД SQL, туда высыпается история продаж из БелмагКассир, нужно выгрузить данные из этой таблицы в новый док Z-отчеты, с заполнением табличных частей данными из таблицы SQL, причем создание дока с текущей датой, формированием номера для дока и т.п. Я так понимаю, что проще выгрузить все данные из БД в ТЗ, а затем уже выбирать нужные поля и забивать в соответствующую ТЧ. С созданием документа вроде разобрался, описать ТЗ вроде тоже получилось, а вот как пройтись по строкам из таблицы БД, да выгрузить их в ТЗ, а затем в ТЧ...тут я в тупике, вариантов в гугле масса, но как-то под мою задачу ничего похожего не нашел, хотя и процедура вроде бы популярная... Помогите кто чем может, вот набросал ... Попытка Соединение = Новый COMОбъект("ADODB.Connection"); Команда = Новый COMОбъект("ADODB.Command"); Выборка = Новый COMОбъект("ADODB.RecordSet"); Соединение.ConnectionString = "driver={SQL Server};" + "server="+ИмяСервераSQL+";"+ "uid="+ПользовательSQL+";"+ "pwd="+ПарольSQL+";"+ "database="+БазаДанныхSQL+";"; Соединение.ConnectionTimeout = 30; Соединение.CommandTimeout = 600; //Открытие соединение Соединение.Open(); Команда.ActiveConnection = Соединение; Сообщить("Успешное подключение!"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Продажи = Новый ТаблицаЗначений (); Продажи.Колонки.Добавить("Дата"); Продажи.Колонки.Добавить("КодТовара"); Продажи.Колонки.Добавить("Количество"); Продажи.Колонки.Добавить("ЕдиницаИзмерения"); Продажи.Колонки.Добавить("СтавкаНДС"); Продажи.Колонки.Добавить("СуммаНДС"); Продажи.Колонки.Добавить("Сумма"); Продажи.Колонки.Добавить("Склад"); Продажи.Колонки.Добавить("ТипКарты"); Продажи.Колонки.Добавить("ПОС"); Продажи.Колонки.Добавить("Смена"); Продажи.Колонки.Добавить("ДатаСмены"); Продажи.Колонки.Добавить("СуммаНал"); Продажи.Колонки.Добавить("Фирма"); Команда.CommandText = "SELECT * FROM dbo.history"; Попытка Выборка = Команда.Execute(); |
|||
1
Горогуля
15.07.16
✎
11:44
|
предлагаю начать с освоения документации
|
|||
2
Горогуля
15.07.16
✎
11:46
|
а прокладка в виде ТЗ - это ради увеличения числа строк кода?
|
|||
3
MrFilO
15.07.16
✎
11:46
|
(1) это, конечно, само собой подразумевается, но сейчас есть конкретно поставленный вопрос
|
|||
4
MrFilO
15.07.16
✎
11:47
|
(2) Нет, а есть другие варианты?
|
|||
5
Горогуля
15.07.16
✎
11:47
|
(3) конкретный ответ на который есть в той самой документации. от чтения умнеют
|
|||
6
HEKPOH
15.07.16
✎
11:47
|
Выборка = Команда.Execute();
Пока Не Выборка .EOF Цикл НС = Продажи.Добавить(); НС.Дата = Выборка.Fields("Дата").Value; ... Выборка.MoveNext(); КонецЦикла; |
|||
7
Горогуля
15.07.16
✎
11:47
|
(4) есть: не использовать прокладку в виде ТЗ
|
|||
8
Горогуля
15.07.16
✎
11:48
|
(6) а MoveFirst() на всякий пожарный не надо?
|
|||
9
HEKPOH
15.07.16
✎
11:49
|
(8) не-а
|
|||
10
HEKPOH
15.07.16
✎
11:50
|
+(9) код на 100% рабочий
|
|||
11
MrFilO
15.07.16
✎
11:51
|
(6) шикарно, благодарю, а можно вместо многоточия одну строку для примера? или аналогично "Дата" перебирать остальные? Просто в доке несколько ТЧ, хочу глянуть, как будет происходить выгрузка в разные ТЧ
|
|||
12
HEKPOH
15.07.16
✎
11:53
|
(11) аналогично "дата" перебрать все поля выборки
|
|||
13
MrFilO
15.07.16
✎
11:56
|
А запись в ТЧ аналогично этой конструкции делать?
Докум = Документы.Zотчет.СоздатьДокумент(); Для каждого Стр Из Продажи Цикл Докум.Дата = ТекущаяДата(); НоваяСтрока = Докум.Состав.Добавить(); НоваяСтрока.СМС = Выборка...; |
|||
14
lEvGl
гуру
15.07.16
✎
11:57
|
не сталкивался с zотчетом, но разве там в таб частях все поля строковые/числовые? ссылочных нет ?
|
|||
15
Горогуля
15.07.16
✎
11:59
|
а ещё бывает на свете КД...
|
|||
16
MrFilO
15.07.16
✎
11:59
|
(14) попахивает новой головной болью)
|
|||
17
Горогуля
15.07.16
✎
12:00
|
(16) попахивать начнёт, когда потребуется из плоской внешней таблицы перетаскивать, к примеру, номенклатуру с сохранением иерархии и отсутствием дублей
|
|||
18
MrFilO
15.07.16
✎
12:01
|
Так а что касательно, конструкции загрузки данных уже в ДОК?
|
|||
19
Горогуля
15.07.16
✎
12:02
|
(18) между пятым и седьмым постом
|
|||
20
MrFilO
15.07.16
✎
12:04
|
(19) Так это же вроде заполнение ТЗ? Не?
|
|||
21
Горогуля
15.07.16
✎
12:05
|
НС = ОченьНовыйДокумент.Продажи.Добавить();
|
|||
22
lEvGl
гуру
15.07.16
✎
12:06
|
(17) все здесь уже есть, нельзя просто так взять и перенести данные одной базы в другую(с)
(20)он говорит, что ТЗ можно не использовать, а грузить сразу в ТЧ, что эта временная ТЗ не нужна |
|||
23
MrFilO
15.07.16
✎
12:08
|
(22) аа, т.е. лабуду, что я набросал можно вполне заменить кодом "из поста между 5 и 7"?)
|
|||
24
Горогуля
15.07.16
✎
12:12
|
(23) в твоей лабуде ценного - соединение с внешней БД. остальное у Некрона
|
|||
25
MrFilO
15.07.16
✎
12:13
|
(24) Пасибо, буду вкуривать)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |