Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

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

diablo05
читатель
офлайн
Дата регистрации: 23.06.2010
Сообщений: 1435
Пост №21
 
28.01.2011 13:45

"Понял где косяк, не так я делал.<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>И соответсвенно при его загрузке он пишет тоже самое"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №22
 
28.01.2011 15:27

так вы ж не написали какая у вас 1С, судя по сообщениям у вас v8, а алгоритм я писал для v7.7. Переведите алгоритм на язык v8

diablo05
читатель
офлайн
Дата регистрации: 23.06.2010
Сообщений: 1435
Пост №23
 
28.01.2011 16:32

Хнык... даааа.. это 1с8.1 ... забыл совсем написать...<br><br>а как перевести-то ?

Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20953
Пост №24
 
28.01.2011 16:34

совет должнен быть один : ПРИГЛАСИТЬ СПЕЦИАЛИСТА! ИМХО конечно!

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №25
 
28.01.2011 19:24

"Для 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-е сутки не может обрести внутренее равновесие от того что я не признаю ненужность этой строчки"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №26
 
28.01.2011 19:26

ага, да пусть, добью тему до конца уж... может кому другому этот алгоритм потом пригодится. Я его использовал уже ранее, когда данные из таблиц FoxPro с memo полями забирал. Для данного примера выкинул все "ненужное" и переделал под MS SQL Server строку подключения (спасибо .Net Developer Studio, которая позволяет это делать самым удобным образом)

Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20953
Пост №27
 
28.01.2011 21:19

"Теперь он 3 суток не будет спасть из-за того, что заставил тебя убрать такую нужную строчку! ;)"

diablo05
читатель
офлайн
Дата регистрации: 23.06.2010
Сообщений: 1435
Пост №28
 
29.01.2011 17:27

Спасибо большущие..разобрался, поля заполнил. все в базу закинулось быстро и оперативно... еще раз спасибо...<br>

diablo05
читатель
офлайн
Дата регистрации: 23.06.2010
Сообщений: 1435
Пост №29
 
29.01.2011 17:43

"Возник еще один не большой вопрос, для общего развития..<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, розничный. (это просто пример)"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №30
 
29.01.2011 18:43

"это текстом 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. мне кажется, что вы путаете понятия "таблицы" и "поля""

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация