Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Прямой доступ к базе данных 77 из 8ки , 7.7, 8.х          
mister-x Подменю пользователя
сообщение 21.04.11, 14:38
Сообщение #1

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Иногда бывает необходимость, получить какие то данные из 77 для того, что бы видеть всю историю работы до перехода на в 8ку. Вот один из моих вариантов получения данных из архивных баз 77.
База данных 77 на SQL.

P.S. 77-Комплексная


Перем СоединениеБазы    Экспорт;





Процедура КнопкаСформироватьНажатие(Кнопка)

   СоединениеБазы = Новый COMОбъект("ADODB.Connection");

driver="SQL Server";

server="192.168.0.251";

login="sasa";

password="password";

base="dbase77";

ConnectionString = "driver={"+driver+"}; Server="+server+"; uid="+login+"; Pwd="+password+"; Database ="+base+";";

успешныйконект=ложь;

Попытка

СоединениеБазы.Open(ConnectionString);

успешныйконект=истина;

Исключение

успешныйконект=ложь;

КонецПопытки;

КонецПроцедуры



Процедура Кнопка1Нажатие(Элемент)

БДдбоКН="dbase77.dbo.";

Command = Новый COMОбъект("ADODB.Command");

Command.ActiveConnection = СоединениеБазы;

ТзЗапроса= Новый ТаблицаЗначений;

Артикул="1.1.1";

НачалоПериода="01.01.2010";

КонецПериода="01.12.2010";

query="SELECT Журнал.DOCNO Документ_ном

|, NullIf(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата

|, Заявка.sp15113 Контрагент

|, Контрагенты.DESCR КонтрагентыНаименование

|, Номенклатура.sp19714 Артикул

|, ЗаявкаСтроки.IDDOC Ссылка

|, ЗаявкаСтроки.sp15118 Товар

|, ЗаявкаСтроки.sp15119 Количество

|, ЗаявкаСтроки.sp15122 Цена

|, ЗаявкаСтроки.sp19743 Сумма

|, ПоступлениеТоваров.IDDOC ПоступлениеТоваровСсылка

|, РеализацияПродукции.IDDOC РеализацияПродукцииСсылка

|, РеализацияПродукцииСтроки.sp2993 РеализацияПродукцииСтрокиТовар

|, РеализацияПродукцииСтроки.sp2994 КоличествоПродано

|, РеализацияПродукцииСтроки.sp2995 ЦенаРеал

|, РеализацияПродукцииСтроки.sp3028 СуммаРеал

|FROM "+БДдбоКН+"dt15124 AS ЗаявкаСтроки With (NOLOCK)

|INNER JOIN"+БДдбоКН+"_1SJOURN AS Журнал With (NOLOCK) ON ЗаявкаСтроки.IDDOC = Журнал.IDDOC

|INNER JOIN "+БДдбоКН+"dh15124 AS Заявка With (NOLOCK) ON ЗаявкаСтроки.IDDOC = Заявка.IDDOC

| INNER JOIN "+БДдбоКН+"sc4089 AS Номенклатура With (NOLOCK) ON ЗаявкаСтроки.sp15118 = Номенклатура.ID

|INNER JOIN "+БДдбоКН+"sc488 AS Контрагенты With (NOLOCK) ON Заявка.sp15113 = Контрагенты.ID

|LEFT OUTER JOIN "+БДдбоКН+"dh2975 AS ПоступлениеТоваров With (NOLOCK) ON ' BO4' + ЗаявкаСтроки.IDDOC = ПоступлениеТоваров.sp17090

|RIGHT OUTER JOIN "+БДдбоКН+"dh2988 AS РеализацияПродукции With (NOLOCK) ON РеализацияПродукции.sp17090 = ' 2AN' + ПоступлениеТоваров.IDDOC

|FULL OUTER JOIN"+БДдбоКН+"dt2988 AS РеализацияПродукцииСтроки With (NOLOCK) ON РеализацияПродукции.IDDOC = РеализацияПродукцииСтроки.IDDOC AND ЗаявкаСтроки.sp15118 = РеализацияПродукцииСтроки.sp2993

|LEFT OUTER JOIN"+БДдбоКН+"_1SJOURN AS Журнал1 With (NOLOCK) ON РеализацияПродукции.IDDOC = Журнал1.IDDOC

|WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= N'"+НачалоПериода+"')

|AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= N'"+КонецПериода+"')

|AND ((Журнал.CLOSED & 1) = 1)

|AND (Журнал.ISMARK = 0)

|AND (Номенклатура.sp19714 = N'"+Артикул+"')

|AND ((Журнал1.CLOSED & 1) = 1)

|AND (Журнал1.ISMARK = 0)";

Command.CommandText = query; // текст надо фильтровать на недопустимые символы        

RecordSet = Новый COMОбъект("ADODB.RecordSet"); // Подготавливаем записи

RecordSet = Command.Execute(); //Выполнение и получение набора данных

Если RecordSet.EOF() Тогда

иначе

RecordSet.MoveFirst();

инд=-1;

Пока RecordSet.EOF() = 0 Цикл

инд=инд+1;

Заказать=СокрЛП(RecordSet.Fields(RecordSet.Fields.Item("Количество").Name).Value);

Попытка Заказать=Число(Заказать); исключение Заказать=0;Конецпопытки;

ДатаДокумента=СокрЛП(RecordSet.Fields(RecordSet.Fields.Item("Документ_дата").Name).Value);

СтрРасшифровки=ТзЗапроса.Добавить();

СтрРасшифровки.Заказано=Заказать;

RecordSet.MoveNext();  

КонецЦикла;

КонецЕсли;

RecordSet.Close(); // После того, как набор записей уже не нужен, его нужно закрыть        

RecordSet = Неопределено;

Command = Неопределено;

КонецПроцедуры



Стаття [необходимо зарегистрироваться для просмотра ссылки]


Сообщение отредактировал mister-x - 21.04.11, 14:39

Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 19:00
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!