Процедура заполняет WORD шаблон из СпискаЗначений Заполняет Вордовский шаблон из СпискаЗначений
Вставляется в виде обрабтки. При открытии передается СЗ первым значением идет WORD, в строковом представлеии наименование файла шаблона. Затем идентификаторы закладок (поля) в тексте шаблона - в представлении что подставить.
Сперва хотел сделать что-то универсальное Ворд-Ексель, а потом передумал. Отого такой первый параметр в списке значений
Код 1C v 7.x Процедура ПриОткрытии()
Перем Закладка, ТектВывода, сз;
СтатусВозврата(0);
сз = Форма.Параметр;
ФайлШаблон = ""; ОЛЕ_Объект = "";
Если ТипЗначенияСтр(сз)<>"СписокЗначений" Тогда
Сообщить("Для формирования документа передайте подготовленный список значений", "!!!"); Возврат;
ИначеЕсли сз.РазмерСписка()=0 Тогда
Сообщить("Для формирования документа передайте подготовленный список значений", "!!!"); Возврат;
Иначе
ФайлШаблон = сз.ПолучитьЗначение(1, ОЛЕ_Объект);
Если ВРег(ОЛЕ_Объект) <> "WORD" Тогда
Сообщить("OLE объект "+ОЛЕ_Объект+" не поддерживается", "!!!"); Возврат;
КонецЕсли;
Если ФС.СуществуетФайл(КаталогИБ()+"Шаблоны" + ФайлШаблон) = 0 Тогда
Сообщить("Нет файла - шаблона " + ФайлШаблон, "!!!"); Возврат;
КонецЕсли
КонецЕсли;
OLE = СоздатьОбъект(ОЛЕ_Объект+".Application");
OLE.Documents.Add(""""+КаталогИБ()+"Шаблоны" + ФайлШаблон + """");
Для Индекс = 2 по сз.РазмерСписка() цикл
ТекстВывода = сз.ПолучитьЗначение(Индекс, Закладка);
//Если OLE.ActiveDocument.Bookmarks(СокрЛП(Закладка)).Exists()=0 Тогда // Проверяем - существует ли закладка
// Сообщить("Не найдена закладка "+Закладка,"!!!" ); Продолжить;
//КонецЕсли;
Попытка
OLE.ActiveDocument.Bookmarks(СокрЛП(Закладка)).Select(); //выделим выбранную закладку
OLE.Selection.TypeText (СокрЛП(ТекстВывода)); // выведем на место выделения текст
Исключение
Сообщить("Не найдена закладка "+Закладка,"!!!" );
КонецПопытки;
КонецЦикла;
OLE.Visible=1; /// видимость - True
OLE.ActiveDocument.Activate(); /// активизировать!!!
OLE=""; /// ссылочку прибить
КонецПроцедуры
Автор:
GrayT Категория:
Работа с Microsoft Office и OpenOffice Получение списка баз 1С 7.7 из реестра Ниже приведено несколько способов получения списка баз 1С 7.7 из реестра:
Код получения списка баз 1С 7.7 из 8.х
Код 1C v 8.х функция сзПолучитьСписокБаз()
попытка
олеСкрипт = новый COMОбъект("MSScriptControl.ScriptControl");
олеСкрипт.Language = "VBScript";
стрКод =
"function strGetListBase()
| const RootKey = &H80000001
| set Reg = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\."" &_
| ""\root\default:StdRegProv"")
| PathKey = ""Software\1C\1Cv7\7.7\Titles""
| Reg.EnumValues RootKey, PathKey, Arr
| Answer = ""{""""#"""",4772b3b4-f4a3-49c0-a1a5-8cb5961511a3,"" & chr(10)
| Answer = Answer & ""{3,1e512aab-1b41-4ef6-9375-f0137be9dd91,0,0,"" & chr(10)
| Answer = Answer & ""{"" & (UBound(Arr) + 1) & "","" & chr(10)
| for x = LBound(Arr) to UBound(Arr)
| call Reg.GetStringValue(RootKey, PathKey, Arr(x), Value)
| Answer = Answer & ""{1e512aab-1b41-4ef6-9375-f0137be9dd91,"" & chr(10) &_
| ""{"""""" & replace(Value, """""""", """""""""""") & """""",0,"" &_
| chr(10) & ""{""""S"""","""""" & Arr(x)& """"""},"" &_
| chr(10) & ""{3,0,"" & chr(10) & ""{0},"""""""",-1,-1,0,0}"" &_
| chr(10) & ""}"" & chr(10) & ""}""
| if x <> UBound(Arr) then Answer = Answer & "",""
| Answer = Answer & chr(10)
| next
| Answer = Answer & ""},"" & chr(10) & ""{""""Pattern""""}"" & chr(10) &_
| ""}"" & chr(10) & ""}""
| strGetListBase = Answer
|end function";
олеСкрипт.AddCode(стрКод);
стрОтвет = олеСкрипт.Run("strGetListBase");
Ответ = ЗначениеИзСтрокиВнутр(стрОтвет);
Ответ.СортироватьПоПредставлению();
исключение
Ответ = новый СписокЗначений;
Ответ.Добавить("Базы 1С:Передприятия 7.7 не обнаруженны!");
конецпопытки;
возврат Ответ;
конецфункции
Код для 1С 7.7
Код 1C v 7.x
Функция ПолучитьСписокБаз1()
Перем Value,arrValues;
Scr = CreateObject("MSScriptControl.ScriptControl");
Scr.Language = "vbscript";
Scr.Timeout=-1;
HKEY_CURRENT_USER = 2147483649;
strKeyPath = "Software\1C\1Cv7\7.7\Titles";
Locator=СоздатьОбъект("WbemScripting.SWbemLocator");
ServiceDef=Locator.ConnectServer(".","root\default");
oReg = ServiceDef.Get("StdRegProv");
Dict=СоздатьОбъект("Scripting.Dictionary");
Scr.AddObject("Dict",Dict);
Scr.AddObject("oReg",oReg);
Scr.ExecuteStatement("dim arrValues,Value:");
Scr.ExecuteStatement("oReg.EnumValues "+HKEY_CURRENT_USER+","""+strKeyPath+""",arrValues:");
Scr.ExecuteStatement("for i=lbound(arrValues) to ubound(arrValues):Dict.add ""pj"" & i, arrValues(i):next ");
ТЗБаз=СоздатьОбъект("ТаблицаЗначений");
ТЗБаз.НоваяКолонка("Путь");
ТЗБаз.НоваяКолонка("Описание");
Для к=0 По Dict.count Цикл
Д=Dict.Item("pj"+к);
Scr.ExecuteStatement("oReg.GetStringValue "+HKEY_CURRENT_USER+","""+strKeyPath+""","""+Д+""",Value");
ТЗБаз.НоваяСтрока();
ТЗБаз.Путь = Д;
ТЗБаз.Описание = Scr.eval("Value");
КонецЦикла;
//Посмотрим что в ТЗ
//ТЗБаз.ВыбратьСтроку();
Возврат ТЗБаз;
КонецФункции
Процедура ПолучитьСписокБаз2()
Попытка
scrptCtrl=createobject("MSScriptControl.ScriptControl");
scrptCtrl.language="vbscript";
scrptCtrl.addcode("Function Get1CV77Titles()
|const HKEY_CURRENT_USER = &H80000001
|Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\\."" &_
|""\root\default:StdRegProv"")
|strKeyPath = ""Software\1C\1Cv7\7.7\Titles""
|oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues
|strInfo=vbNullString
|For i = LBound(arrValues) To UBound(arrValues)
| call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)
| strInfo=strInfo & arrValues(i) & ""="" & Value & vbCrLF
|Next
|Get1CV77Titles = strInfo
|End Function");
Сообщить(scrptCtrl.run("Get1CV77Titles"));
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
<Сообщил Gloom>
Процедура ПолучитьСписокБаз3()
Ключ="HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles";
ИмяКаталога=СокрЛП(КаталогПользователя());
ИмяБазы=СокрЛП(каталогИБ());
Если прав(ИмяКаталога,1)<>"\" Тогда ИмяКаталога=ИмяКаталога+"\" КонецЕсли;
Если прав(ИмяБазы,1)<>"\" Тогда ИмяБазы=ИмяБазы+"\" КонецЕсли;
ИмяБазыСтр=Симв(34)+СтрЗаменить(ИмяБазы,"\","\\")+Симв(34);
ИмяФайла="USER.TXT";
Команда="Regedit /ea "+Симв(34)+ИмяКаталога+ИмяФайла+Симв(34)+" "+Симв(34)+Ключ+Симв(34);
КомандаСистемы(Команда);
Текст=СоздатьОбъект("Текст");
Текст.КодоваяСтраница(0);
Текст.Открыть(ИмяКаталога+ИмяФайла);
Текст.Показать();
Стр=""; Нашли=0;
Для сч=1 по Текст.КоличествоСтрок() Цикл
Стр=СокрЛП(Текст.ПолучитьСтроку(сч));
Сообщить(Стр);
Если Найти(стр,ИмяБазыСтр)<>0 Тогда
Нашли=1;
прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Категория:
COM-объекты, WMI, WSH Скрипт переиндексации базы Код VBS Set Sh = CreateObject("WScript.Shell")
'Переиндексирую базу
Set oExec1 = Sh.Exec("""C:\Program Files\1Cv77\BIN\1cv7.exe"" CONFIG /d""C:\bases2005"" /nПрограммист /pXXXXX /@c:\bases2005\Ext Forms\sys\Chk.txt")
'Дожидаюсь, пока она не отработает
Do While oExec1.Status = 0
WScript.Sleep 100
Loop
Set oExec1 = Nothing
WScript.Sleep 10000 Категория:
COM-объекты, WMI, WSH Получение списка компьютеров сети (домена) Код 1C v 7.x
спКомп = СоздатьОбъект("СписокЗначений");
Попытка
ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode("
|Function GetComputers()
| Set WinNT = GetObject(""WinNT:"")
| WinNT.Filter = Array(""domain"")
| For Each Domain In WinNT
| Set ADSI = GetObject(""WinNT://"" & Domain.Name)
| ADSI.Filter = Array(""computer"")
| For Each Comp In ADSI
| strInfo=strInfo & Domain.Name & "";"" & Comp.Name & vbCrLf
| Next
| Next
| GetComputers = strInfo
|End Function
|");
Текст=СокрЛП(ScrptCtrl.Run("GetComputers"));
ScrptCtrl = "";
Исключение
Предупреждение(ОписаниеОшибки());
Возврат;
КонецПопытки;
Для Индекс=1 по СтрКоличествоСтрок(Текст) Цикл
СтрТекста=СтрПолучитьСтроку(Текст,Индекс);
Разделитель=Найти(СтрТекста,";");
Домен=Лев(СтрТекста,Разделитель-1);
Компьютер=Прав(СтрТекста,СтрДлина(СтрТекста)-Разделитель);
спКомп.ДобавитьЗначение(Компьютер,Домен+""+Компьютер);
КонецЦикла;
спКомп.Сортировать();
Код 1C v 8.х
спКомп = Новый СписокЗначений;
Попытка
ScrptCtrl= Новый COMОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode("
|Function GetComputers()
| Set WinNT = GetObject(""WinNT:"")
| WinNT.Filter = Array(""domain"")
| For Each Domain In WinNT
| Set ADSI = GetObject(""WinNT://"" & Domain.Name)
| ADSI.Filter = Array(""computer"")
| For Each Comp In ADSI
| strInfo=strInfo & Domain.Name & "";"" & Comp.Name & vbCrLf
| Next
| Next
| GetComputers = strInfo
|End Function
|");
Текст=СокрЛП(ScrptCtrl.Run("GetComputers"));
ScrptCtrl = "";
Исключение
Предупреждение(ОписаниеОшибки());
Возврат;
КонецПопытки;
Для Индекс=1 по СтрЧислоСтрок(Текст) Цикл
СтрТекста=СтрПолучитьСтроку(Текст,Индекс);
Разделитель=Найти(СтрТекста,";");
Домен=Лев(СтрТекста,Разделитель-1);
Компьютер=Прав(СтрТекста,СтрДлина(СтрТекста)-Разделитель);
спКомп.Добавить(Компьютер,Домен+""+Компьютер);
КонецЦикла;
спКомп.СортироватьПоПредставлению();
//Выберем комп
спКомп.ВыбратьЭлемент();
Категория:
COM-объекты, WMI, WSH Открытие интернет страницы в Internet Explorer Код 1C v 8.х
СтрокаПоиска="1c-ovec.ru"
АдресПоиска="http://www.yandex.ru/yandsearch?text ="+СтрокаПоиска;
//Пример через COMОбъект
ИЕ = Новый COMОбъект("InternetExplorer.Application");
ИЕ.Navigate(АдресПоиска);
ИЕ.Visible = 1;
Пока ИЕ.ReadyState<>4 Цикл
ОбработкаПрерыванияПользователя();;
КонецЦикла;
//Хотя проще будет так:
ЗапуститьПриложение(АдресПоиска);
Категория:
COM-объекты, WMI, WSH Как переиндексировать все пользовательские таблицы? Код SQL CREATE PROCEDURE sp_DBReindex AS
SET NOCOUNT ON
DECLARE @TableName char(32)
DECLARE SysCur CURSOR FOR S_elect name FROM sysobjects WHERE type='U'
OPEN SysCur
FETCH NEXT FROM SysCur INTO @TableName
WHILE @@FETCH_STATUS=0
BEGIN
DBCC DBREINDEX(@TableName)
FETCH NEXT FROM SysCur INTO @TableName
END
CLOSE SysCur
DEALLOCATE SysCur Категория:
Администрирование V8 Reader : Viewer for 1C:Enterprise v8 ext ernal modules Просмотр внешних модулей 1С:Предприятие 8, таких как внешние обработки и внешние отчеты.Интегрируется в Windows, ассоциируется с отчетами и...
Просмотр внешних модулей 1С:Предприятие 8, таких как внешние обработки и внешние отчеты.
Интегрируется в Windows, ассоциируется с отчетами и обработками 1С Может открывать файлы, модули, формы и макеты. Может сравнивать содержимое файлов, метаданные, модули и макеты. Несколько скринов
Основное окно программы:
Режим просмотра обработки
Режим просмотра / правки кода
Режим сравнения файлов
Автор: Андрей Овсянкин | Страница проекта: на sourceforge
Категория:
Инструменты программиста