Обработка из SQL базы в 1с SQL

Новая тема
Показывать по сообщений
"Понял где косяк, не так я делал.<br>Но теперь другой касяк при попытки сохранить обработку. он пишет, что модуль не верный продоолжить или нет. и указывает вот на эти ошибка<br><br>{ВнешняяОбработка.ВнешняяОбработка1(10,18)}: Процедура или функция с указанным именем не определена (СоздатьОбъект)<br>    Соединение = <<?>>СоздатьОбъект("ADODB.Connection");<br>{ВнешняяОбработка.ВнешняяОбработка1(18,25)}: Процедура или функция с указанным именем не определена (СоздатьОбъект)<br>         Номенклатура = <<?>>СоздатьОбъект("Справочник.Склады");<br>{ВнешняяОбработка.ВнешняяОбработка1(20,16)}: Процедура или функция с указанным именем не определена (СоздатьОбъект)<br>         Cmd = <<?>>СоздатьОбъект("ADODB.Command");<br>{ВнешняяОбработка.ВнешняяОбработка1(23,15)}: Процедура или функция с указанным именем не определена (CreateObject)<br>         Rs = <<?>>CreateObject("ADODB.RecordSet");<br><br><br>И соответсвенно при его загрузке он пишет тоже самое"
так вы ж не написали какая у вас 1С, судя по сообщениям у вас v8, а алгоритм я писал для v7.7. Переведите алгоритм на язык v8
Хнык... даааа.. это 1с8.1 ... забыл совсем написать...<br><br>а как перевести-то ?
совет должнен быть один : ПРИГЛАСИТЬ СПЕЦИАЛИСТА! ИМХО конечно!
"Для v8:<br><br>Процедура КнопкаВыполнитьНажатие(Кнопка)<br>     //здесь<br>     //192.168.7.70 = ip Microsoft SQL Server<br>     //User1C = пользователь, имеющий права доступа на базу в MS SQL Server (обычно sa, но я всегда меняю)<br>     //omega = пароль пользователя<br>     //BaseID = идентификатор базы<br><br>     ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.7.70;Password=omega;User ID=User1C;Initial Catalog=BaseID";<br><br>     Соединение = Новый COMОбъект("ADODB.Connection"); <br>     Соединение.ConnectionTimeOut =600;<br>     Соединение.CursorLocation = 3;<br>     Попытка<br>          //здесь:<br>          //HH123 - идентификатор поля, где лежит наименование<br>          //TT567 - идентификатор таблицы, где лежат нужные данные<br><br>          Номенклатура=Справочники.Номенклатура;<br>          Соединение.Open(ConnectionString); <br>          Cmd = Новый COMОбъект("ADODB.Command");<br>          Cmd.ActiveConnection = Соединение;<br>          Cmd.CommandText  = "Select HH123 FROM TT567";<br>          //************ тут была еще строка, см. примечание внизу<br>          Rs = Cmd.Execute();<br>          Для i = 1 по Rs.RecordCount Цикл<br>               ТекНаименование=СокрЛП(Rs.Fields("HH123").Value);<br>               Если Номенклатура.НайтиПоНаименованию(ТекНаименование,Истина)=Номенклатура.ПустаяСсылка() Тогда<br>                    НовыйЭлемент=Номенклатура.СоздатьЭлемент();<br>                    НовыйЭлемент.Наименование=ТекНаименование;<br>                    НовыйЭлемент.Записать();<br>               КонецЕсли;<br>               Rs.MoveNext();<br>          КонецЦикла;<br><br>          Rs=0;<br>          Соединение=0;<br>     Исключение<br>          Предупреждение(ОписаниеОшибки());<br>          Соединение=0;<br>     КонецПопытки;<br>КонецПроцедуры<br><br>Примечание: из алгоритма по большой бросьбе zak555 убрана строка Rs = Новый COMОбъект("ADODB.RecordSet");, а то он уже 3-е сутки не может обрести внутренее равновесие от того что я не признаю ненужность этой строчки"
ага, да пусть, добью тему до конца уж... может кому другому этот алгоритм потом пригодится. Я его использовал уже ранее, когда данные из таблиц FoxPro с memo полями забирал. Для данного примера выкинул все "ненужное" и переделал под MS SQL Server строку подключения (спасибо .Net Developer Studio, которая позволяет это делать самым удобным образом)
"Теперь он 3 суток не будет спасть из-за того, что заставил тебя убрать такую нужную строчку! ;)"
Спасибо большущие..разобрался, поля заполнил. все в базу закинулось быстро и оперативно... еще раз спасибо...<br>
"Возник еще один не большой вопрос, для общего развития..<br><br>Я так понимаю что вот это<br><br>ТекНаименование=СокрЛП(Rs.Fields("ТУТ ТАБЛИЦА в SQL С НАЗВАНИЯМИ").Value);<br>              Если Номенклатура.НайтиПоНаименованию(ТекНаименование,0,1)=0 Тогда<br>                   Номенклатура.Новый();<br>                   Номенклатура.Наименование=ТекНаименование;<br>                   Номенклатура.Записать();<br><br>Он берет названия от туда и кидает в номенклатуру создавая новый и записывая соответственно.<br><br>А если две позиции ? То есть в базе sql две таблицы (первая это вот названия) а вторая допустим цифра 1 и 2 (назавем еще) id.<br><br>Сложно ли дописать ту обработку, что бы он не только перекидывал наименования, но допустим если напротив (в след. таблице id) стоит 1, то это скажем оптовый склад, если 2, розничный. (это просто пример)"
"это текстом SQL запроса оговаривается, можно из MS SQL Server вынуть данные с довольно сложными условиями и связями, а уж просто достать значения двух полей и подавно:<br><br>например так:<br>Select id, name FROM mytable<br><br>ну и потом обращаться к результатам запроса через объект recordset<br>ТекНаименование=СокрЛП(Rs.Fields("name").Value);<br>ТекИдентификатор=СокрЛП(Rs.Fields("id").Value);<br><br>P.S. мне кажется, что вы путаете понятия "таблицы" и "поля""

Читают тему

(гостей: 1)

Быстрый переход