|
v7: Проблема с выгрузкой данных из fdb | ☑ | ||
---|---|---|---|---|
0
sevensword
26.08.14
✎
11:33
|
Всем добрый день, возик насущий вопрос
организовываю выгрузку данны из fdb базы,в базе две таблицы, в одной айди товара количество проданного а в другой айди товара и его наименование, при выгрузке данных происходит сверка справочника 1с и данных таблице по наименованию сейчас получается что количество и цена грузятся а наименования выходят пустыми, кто может подсказать где ошибка? функция найти_товар_алт(наим_тов) спр_тов=создатьобъект("Справочник.Номенклатура"); спр_тов.выбратьэлементы(); Пока спр_тов.получитьэлемент()=1 Цикл Если лев(сокрлп(наим_тов),3)=лев(спр_тов.наименование,3) Тогда возврат(спр_тов.текущийэлемент()); КонецЕсли; КонецЦикла; возврат(получитьпустоезначение("Справочник.Номенклатура")); конецфункции процедура загрузка_магаз() АДО = СоздатьОбъект("ADODB.Connection"); АДО.ConnectionString = "Provider=LCPI.IBProvider.1;Password=masterkey;Persist Security Info=True;User ID=SYSDBA;Data Source=127.0.0.1:C:\alfamagasine\pstation.FDB"; АДО.Open(); //Сообщить(АДО.Version); АДО.BeginTrans(); а=азс.код_альт; //ввестичисло(а,"Введи // АДО.BeginTrans(); rs=АДО.Execute("SELECT * FROM SGOODS WHERE SHIFT="+строка(смена)+""); rd=АДО.Execute("SELECT * FROM GOODS");// WHERE SHIFT="+строка(смена)+""); таб=создатьобъект("ТаблицаЗначений"); таб.новаяколонка("ИД","Число"); таб.новаяколонка("наим_тов","Строка"); таб.новаяколонка("наим_т","число"); // таб.новаяколонка("наим_ст","число"); таб.новаяколонка("кол","Число"); таб.новаяколонка("цена","Число"); таб.новаяколонка("Вид_опл_код","Число"); таб.новаяколонка("Вид_опл","Справочник.ВидОплаты"); спр=создатьобъект("Справочник.ВидОплаты"); спр.найтипокоду(1); // нал. // таб2=создатьобъект("ТаблицаЗначений"); таб2.новаяколонка("ИД","Число"); таб2.новаяколонка("наим_тов","Строка"); таб2.новаяколонка("наим_ст","число"); таб3=создатьобъект("ТаблицаЗначений"); таб3.новаяколонка("ИД","Число"); таб3.новаяколонка("наим_тов","Строка"); таб3.новаяколонка("наим_ст","число"); таб3.новаяколонка("кол","Число"); таб3.новаяколонка("цена","Число"); пока rs.EOF=0 цикл таб.новаястрока() ; таб.наим_т=rs.fields.Item("IDGOOD").value;//бд.FUEL; \ таб2.наим_ст=rd.fields.Item("id").value;//бд.FUEL; \ таб2.наим_тов=rd.fields.Item("NAME").value;//бд.TYPEPAY; таб.кол=rs.fields.Item("OUTGO").value;//бд.TYPEPAY; таб.цена=rs.fields.Item("PRICE").value;//бд.TYPEPAY; \ // экспорт rs.movenext(); таб2.выбратьстроки(); Пока таб2.получитьстроку()=0 цикл таб3.новаястрока(); таб3.наим_тов=таб2.наим_тов; таб3.ид=таб2.наим_ст; конеццикла; таб.выбратьстроки(); Пока таб.получитьстроку()=0 цикл таб3.новаястрока(); таб3.ид=таб.наим_т; таб3.кол=таб.кол; таб3.цена=таб.цена; конеццикла; конеццикла; АДО.CommitTrans(); таб.Выгрузить(таб3,,,"наим_т,кол,цена"); таб2.Выгрузить(таб3,,,"наим_тов,наим_ст"); таб3.Свернуть("наим_тов,наим_т,наим_ст,цена", "кол"); ТЗ_5.удалитьстроки(); таб3.ВыбратьСтроки(); Пока таб3.ПолучитьСтроку() = 1 Цикл ТЗ_5.новаястрока(); ТЗ_5.товар=найти_товар_алт(таб3.наим_тов); // ТЗ_5.товар=таб3.наим_тов; ТЗ_5.расх_кол=таб3.кол; ТЗ_5.цена=таб3.цена; ТЗ_5.сумма=ТЗ_5.цена*ТЗ_5.расх_кол; КонецЦикла; |
|||
1
Ёпрст
26.08.14
✎
11:37
|
таб2.наим_ст=rd.fields.Item("id").value;//бд.FUEL;
Присваиваешь значение, а таб2.НоваяСттрока или позиционирования на любой другой строке в коде нема.. |
|||
2
Ёпрст
26.08.14
✎
11:38
|
ну и ... весь код в топку..
|
|||
3
Ёпрст
26.08.14
✎
11:41
|
и поиск весьма забавный..по первым 3-м символам..
|
|||
4
Ёпрст
26.08.14
✎
11:42
|
хотя бы к нижнему регистру приводил, что ле..
|
|||
5
sevensword
26.08.14
✎
11:53
|
(4) смысла нет от нижнего регистра, код выставляют перед наименованием, товара немного трех цифр хватает
|
|||
6
sevensword
26.08.14
✎
11:53
|
(1) ща буду переделывать
|
|||
7
Ёпрст
26.08.14
✎
11:55
|
и если че, всю синхронизацию можно было бы слепить в одном запросе. Только использовать не адо, а 1cpp и oledb провайдер
И получить на выходе готовый результат - сами элементы и цена твоя с левой базы. |
|||
8
sevensword
26.08.14
✎
13:33
|
(7) в дебри 1cpp и oledb не стал лезть
щас дописал но грузит первую строчку справочника Епрст подскажи как стравнить строчки id и idgood в разных таблицах чтобы получить поле name процедура загрузка_магазина() АДО = СоздатьОбъект("ADODB.Connection"); АДО.ConnectionString = "Provider=LCPI.IBProvider.1;Password=masterkey;Persist Security Info=True;User ID=SYSDBA;Data Source=127.0.0.1:C:\alfamagasine\pstation.FDB"; АДО.Open(); //Сообщить(АДО.Version); АДО.BeginTrans(); а=азс.код_альт; //ввестичисло(а,"Введи // АДО.BeginTrans(); rs=АДО.Execute("SELECT * FROM SGOODS WHERE SHIFT="+строка(смена)+""); rd=АДО.Execute("SELECT * FROM GOODS");// WHERE SHIFT="+строка(смена)+""); таб=создатьобъект("ТаблицаЗначений"); таб.новаяколонка("ИД","Число"); таб.новаяколонка("наим_тов","Строка"); таб.новаяколонка("наим_2","Строка"); таб.новаяколонка("наим_3","Строка"); таб.новаяколонка("кол","Число"); таб.новаяколонка("цена","Число"); таб.новаяколонка("Вид_опл_код","Число"); таб.новаяколонка("Вид_опл","Справочник.ВидОплаты"); спр=создатьобъект("Справочник.ВидОплаты"); спр.найтипокоду(1); // нал. // пока rs.EOF=0 цикл таб.новаястрока() ; // таб.наим_2=rs.fields.Item("IDGOOD").value;//бд.FUEL; \ // таб.наим_3=rd.fields.Item("id").value;//бд.FUEL; \ таб.наим_тов=rd.fields.Item("NAME").value;//бд.TYPEPAY; таб.кол=rs.fields.Item("OUTGO").value;//бд.TYPEPAY; таб.цена=rs.fields.Item("PRICE").value;//бд.TYPEPAY; \ // иначе конецесли; // экспорт rs.movenext(); таб.вид_опл=спр.найтипокоду(1); Если спр.найтипокоду(1)=1 Тогда таб.вид_опл = Спр.ТекущийЭлемент(); КонецЕсли; конеццикла; АДО.CommitTrans(); таб.свернуть("наим_тов,цена,вид_опл","кол"); ТЗ_5.удалитьстроки(); таб.выбратьстроки(); Пока таб.получитьстроку()=1 Цикл если таб.кол=0 тогда продолжить; конецесли; ТЗ_5.новаястрока(); ТЗ_5.товар=найти_товар_алт(таб.наим_тов); ТЗ_5.расх_кол=таб.кол; ТЗ_5.цена=таб.цена; ТЗ_5.сумма=ТЗ_5.цена*ТЗ_5.расх_кол; ТЗ_5.вид_оплаты=таб.вид_опл; // ТЗ_5.Заполнить(ТЗ_5,,,"вид_оплаты"); КонецЦикла; конецпроцедуры |
|||
9
Ёпрст
26.08.14
✎
13:38
|
дык связь то какая между ними ?
так что ле надо ? SELECT b.name FROM SGOODS as a WHERE a.SHIFT="+строка(смена)+" left join GOODS as b on b.ID = a.IDGOOD");// WHERE SHIFT="+строка(смена)+""); |
|||
10
Ёпрст
26.08.14
✎
13:39
|
SELECT b.name FROM SGOODS as a
left join GOODS as b on b.ID = a.IDGOOD WHERE a.SHIFT="+строка(смена)+" |
|||
11
sevensword
26.08.14
✎
13:52
|
(10) rs=???.Execute(("SELECT b.name FROM SGOODS as a left join GOODS as b on b.ID = a.IDGOOD WHERE a.SHIFT="+??????(?????)+""));
{????????.????????????.?????.??????(1888)}: : Prepare: SQLCODE=-104: Dynamic SQL Error SQL error code = -104 Token unknown - line |
|||
12
sevensword
26.08.14
✎
13:52
|
ошибка запроса
|
|||
13
sevensword
26.08.14
✎
14:08
|
через ibeexpert показывает ошибку не нравится ему AS
|
|||
14
Злой Бобр
26.08.14
✎
14:08
|
rs=АДО.Execute("SELECT * FROM SGOODS WHERE SHIFT="+строка(смена)+"");
Поменяй на : rs=АДО.Execute("SELECT * FROM SGOODS WHERE SHIFT='"+строка(смена)+"'"); Эх... молодежь. ) |
|||
15
sevensword
26.08.14
✎
14:24
|
(14) что это должно изменить?
|
|||
16
Злой Бобр
26.08.14
✎
14:30
|
(15) Строка в одинарной кавычке должна быть. То что ты в 1С преобразуешь в строку для запроса ничего не значит. Ну попробуй так и посмотри что выдаст.
|
|||
17
sevensword
26.08.14
✎
14:48
|
переделал запрос, в bexperte формирует как надо а в 1ске ошибка
rs=АДО.Execute("SELECT sgoods.idgood, goods.id, goods.name FROM sgoods left join goods on GOODS.id = SGOODS.idgood WHERE a.SHIFT="+строка(смена)+""); Prepare: SQLCODE=-206: Dynamic SQL Error SQL error code = |
|||
18
sevensword
26.08.14
✎
14:55
|
опечатка была нашел поправил
|
|||
19
sevensword
26.08.14
✎
15:09
|
всем спасибо, все работает
процедура загрузка_магазина() АДО = СоздатьОбъект("ADODB.Connection"); АДО.ConnectionString = "Provider=LCPI.IBProvider.1;Password=masterkey;Persist Security Info=True;User ID=SYSDBA;Data Source=127.0.0.1:C:\alfamagasine\pstation.FDB"; АДО.Open(); //Сообщить(АДО.Version); АДО.BeginTrans(); а=азс.код_альт; rs=АДО.Execute("SELECT sgoods.idgood, goods.id, goods.name, sgoods.outgo, sgoods.price FROM sgoods left join goods on GOODS.id = SGOODS.idgood WHERE SHIFT="+строка(смена)+""); таб=создатьобъект("ТаблицаЗначений"); таб.новаяколонка("ИД","Число"); таб.новаяколонка("наим_тов","Строка"); таб.новаяколонка("кол","Число"); таб.новаяколонка("цена","Число"); таб.новаяколонка("Вид_опл_код","Число"); таб.новаяколонка("Вид_опл","Справочник.ВидОплаты"); спр=создатьобъект("Справочник.ВидОплаты"); спр.найтипокоду(1); // нал. // пока rs.EOF=0 цикл таб.новаястрока() ; таб.наим_тов=rs.fields.Item("NAME").value;//бд.TYPEPAY; таб.кол=rs.fields.Item("OUTGO").value;//бд.TYPEPAY; таб.цена=rs.fields.Item("PRICE").value;//бд.TYPEPAY; \ rs.movenext(); таб.вид_опл=спр.найтипокоду(1); Если спр.найтипокоду(1)=1 Тогда таб.вид_опл = Спр.ТекущийЭлемент(); КонецЕсли; конеццикла; АДО.CommitTrans(); таб.свернуть("наим_тов,цена,вид_опл","кол"); ТЗ_5.удалитьстроки(); таб.выбратьстроки(); Пока таб.получитьстроку()=1 Цикл если таб.кол=0 тогда продолжить; конецесли; ТЗ_5.новаястрока(); ТЗ_5.товар=найти_товар_алт(таб.наим_тов); ТЗ_5.расх_кол=таб.кол; ТЗ_5.цена=таб.цена; ТЗ_5.сумма=ТЗ_5.цена*ТЗ_5.расх_кол; ТЗ_5.вид_оплаты=таб.вид_опл; КонецЦикла; конецпроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |