Подсжите строчку (загрузку из SQL в 1c)
15.07.2011
15:35
#1
"Доброго времени суток. я из базы SQL закидываю номенклатуру (наименования) в Базу 1с. и все было б не плохо...
Только теперь нужно закидывать Номенклатуру не сразу в справочник. а в Новую папку созданную. как это дописать. что бы загружались наименования в "номенклатуру в определенную папку" (Всегда в одну и туже, она одна)
Пользуюсь вот этой обработкой из sql в 1с
Процедура Сформировать()
//здесь
//192.168.7.70 = ip Microsoft SQL Server
//User1C = пользователь, имеющий права доступа на базу в MS SQL Server (обычно sa, но я всегда меняю)
//omega = пароль пользователя
//BaseID = идентификатор базы
ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.7.70;Password=omega;User ID=User1C;Initial Catalog=BaseID";
Соединение = СоздатьОбъект("ADODB.Connection");
Соединение.ConnectionTimeOut =600;
Соединение.CursorLocation = 3;
Попытка
//здесь:
//HH123 - идентификатор поля, где лежит наименование
//TT567 - идентификатор таблицы, где лежат нужные данные
Номенклатура=СоздатьОбъект("Справочник.Номенклатура");
Соединение.Open(ConnectionString);
Cmd = СоздатьОбъект("ADODB.Command");
Cmd.ActiveConnection = Соединение;
Cmd.CommandText = СокрЛП("Select HH123 FROM TT567");
Rs = CreateObject("ADODB.RecordSet");
Rs = Cmd.Execute;
Для i = 1 по Rs.RecordCount Цикл
ТекНаименование=СокрЛП(Rs.Fields("HH123").Value);
Если Номенклатура.НайтиПоНаименованию(ТекНаименование,0,1)=0 Тогда
Номенклатура.Новый();
Номенклатура.Наименование=ТекНаименование;
Номенклатура.Записать();
КонецЕсли;
Rs.MoveNext();
КонецЦикла;
Rs=0;
Соединение=0;
Исключение
Предупреждение(ОписаниеОшибки());
Соединение=0;
КонецПопытки;
КонецПроцедуры"
Только теперь нужно закидывать Номенклатуру не сразу в справочник. а в Новую папку созданную. как это дописать. что бы загружались наименования в "номенклатуру в определенную папку" (Всегда в одну и туже, она одна)
Пользуюсь вот этой обработкой из sql в 1с
Процедура Сформировать()
//здесь
//192.168.7.70 = ip Microsoft SQL Server
//User1C = пользователь, имеющий права доступа на базу в MS SQL Server (обычно sa, но я всегда меняю)
//omega = пароль пользователя
//BaseID = идентификатор базы
ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.7.70;Password=omega;User ID=User1C;Initial Catalog=BaseID";
Соединение = СоздатьОбъект("ADODB.Connection");
Соединение.ConnectionTimeOut =600;
Соединение.CursorLocation = 3;
Попытка
//здесь:
//HH123 - идентификатор поля, где лежит наименование
//TT567 - идентификатор таблицы, где лежат нужные данные
Номенклатура=СоздатьОбъект("Справочник.Номенклатура");
Соединение.Open(ConnectionString);
Cmd = СоздатьОбъект("ADODB.Command");
Cmd.ActiveConnection = Соединение;
Cmd.CommandText = СокрЛП("Select HH123 FROM TT567");
Rs = CreateObject("ADODB.RecordSet");
Rs = Cmd.Execute;
Для i = 1 по Rs.RecordCount Цикл
ТекНаименование=СокрЛП(Rs.Fields("HH123").Value);
Если Номенклатура.НайтиПоНаименованию(ТекНаименование,0,1)=0 Тогда
Номенклатура.Новый();
Номенклатура.Наименование=ТекНаименование;
Номенклатура.Записать();
КонецЕсли;
Rs.MoveNext();
КонецЦикла;
Rs=0;
Соединение=0;
Исключение
Предупреждение(ОписаниеОшибки());
Соединение=0;
КонецПопытки;
КонецПроцедуры"
15.07.2011
15:39
#2
И сразу если можно подскажите... что дописать что бы не только "наименования перекидывались" а еще и "код". что бы он КОД не сам подставлял следующий, а брал из SQL базы этот код и писал.
18.07.2011
11:04
#4
"путь написать ;))
Но тут то он есть.. Справочник.Номенклатура..
А как показать 1с что нужно пихать данные еще после этого в папку я не знаю"
Но тут то он есть.. Справочник.Номенклатура..
А как показать 1с что нужно пихать данные еще после этого в папку я не знаю"
18.07.2011
11:12
#5
"Установить код:
Запись в папку:
... "Выбранную папку" думаю как-нибудь сам определишь."
ТекКод=СокрЛП(Rs.Fields("CODE").Value);Номенклатура.Код=ТекКод; Запись в папку:
Номенклатура=СоздатьОбъект("Справочник.Номенклатура");Номенклатура.ИспользоватьРодителя(ВыбраннаяПапка); Если Номенклатура.НайтиПоНаименованию(ТекНаименование,1,1)=0 Тогда
... "Выбранную папку" думаю как-нибудь сам определишь."
18.07.2011
12:22
#6
Лучше в форме обработки по загрузке сделать поле ввода, в котором выбирать нужную папку. В противном случае придется искать эту папку по наименованию или коду.
18.07.2011
12:33
#7
"// выбор папки
ПапкаДляНовых = СоздатьОбъект("Справочник.Номенклатура");
ПапкаДляНовых.НайтиПоНаименованию("<имя папки>");
ТекКод=СокрЛП(Rs.Fields("<имя поля кода>").Value);
Номенклатура.Новый();
Номенклатура.ИспользоватьРодителя(ПапкаДляНовых);
Номенклатура.Код = ТекКод;"
ПапкаДляНовых = СоздатьОбъект("Справочник.Номенклатура");
ПапкаДляНовых.НайтиПоНаименованию("<имя папки>");
ТекКод=СокрЛП(Rs.Fields("<имя поля кода>").Value);
Номенклатура.Новый();
Номенклатура.ИспользоватьРодителя(ПапкаДляНовых);
Номенклатура.Код = ТекКод;"
18.07.2011
13:40
#8
"Rs = CreateObject("ADODB.RecordSet");
Rs = Cmd.Execute;
Для i = 1 по Rs.RecordCount Цик
ТекНаименование=СокрЛП(Rs.Fields("HH123").Value);
Я после этой строчки пишу про КОД
ТекКод=СокрЛП(Rs.Fields("<имя поля кода>").Value);
Вот так вот ?
я правильно понял ???"
Rs = Cmd.Execute;
Для i = 1 по Rs.RecordCount Цик
ТекНаименование=СокрЛП(Rs.Fields("HH123").Value);
Я после этой строчки пишу про КОД
ТекКод=СокрЛП(Rs.Fields("<имя поля кода>").Value);
Вот так вот ?
я правильно понял ???"
Читают тему
(гостей: 1)