Публикации

БСП
Разработки

Найдено результатов: 7


Запрос в SQL базу

Получение результата запроса из SQL в таблицу значений
ChOP 27 5
// Возвращает результат запроса в таблице значений.
//
// Параметры:
//  Connection	 - COMОбъект("ADODB.Connection"), коннект к бд (необязательный).
//  SQLText      - текст, текст запроса.
//  ДанныеДляПодключения - структура, формируется в СоздатьДанныеДляПодключения() (необязательный).
//
Функция ПолучитьРезультатЗапроса(SQLText, ДанныеДляПодключения = Неопределено, Connection = Неопределено) Экспорт
	
	Если Connection = Неопределено Тогда
		Connection = НовоеСоединениеССУБД(ДанныеДляПодключения);
	КонецЕсли;
	
	RecordSet                = Новый ComObject("ADODB.RecordSet");
	RecordSet.CursorLocation = 3;
	RecordSet.LockType       = 3;
	
	Попытка
		
		RecordSet.Open(SQLText, Connection);
		
		ТЗ = Новый ТаблицаЗначений;
		КоличествоПолей = RecordSet.Fields.Count;
		
		Для НомерСтолбца = 0 По КоличествоПолей - 1 Цикл // Создание и добавление колонок во временную таблицу
			
			ИмяСтолбца = RecordSet.Fields.Item(НомерСтолбца).Name;
			ТЗ.Колонки.Добавить(RecordSet.Fields.Item(НомерСтолбца).Name, SQLТипВ1СТип(RecordSet.Fields.Item(НомерСтолбца).Type, RecordSet.Fields.Item(НомерСтолбца).DefinedSize));
			
		КонецЦикла;
		
		Пока НЕ RecordSet.EOF Цикл // Заполнение созданной таблицы
			
			НоваяСтрока = ТЗ.Добавить();
			
			Для ПолеСч = 0 По КоличествоПолей - 1 Цикл
				
				Поле = RecordSet.Fields.item(ПолеСч);
				НоваяСтрока[Поле.name] = Поле.Value;
				
			КонецЦикла;
			
			RecordSet.MoveNext();
			
		КонецЦикла;
		
		RecordSet.Close();
		
	Исключение
		
		ЗаписьЖурналаРегистрации(НСтр("ru = 'Запрос в SQL базу " + ДанныеДляПодключения.ИмяБД + "'"), УровеньЖурналаРегистрации.Ошибка, , , "Ошибка выполнения запроса: " + SQLText + Символы.ПС + ОписаниеОшибки());
		ТЗ = Неопределено; 
		
	КонецПопытки;
	
	Возврат ТЗ;
	
КонецФункции

Функция НовоеСоединениеССУБД(ДанныеДляПодключения) Экспорт 
	
	Con = Новый COMОбъект("ADODB.Connection");
	СтрокаПодключения = "Provider=SQLOLEDB; Data Source=" + ДанныеДляПодключения.АдресСервера + ";Initial Catalog=" 
	+ ДанныеДляПодключения.ИмяБД + ";Persist Security Info=True;User ID=" + ДанныеДляПодключения.Логин + ";Password=" + ДанныеДляПодключения.Пароль;
	
	Попытка
		
		Con.ConnectionTimeOut = 15;
		Con.CommandTimeout = 220;
		Con.Open(СтрокаПодключения);
		
	Исключение
		
		ЗаписьЖурналаРегистрации(НСтр("ru = 'Соединение с SQL базой " + ДанныеДляПодключения.ИмяБД + "'"), УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
		Con = Неопределено;
		
	КонецПопытки;
	Возврат Con;
	
КонецФункции

Функция SQLТипВ1СТип(Num, size)
	
	ПараметрыСтроки = Новый КвалификаторыСтроки(size);
	
	Если
		Num = 20 Тогда
		Возврат Новый ОписаниеТипов("Число");
	ИначеЕсли
		Num = 128 Тогда
		Возврат Новый ОписаниеТипов("Булево");
	ИначеЕсли
		Num = 8 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки);
	ИначеЕсли
		Num = 136 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки);
	ИначеЕсли
		Num = 129 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки);
	ИначеЕсли
		Num = 7 Тогда
		Возврат Новый ОписаниеТипов("Дата");
	ИначеЕсли
		Num = 133 Тогда
		Возврат Новый ОписаниеТипов("Дата");
	ИначеЕсли
		Num = 134 Тогда
		Возврат Новый ОписаниеТипов("Дата");
	ИначеЕсли
		Num = 135 Тогда
		Возврат Новый ОписаниеТипов("Дата");
	ИначеЕсли
		Num = 14 Тогда
		Возврат Новый ОписаниеТипов("Число");
	ИначеЕсли
		Num = 0 Тогда
		Возврат Новый ОписаниеТипов("Строка,  , , , ПараметрыСтроки"); // adEmpty 0 no value
	ИначеЕсли
		Num = 3 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adInteger 3 4 - byte signed integer
	ИначеЕсли
		Num = 205 Тогда
		Возврат Новый ОписаниеТипов("Строка,  , , , ПараметрыСтроки"); // adLongVarBinary 205 Long binary value
	ИначеЕсли
		Num = 201 Тогда
		Возврат Новый ОписаниеТипов("Строка,  , , , ПараметрыСтроки"); // adLongVarChar 201 Long string value
	ИначеЕсли
		Num = 203 Тогда
		Возврат Новый ОписаниеТипов("Строка,  , , , ПараметрыСтроки"); // adLongVarWChar 203 Long Null - terminates string value
	ИначеЕсли
		Num = 131 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adNumeric 131 Number with fixed precision and scale
	ИначеЕсли
		Num = 5 Тогда
		Возврат Новый ОписаниеТипов("Число");
	ИначеЕсли
		Num = 4 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adSingle 4 Single - precision floating - point value
	ИначеЕсли
		Num = 2 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adSmallInt 2 2 - byte signed integer
	ИначеЕсли
		Num = 16 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adTinyInt 16 1 - byte signed integer
	ИначеЕсли
		Num = 21 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUnsignedBigInt 21 8 - byte unsigned integer
	ИначеЕсли
		Num = 19 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUnsignedInt 19 4 - byte unsigned integer
	ИначеЕсли
		Num = 18 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUnsignedSmallInt 18 2 - byte unsigned integer
	ИначеЕсли
		Num = 17 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUnsignedTinyInt 17 1 - byte unsigned integer
	ИначеЕсли
		Num = 132 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adUserDefined 132 User - defined variable
	ИначеЕсли
		Num = 204 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки); // adVarBinary 204 Binary value
	ИначеЕсли
		Num = 12 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adVariant 12 Automation variant
	ИначеЕсли
		Num = 139 Тогда
		Возврат Новый ОписаниеТипов("Число"); // adVarNumeric 139 Variable width exact numeric with signed scale
	ИначеЕсли
		Num = 202 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки); // adVarWChar 202 Null - terminated Unicode character string
	ИначеЕсли
		Num = 130 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки); // adWChar 130
	ИначеЕсли
		Num = 200 Тогда
		Возврат Новый ОписаниеТипов("Строка", , , , ПараметрыСтроки);
	Иначе
		Возврат Новый ОписаниеТипов("Строка");
	КонецЕсли;
	
КонецФункции

// Возвращает структуру с данными для НовоеСоединениеССУБД().
//
// Параметры:
//  АдресСервера	 - текст, адрес сервера.
//  ИмяБД      - текст, текст имя базы данных.
//  Логин - текст, логин.
//  Пароль - текст, пароль.
//
Функция СоздатьДанныеДляПодключения(АдресСервера, ИмяБД, Логин, Пароль) Экспорт
	
	ДанныеДляПодключения = Новый Структура("АдресСервера, ИмяБД, Логин, Пароль", АдресСервера, ИмяБД, Логин, Пароль);
	Возврат ДанныеДляПодключения;
	
КонецФункции

Подключение к Firebird

Firebird
JohnConnor 10 2
	Если ЭлементыФормы.ФайлИмпорта.Значение = "" Тогда
		Предупреждение("Неуказан файл");
		Возврат;
	КонецЕсли;
	СтрокаПодключения =  "Driver=Firebird/InterBase(r) driver;" ;
	СтрокаПодключения = СтрокаПодключения + "Dbname=Localhost:"+ ЭлементыФормы.ФайлИмпорта.Значение + ";";
	СтрокаПодключения = СтрокаПодключения + "UID=SYSDBA;PWD=masterkey;CHARSET=WIN1251";		
	// Подключаемся к базе данных 	
	Connection = Новый COMОбъект("ADODB.Connection");
	Connection.ConnectionTimeout = 15; 
	Connection.CursorLocation = 3;
	Connection.ConnectionString = СтрокаПодключения; 
	Connection.Open();
	Сообщить("Соединение успешно уставнолено !!!");

Импорт файла полного бэкапа из SQLExpress в LocalDB

bolsun 37 4
//Сначала выполняем запрос
RESTORE FILELISTONLY
FROM DISK = 'E:\DB\full_backup'

//Смотрим в результатах LogicalName, заменяем его и затем выполняем такой запрос

RESTORE DATABASE MyDatabase
FROM DISK = 'E:\DB\full_backup'

WITH MOVE 'LogicalName' TO 'E:\DB\MyDatabase.mdf',
MOVE 'LogicalName_log' TO 'E:\DB\MyDatabase_log.ldf',
REPLACE;

Добавить вертикальную черту к началу каждой строчки в тексте

Полезно, если надо перенести SQL запрос в код 1С и для прочих подобных ситуаций. В обработку добавить реквизиты "ТекстИсходный", "ТекстФорматированный". Вид полей формы "Поле текстового документа".
ChOP 27 5
&НаКлиенте
Процедура Форматировать(Команда)
	
	ТекстИсходный = СокрЛП(ТекстИсходный);
	ТекстФорматированный = "";
	
	Для Индекс = 1 По СтрЧислоСтрок(ТекстИсходный) Цикл
		
		ТекстФорматированный = ТекстФорматированный + "|" + СтрПолучитьСтроку(ТекстИсходный,Индекс) + Символы.ПС;
		
	КонецЦикла;
	
	ТекстФорматированный = СокрЛП(ТекстФорматированный);
	
КонецПроцедуры

ПроверитьМаксимальнуюДлинуПолногоПутиВРабочемКаталогеПослеПереносаСодержимогоРабочегоКаталога

Продолжение процедуры (см. выше).
ОбщийМодуль.РаботаСФайламиСлужебныйКлиент
Автор: 1С
// Продолжение процедуры (см. выше).
Процедура ПроверитьМаксимальнуюДлинуПолногоПутиВРабочемКаталогеПослеПереносаСодержимогоРабочегоКаталога(СодержимоеПеренесено, ПараметрыВыполнения) Экспорт
	
	Если СодержимоеПеренесено Тогда
		// Регистр сведений ФайлыВРабочемКаталоге - сейчас там полный путь к файлу -
		// надо его менять - выделять общую часть и replace. -просто SQL запросом -
		// для текущего пользователя.
		РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапкиИЗаменитьПутиВРегистре(
			ПараметрыВыполнения.ДанныеФайла.Владелец,
			ПараметрыВыполнения.ДанныеФайла.РабочийКаталогВладельца,
			ПараметрыВыполнения.ИмяКаталогаПрежнееЗначение);
	КонецЕсли;
	ВернутьРезультат(ПараметрыВыполнения.ОбработчикРезультата, СодержимоеПеренесено);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Определение пересечения интервалов в кольце

Вычисление пересекающихся интервалов в линейных и замкнутых пространствах имен Пусть есть две смены: одна с 20:00 до 8: 00, а вторая с 6:00 до 18:00. Пересекаются ли они? Ответ на данный конкретный вопрос вроде бы вполне очевиден, а вот сформулировать о...
FastCode 64 8

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз

Быстрое и надежное обновление файловых и серверных баз, защита от шифровальщиков, автоматическое обновление доработанных конфигураций и расширений, а также многое другое.
bolsun
950 руб.