Получения новостей с RSS-канала сайта buh.ru Код для получения новостей с сайта buh.ru, используется RSS-канал http://www.buh.ru/rss/rss-2.0.jsp
Данный код для 7.7, при использовании в 8-ой версии нужно заменить СоздатьОбъект( на Новый COMОбъект(, остальное вроде так же.
Код 1C v 7.x
Функция ВытащитьДату(Стр)
парсер=СоздатьОбъект("VBScript.RegExp");
парсер.Global=-1;
парсер.IgnoreCase =-1;
стрМес="Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec";
парсер.Pattern="(\d\d)\s(("+стрМес+"))\s(\d{4})";
рез = парсер.Execute(Стр);
Если рез.Count>0 Тогда
рез_ = рез.Item(0);
чч=Число(рез_.Submatches(0));
мст=рез_.Submatches(1);
где=Найти(стрМес,мст);
мм=цел(где/4)+1;
гг=Число(рез_.Submatches(3));
дат=Дата(гг,мм,чч);
Иначе
дат=0;
КонецЕсли;
Возврат дат;
КонецФункции
Процедура Сформировать()
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("ИД","Число");
ТЗ.НоваяКолонка("Дата","Дата");
ТЗ.НоваяКолонка("Заголовок","Строка");
ТЗ.НоваяКолонка("Ссылка","Строка");
ТЗ.НоваяКолонка("Текст","Строка");
Состояние("Получение данных с сайта www.buh.ru");
//ТаймАут поставьте в зависимости от качества подключения
ТаймАут=100000;
IE=СоздатьОбъект("InternetExplorer.App lication");
IE.navigate("http://www.buh.ru/rss/rss-2.0.jsp");
Пока IE.readyState<4 Цикл
ТаймАут=ТаймАут-1;
Если ТаймАут=0 Тогда
Предупреждение("Не удалось получить данные с сайта www.buh.ru",10);
Возврат;
КонецЕсли;
КонецЦикла;
//версия 0.1 для v7plus.dll
//ХМЛ=СоздатьОбъект("AddIn.XMLParser");
//ХМЛДок=ХМЛ.СоздатьДокумент();
//ХМЛДок.Загрузить(oIE.document.XMLDocument);
//Выборка=ХМЛДок.ВыбратьУзлы("//item");
//Для ии=0 По Выборка.КоличествоУзлов()-1 Цикл
// ЭлНовость=Выборка.ПолучитьУзел(ии);
// ТЗ.НоваяСтрока();
// ТЗ.Дата=ВытащитьДату(ЭлНовость.ВыбратьУзел("./pubDate").Текст);
// ТЗ.Заголовок=ЭлНовость.ВыбратьУзел("./title").Текст;
// ТЗ.Ссылка=ЭлНовость.ВыбратьУзел("./link").Текст;
// ТЗ.Текст=ЭлНовость.ВыбратьУзел("./description").Текст;
//КонецЦикла;
//версия 0.2 для MSXML
ХМЛДок=СоздатьОбъект("MSXML2.DOMDocument");;
ХМЛДок.async=0;
ХМЛДок.resolveExternals=0;
ХМЛДок.load(IE.document.XMLDocument);
Выборка=ХМЛДок.selectNodes("//item");
Для ии=0 По Выборка.length-1 Цикл
ЭлНовость=Выборка.item(ии);
ТЗ.НоваяСтрока();
ТЗ.Дата=ВытащитьДату(ЭлНовость.selectSingleNode("./pubDate").text);
ТЗ.Заголовок=ЭлНовость.selectSingleNode("./title").text;
ТЗ.Ссылка=ЭлНовость.selectSingleNode("./link").text;
ТЗ.Текст=ЭлНовость.selectSingleNode("./description").text;
КонецЦикла;
//Все. Мы получили ТЗ с последними новостями
КонецПроцедуры
К сожалению, автор не известен.
Категория:
COM-объекты, WMI, WSH Пример обращения к программе 1С:Предприятие из модуля MS Excel В данном примере запускается и инициализируется конфигурация 1С:Предприятие 8.0 с базой данных в каталоге D:\1CBasa.
Далее в программе 1С:Предприятие 8.0 создается объект типа "СправочникМенеджер.Товары" и создается новая группа элементов с названием "***** Экспорт из Excel ******".
Во вновь созданную группу каталога записываются данные из таблицы MS Excel.
Пример представлен на языке MS Visual Basic:
Код VBS Sub Excel_to_trade()
Dim trade As Object
Dim Элемент As Object
Set trade = CreateObject("V8.App lication")
trade.Connect("File=""D:\1CBasa"";Usr=""Director"";")
Set СправочникТоваров = trade.Справочники. Товары
Set ГруппаТоваров = СправочникТоваров.СоздатьГруппу()
ГруппаТоваров.Наименование = "***** Экспорт из Excel ******"
ГруппаТоваров.Записать
N = 100 'Количество строк в документе
For Count = 1 To N
Set Элемент = СправочникТоваров.СоздатьЭлемент()
Элемент.Наименование = App lication.Cells(Count, 2).Value
Элемент.Розн_Цена = App lication.Cells(Count, 3).Value
Элемент.Мел_Опт_Цена = App lication.Cells(Count, 4).Value
Элемент.Опт_Цена = App lication.Cells(Count, 5).Value
Элемент.Родитель = ГруппаТоваров.Ссылка
Элемент.Записать
Next Count
End Sub
Категория:
Работа с Microsoft Office и OpenOffice Запись СД из 1С(без ВК и других программ, проверено на ХР/2003) Код 1C v 7.x
Процедура Сформировать(ДискДляЗаписи="E:\",АвтоИзвлечениеСД=0,АвтоЗакрытиеМастера=1)
Перем Имя,Каталог;
scr=СоздатьОбъект("MSScriptControl.ScriptControl");
scr.language="javascript";
shell=СоздатьОбъект("Shell.App lication");
scr.AddObject("Shell",shell);
ИмяСлужбы="ImapiService";
Если Shell.CanStartStopService(ИмяСлужбы)=0 Тогда
Предупреждение("Вам недозволено записывать диски СД!",5);
Возврат;
КонецЕсли;
scr.Eval("Shell.ServiceStart('"+ИмяСлужбы+"',true)");
РасположениеФайла(Каталог,Имя);
Если ФС.ВыбратьФайл(0,Имя,Каталог,"Выбирите файл для записи","Все файлы|*.*","*")=0 Тогда
Возврат;
КонецЕсли;
fso=СоздатьОбъект("Scripting.FileSystemObject");
wshshell=СоздатьОбъект("WScript.Shell");
КаталогДляЗаписи=wshshell.regread("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\CD Burning");
fso.CopyFile(Каталог+Имя,КаталогДляЗаписи+"\"+Имя,-1);
ДискДляЗаписиNS=shell.NameSpace(ДискДляЗаписи);
wshshell.regwrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CD Burning\Auto Eject",АвтоИзвлечениеСД,"REG_DWORD");
wshshell.regwrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CD Burning\Auto Close",АвтоЗакрытиеМастера,"REG_DWORD");
scr.AddObject("Verbs",ДискДляЗаписиNS.items().item().verbs());
e=scr.Eval("new Enumerator(Verbs)");
Пока e.atEnd(0)=0 Цикл
Если Найти(Нрег(e.item(0).name),"записать файлы на компакт-диск")>0 Тогда
e.item(0).doit();
Пока wshshell.app activate("Мастер записи компакт-дисков")=0 Цикл
КонецЦикла;
wshshell.sendkeys("{ENTER}")
КонецЕсли;
e.moveNext(0);
КонецЦикла;
Пока wshshell.app activate("Мастер записи компакт-дисков")=-1 Цикл
ВвестиСтроку("","Пауза",1,0,1);
КонецЦикла;
КонецПроцедуры
Конечно метод дубовенький, расчитан тока на русскую версию, но можно и допеределать.
Не стал писать код определения пишущего сидирома и возможности записи (хотя на отсутствие диска или невозможность записать ОС сама укажет)...
Автор:
smaharbA
А через Nero можно записать так:
Код DOS Batch File
"C:\Program Files\Ahead\Nero\NeroCmd.exe" --no_user_interaction --write --real --iso Archive_1C --drivename M --force_erase_cdrw --dvd --dvd_high_compatibility --close_session --verify E:\Full_Archive_1C\*.* >H:\BackUp\Log\write.log
Категория:
Полезные, Универсальные Функции Как выгрузиться в EXCEL со сводными таблицами Пошаговый рабочий алгоритм выгрузки в EXCEL на примере выгрузки отчетов производства за смену(Автор статьи:
Funny ):
(1) Нарисовать форму обработки и к кнопке запуска прицепить процедуру:
Код 1C v 8.х Процедура КнопкаВыполнитьНажатие(Кнопка)
Если ПроверкаДат() Тогда
Состояние("Запущена выгрузка данных");
ПолучитьДанныеВТаблице();
Если чОтчетов<>0 Тогда
СортироватьТаблицу();
ВыгрузитьТаблицуВФайл();
ЗакрытьСистему();
Состояние("Выгрузка завершена");
Иначе
//ЗакрытьСистемуАварийно();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
(2) Создадим функцию ПроверкаДат() корректного указания дат обработки
(3) Создадим процедуру ПолучитьДанныеВТаблице() выборки требуемых данных из документов в таблицу значений
(4) Создадим процедуру СортироватьТаблицу() для сортировки таблицы значений как нам нужно
(5) Создадим процедуру ВыгрузитьТаблицуВФайл() выгрузки ТЗ в Excel-файл:
Код 1C v 8.х Процедура ВыгрузитьТаблицуВФайл()
//1. Open Excel-file
Если FileOfReports = Неопределено Тогда
Попытка
FileOfReports = Новый COMОбъект("Excel.App lication");
MyBook=FileOfReports.WorkBooks.Add(истина); //вместо истина можно вставить имя шаблона
FirstSheet=MyBook.Worksheets(1);
FirstSheet.Name = ОпределитьДату(НачПериода)+"-"+ОпределитьДату(КонПериода);
FirstSheet.Activate();
MyBook.SaveAs(КаталогDBF+"ОтчетыПроизводства.xls");
Исключение
Сообщить("ОШИБКА ЗАПИСИ В EXCEL-ФАЙЛ:"+ОписаниеОшибки());
Сообщить("Совет: Возможно файл, в который должна быть произведена запись, Вами открыт для просмотра");
Сообщить("Если это так, то закройте файл и запустите данную обработку повторно!");
КонецПопытки;
FileOfReports.Visible = 0;
Иначе
FileOfReports.Visible = 0;
//FileOfReports.Visible = 1;
КонецЕсли;
//2.=========================================================================
//Состояние("Анализ структуры файла...");
чОтчетов = ТаблицаОтчетов.Количество();
ЭлементыФормы.ИндикаторЗагрузки.МинимальноеЗначение = 0;
ЭлементыФормы.ИндикаторЗагрузки.МаксимальноеЗначение = чОтчетов;
ЭлементыФормы.Logo.Заголовок = "Выгружаю документы";
лСчетчикИндикатора = 0;
ВыгрузитьЗаголовокТаблицы(26);
//ВЫГРУЖАЮ ТАБЛИЦУ В ФАЙЛ ПО СТРОКАМ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
фСтарт=истина; //флаг первого прохода
чОт=2; //номер первой строки с данными
Пока чОтчетов >= 1 Цикл //Цикл по строкам Таблицы отчетов
чОтчетов = чОтчетов -1;
СтрокаОтчетов = ТаблицаОтчетов.Получить(чОтчетов);
Если (СтрокаОтчетов.ДатаВыпуска=ДатаВыпускаПред)
И (СтрокаОтчетов.Принадлежность=ПринадлежностьПред)
И (СтрокаОтчетов.Типоразмер=ТипоразмерПред)
И (СтрокаОтчетов.ТипОсновы=ТипОсновыПред)
Тогда
Иначе
ДатаВыпускаПред=СтрокаОтчетов.ДатаВыпуска;
ПринадлежностьПред=СтрокаОтчетов.Принадлежность;
ТипоразмерПред=СтрокаОтчетов.Типоразмер;
ТипОсновыПред=СтрокаОтчетов.ТипОсновы;
Если фСтарт Тогда
фСтарт = ложь; //Уже не первый проход
Иначе
чДо=глСчетчикСтрок;
ВыгрузитьСтрокуИтог(чОт,чДо,26);
КонецЕсли;
чОт=глСчетчикСтрок;
КонецЕсли;
ВыгрузитьСтрокуОтчетовВФайл(СтрокаОтчетов,26);
лСчетчикИндикатора = лСчетчикИндикатора + 1;
ЭлементыФормы.ИндикаторЗагрузки.Значение = лСчетчикИндикатора;
ОбработкаПрерыванияПользователя();
КонецЦикла;
чДо=глСчетчикСтрок;
ВыгрузитьСтрокуИтог(чОт,чДо,26);
//КОНЕЦ ВЫГРУЗКИ СТРОК В ФАЙЛ
Состояние("Данные файла выгружены");
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libСообщитьНК1("ИНФО: ШАГ 1 ВЫПОЛНЕН. Данные файла Отчеты.DBF успешно считаны",1);
//Состояние("Создание сводных таблиц");
ЭлементыФормы.Logo.Заголовок = "Создание сводных таблиц";
//РазделитьОбласти();
//Range("A2").S_elect
//ActiveWindow.FreezePanes = True
СоздатьТаблицуЛист(MyBook.Worksheets(1).Name,"наим","Дата","Наим","","К");
СоздатьТаблицуЛист(MyBook.Worksheets(1).Name,"ЮВ","Дата","Наим,Каркас,Вид","","К");
СоздатьТаблицуЛист(MyBook.Worksheets(1).Name,"В пр(2)","Дата","Наим,Каркас,Основа","","К");
СоздатьТаблицуЛист(MyBook.Worksheets(1).Name,"В пр","Дата","Каркас,Основа","","К");
СоздатьТаблицуЛист(MyBook.Worksheets(1).Name,"Основа","Дата","Основа","","кг основы");
СоздатьТаблицуЛист(MyBook.Worksheets(1).Name,"Напыление","","Напылен","","кг напылен");
СоздатьТаблицуЛист(MyBook.Worksheets(1).Name,"Клей","","Дата","","кг клея");
КонецПроцедуры
Процедура СоздатьТаблицуЛист(стрДанные,стрСводнаяТаблица,стрПоле1,стрПоле2,стрПоле3,стрПоле4);
//Создает сводную таблицу стрСводнаяТаблица с полями (стрПоле4 - поле реквизита)
//и размещает ее на одноименном листе
//Заполняет сводную таблицу данными, взятыми с листа стрДанные
//Поле стрПоле2 может быть полем списка через запятую
//0. Вспомогательный разбор списка значений в стрПоле2 и определение числа значений
лПоля.Очистить(); //сбросим все значения, если таковые весели в памяти
стрПоля=стрПоле2;
i=1;//число значений в списке
Пока Найти(стрПоля,",")<>0 Цикл
n=Найти(стрПоля,",");
лПоля.Добавить(Сред(стрПоля,1,n-1));
стрПоля=Сред(стрПоля,n+1);
i=i+1;
КонецЦикла;
лПоля.Добавить(стрПоля);
//1. Установить диапазон выборки данных
FirstSheet.Activate();
дДиапазонДанных=FirstSheet.UsedRange.Address;
ДиапазонДанных=FirstSheet.Name+"!"+Строка(дДиапазонДанных);
//2. Создать кэш под сводную таблицу
// аргументы не переменные, а текст с именем переменных (crazy)
SourceType = xlDatabase;
SourceData = ДиапазонДанных;
Cache = MyBook.PivotCaches().Add(SourceType, SourceData);
//для отладки: FileOfReports.Visible = 1;
//3. Породить из кэша сводную таблицу с именем стрСводнаяТаблица
TableDestination="";
TableName=стрСводнаяТаблица;
Cache.CreatePivotTable(TableDestination,TableName);
//4. Определить представление данных в сводной таблице
//стрПоле1
Если СокрЛП(стрПоле1)<>"" Тогда
MyBook.ActiveSheet.PivotTables(TableName).PivotFields(стрПоле1).Orientation = 3; //xlRowField=1 то, что указывается справа у таблицы
КонецЕсли;
//стрПоле2
чНомер=0;
Пока чНомер<i Цикл
Если СокрЛП(лПоля[чНомер].Значение)<>"" Тогда
MyBook.ActiveSheet.PivotTables(TableName).PivotFields(лПоля[чНомер].Значение).Orientation = 1;
КонецЕсли;
чНомер = чНомер + 1;
КонецЦикла;
//стрПоле3
Если СокрЛП(стрПоле3)<>"" Тогда
MyBook.ActiveSheet.PivotTables(TableName).PivotFields(стрПоле3).Orientation = 2; //xlColumnField=2 то, что указывается в вепрхней части таблицы
КонецЕсли;
//стрПоле4
Если СокрЛП(стрПоле4)<>"" Тогда
MyBook.ActiveSheet.PivotTables(TableName).PivotFields(стрПоле4).Orientation = 4; //xlCount=4 data
КонецЕсли;
//5. Скрыть пустые строки в стрПоле2, предварительно проверив, что таковые СУЩЕСТВУЮТ!!!!
//стрПоле2
чНомер=0;
Пока чНомер<i Цикл
Если СокрЛП(лПоля[чНомер].Значение)<>"" Тогда
Если IfPivotItemExists(TableName,лПоля[чНомер].Значение,"(пусто)")Тогда
MyBook.ActiveSheet.PivotTables(TableName).PivotFields(лПоля[чНомер].Значение).PivotItems("(пусто)").Visible = False;
КонецЕсли;
КонецЕсли;
чНомер = чНомер + 1;
КонецЦикла;
//6. Закрыть вспомогательные панели
MyBook.ShowPivotTableFieldList = False;
FileOfReports.CommandBars("PivotTable").Visible = False;
//7. Присвоить активному листу имя, заданное в параметрах процедуры
MyBook.ActiveSheet.Name = стрСводнаяТаблица;
//8. Сохранить файл
MyBook.Save();
КонецПроцедуры
Функция IfPivotItemExists(strTableName,strFieldName,strItemName)
//Проверяет существование позиции поля сводной таблицы со значением strItemName
nItems = MyBook.ActiveSheet.PivotTables(strTableName).PivotFields(strFieldName).PivotItems().Count;
i = 1;
Пока i <= nItems Цикл
Если strItemName=MyBook.ActiveSheet.PivotTables(strTableName).PivotFields(strFieldName).PivotItems(i).Name Тогда
//Искомая позиция strItemName существует:
//Сообщить("Позиция "+strItemName+" найдена");
Возврат True;
КонецЕсли;
i=i+1;
КонецЦикла;
//Сообщить("Позиция "+strItemName+" не найдена");
Возврат False;
КонецФункции
Код 1C v 7.x РабочаяКнига = СоздатьОбъект("Excel.App lication");
РабочаяКнига.SheetsInNewWorkbook = 1;
РабочаяКнига.Caption = "Отчет по договорам отгрузки";
NewBook = РабочаяКнига.Workbooks;
List = NewBook.Add;
СписокСтолбцов = СоздатьОбъект("СписокЗначений");
СписокСтолбцов.ДобавитьЗначение("Модель");
СписокСтолбцов.ДобавитьЗначение("Разнорядка");
СписокСтолбцов.ДобавитьЗначение("По договору");
СписокСтолбцов.ДобавитьЗначение("Отгрузили");
СписокСтолбцов.ДобавитьЗначение("Осталось");
//Заполним наименование столбцов: Модель, Разнорядка, Количество
Для Столбец = 1 По СписокСтолбцов.РазмерСписка() Цикл
Ячейка = РабочаяКнига.Cells(1,Столбец);
Ячейка.Value = СписокСтолбцов.ПолучитьЗначение(Столбец);
КонецЦикла;
//Формируем запрос по регистру
// //Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНач по ДатаКон;
|Разнорядка = Регистр.УчетДоговоров.Разнорядка;
|Модель = Регистр.УчетДоговоров.Модель.Группа;
|Колво = Регистр.УчетДоговоров.Количество;
|Функция КолвоПриход = Приход(Колво);
|Функция КолвоРасход = Расход(Колво);
|Функция КолвоОст = КонОст(Колво);
|Группировка Разнорядка;
|Группировка Модель;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
НомерСтроки = 1;
Пока Запрос.Группировка("Разнорядка") = 1 Цикл
Пока Запрос.Группировка("Модель") = 1 Цикл
Модель = Запрос.Модель;
Разнорядка = Запрос.Разнорядка;
КолПоДоговору = Запрос.КолвоПриход;
КолОтгрузили = Запрос.КолвоРасход;
КолОсталось = Запрос.КолвоОст;
НомерСтроки = НомерСтроки + 1;
//Организум заполнение ячеек Excel
Для Ст = 1 По СписокСтолбцов.РазмерСписка() Цикл
Ячейка = РабочаяКнига.Cells(НомерСтроки,Ст);
Если Ст = 1 Тогда
Ячейка.Value = Модель;
ИначеЕсли Ст = 2 Тогда
Ячейка.Value = Строка(Разнорядка);
ИначеЕсли Ст = 3 Тогда
Ячейка.Value = КолПоДоговору;
ИначеЕсли Ст = 4 Тогда
Ячейка.Value = КолОтгрузили;
ИначеЕсли Ст = 5 Тогда
Ячейка.Value = КолОсталось;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
СводнаяТаблица = РабочаяКнига.ActiveSheet.PivotTableWizard;
//Метод СводнаяТаблица.Name возвращает имя сводной таблицы
//Можно задать имя таблицы СводнаяТаблица.Name = "МояТаблица"
СводнаяТаблица.SmallGrid = 0;
//Разворачивает макет сводной таблицы
//Обращение к ячейкам сводной таблицы возможно по номеру
//Например, СводнаяТаблица.PivotFields(1).Value
//возвращает значение "Модель"
//Попробуем с другого конца
//1 - Row
//2 - Column
//3 - Page
//4 - Data
СводнаяТаблица.PivotFields(1).Orientation = 1; //Модель
СводнаяТаблица.PivotFields(2).Orientation = 3; //Разнорядка
СводнаяТаблица.PivotFields(3).Orientation = 4; //По договору
СводнаяТаблица.PivotFields(4).Orientation = 4; //Отгрузили
СводнаяТаблица.PivotFields(5).Orientation = 4; //Осталось
//Пройдемся по форме отчета
СводнаяТаблица.Format(1);
//Попробуем закрыть панель инструментов сводной таблицы
РабочаяКнига.CommandBars("PivotTable").Visible = 0;
РабочаяКнига.Visible = 1;
Категория:
Работа с Microsoft Office и OpenOffice Как сформировать новый договор, документ на основании файла, шаблона Microsoft Office Word? Для заключения договоров с контрагентами разработан типовой договор (шаблон).
При его оформлении (для реального контрагента) в определенные места документа вставляются данные о контрагенте.
Подобные фрагменты определены следующим образом: <ИмяОбласти> (на практике можно использовать другие способы, в нашем примере квадратные скобки [ ]).
Пример договора:
Договор
на оказание услуг
Я, [Заказчик], с одной стороны, именуемый в дальнейшем ЗАКАЗЧИК, и [Исполнитель],
с другой стороны, именуемый в дальнейшем ИСПОЛНИТЕЛЬ, заключили договор о настройке
системы 1С:Предприятие под нужды заказчика.
Дополнительные условия:
Глюки убирать сразу.
Оплата:
$100 в час. Обсуждению не подлежит.
Подписи сторон:
ЗАКАЗЧИК ИСПОЛНИТЕЛЬ
_____ [Заказчик] _____ [Исполнитель]
Оформленный таким образом документ сохранен в файле, который загружен в 1С v 8 в качестве макета (при его создании указывается, что тип макета – Active document).
Далее в соответствующем обработчике события (например, в обработчике нажатия на кнопку Создать договор) размещается следующий код:
Код 1C v 8.х Договор = ПолучитьМакет("Договор");
// Получить объект из макета.
MSWord = Договор.Получить();
Попытка
Документ = MSWord.App lication.Documents(1);
Документ.Activate();
//Определим имена
Заказчик = "Петр Иванович КакВасТам";
Исполнитель = "helpf.pro - Помощник по 1С"
// Получить объект, который будем использовать для поиска и замены.
Замена = Документ.Content.Find;
// Заменить заранее определенные ключевые конструкции на требуемый текст.
Замена.Execute("[Заказчик]", Ложь, Истина, Ложь, , , Истина, , Ложь, Заказчик);
Замена.Execute("[Исполнитель]", Ложь, Истина, Ложь, , , Истина, , Ложь, Исполнитель);
// Далее аналогично для остальных ключевых конструкций.
// ...
// Делаем видимым приложение и активизируем его.
MSWord.App lication.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке и объект закрывается.
Сообщить(ОписаниеОшибки());
MSWord.App lication.Quit();
КонецПопытки;
Код 1C v 7.x
Word = создатьОбъект("Word.App lication");
wdDoc = Word.Documents;
wdDoc.Open(ИмяФайлаШаблона,0,1); //открываем только на чтение
// Делаем видимым приложение
Word.Visible = 1;
wdFindContinue = 1;
wdReplaceAll = 2;
True = 1;
False = 0;
Word.S_election.Find.Execute("[Заказчик]", True, True, False, False, False, True, wdFindContinue,False,"Петр Иванович КакВасТам", wdReplaceAll);
Word.S_election.Find.Execute("[Исполнитель]", True, True, False, False, False, True, wdFindContinue,False,"helpf.pro - Помощник по 1C", wdReplaceAll);
Категория:
Работа с Microsoft Office и OpenOffice Функция проверяет орфографию переданного текста с помощью средств MS Word Код 1C v 8.х // Проверка орфоргафии переданного текста с помощью средств MS Word
// Параметры
// <Текст> – <Строка> – проверяемый текст
// <ДеревоЗначений> – <ДеревоЗначений> – возвращает дерево замен
// Возвращаемое значение:
// <Булево> – Истина, если текст не содержит ошибок
Функция ПроверитьОрфографию(Текст, ДеревоЗначений = Null) Экспорт
Попытка
Ворд = Новый COMОбъект("Word.App lication"); //Создаем объект MS Word
Исключение
Предупреждение("Microsoft Word не установлен!",,"Ошибка!");
Возврат Ложь;
КонецПопытки;
ТекстБезОшибок = Ворд.CheckSpelling(Текст); //проверяем нашу строку на ошибки
Если ТекстБезОшибок Тогда // Нет ошибок
Возврат Истина;
Иначе // Обнаружены ошибки, будем проверять по словам
Если ДеревоЗначений <> Null Тогда
Ворд_Активен = Ворд.Visible; //Запомним, был ли Word активен
ВремДок = Ворд.Documents.Add(); //Добавляем к открытым документам
МояОбласть = ВремДок.Range(0, 0); //Получаем пустую область в начале документа
МояОбласть.I_nsertBefore(Текст); //Добавляем в эту область нашу строку
ЧислоСлов = МояОбласть.Words.Count; //Подсчитываем число слов в области
ДеревоЗначений = Новый ДеревоЗначений; //сюда будем записывать слова и варианты их замен
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));
ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
ДеревоЗначений.Колонки.Добавить("Слово", ОписаниеТипов, "Слово/Замена",);
wdSpellword=0; //константа Word, указывающая на то, что при при вызове проверки орфографии возвращается множество замен
wdDoNotSaveChanges=0; //константа Word, указывающая на то, что при закрытии не надо сохранять изменения в закрываемом документе
Для НомерСлова = 1 По ЧислоСлов Цикл
ОбработкаПрерыванияПользователя();
ПровОбласть = МояОбласть.Words(НомерСлова); //выбираем очередное слово
ПровСлово = СокрЛП(ПровОбласть.Text);
СловоБезОшибок = Ворд.CheckSpelling(ПровСлово); //проверяем наше слово на ошибки
Если НЕ СловоБезОшибок Тогда //получаем варианты замен (их может и не быть!)
Если ДеревоЗначений.Строки.Найти(ПровСлово, "Слово") = Неопределено Тогда
НоваяСтрока = ДеревоЗначений.Строки.Добавить();
НоваяСтрока.Слово = ПровСлово;
Замены = ПровОбласть.GetSpellingSuggestions( ,1, ,wdSpellword); //проверяем орфографию, укзав, что возвращать надо множество замен
ЧислоЗамен = Замены.Count; //получаем число возможных замен
Если ЧислоЗамен > 0 Тогда //заносим варианты замен в таблицу значений
Для НомерЗамены = 1 По ЧислоЗамен Цикл
СловоЗамены = СокрЛП(Замены.Item(НомерЗамены).Name);
НоваяПодСтрока = НоваяСтрока.Строки.Добавить();
НоваяПодСтрока.Слово = СловоЗамены;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ВремДок.Close(wdDoNotSaveChanges,,);
Если Не Ворд_Активен Тогда
Ворд.Quit();
КонецЕсли;
КонецЕсли;
Возврат Ложь;
КонецЕсли;
КонецФункции
Пример использования:
Код 1C v 8.х
Перем ДеревоЗначений;
Состояние("Идет проверка орфографии. Пожалуйста ждите...");
Текст = ЭлементыФормы.ПолеТекстовогоДокумента.ПолучитьТекст(); // Получаем текст
Если ПроверитьОрфографию(Текст, ДеревоЗначений) Тогда // Проверяем орфографию
Предупреждение("Текст ошибок не содержит!!!", 5, "OK");
Иначе
Если ДеревоЗначений.Строки.Количество() > 0 Тогда
// Создаем и открываем форму автозамен...
ФормаВыбора = ЭтотОбъект.ПолучитьФорму("ФормаВыбора");
Для каждого СтрокаДЗ Из ДеревоЗначений.Строки Цикл
Строка = ФормаВыбора.ДеревоЗначений.Строки.Добавить();
Строка.Слово = СтрокаДЗ.Слово;
Для каждого ПодСтрокаДЗ Из СтрокаДЗ.Строки Цикл
ПодСтрока = Строка.Строки.Добавить();
ПодСтрока.Слово = ПодСтрокаДЗ.Слово;
КонецЦикла;
КонецЦикла;
Если ФормаВыбора.ОткрытьМодально() = "OK" Тогда
// Производим автозамены в тексте
Для каждого СтрокаДЗ Из ФормаВыбора.ДеревоЗначений.Строки Цикл
Для каждого ПодСтрокаДЗ Из СтрокаДЗ.Строки Цикл
Если ПодСтрокаДЗ.Пометка Тогда
Текст = СтрЗаменить(Текст, ПодСтрокаДЗ.Родитель.Слово, ПодСтрокаДЗ.Слово);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ЭлементыФормы.ПолеТекстовогоДокумента.УстановитьТекст(Текст); //Вставим в поле исправленный текст
КонецЕсли;
Иначе
Предупреждение("В тексте найдены ошибки, но вариантов автозамены не нашлось!!!", 5, "Ошибка");
КонецЕсли;
КонецЕсли;
Категория:
Работа с Microsoft Office и OpenOffice Выгрузка метаданных конфигурации в Microsoft Word и Excel Код 1C v 8.х
Перем ОбъектыКонфы;
Перем СтруктКонфы;
Процедура ВыгрузитьВWord()
Попытка
Word = Новый COMОбъект("Word.App lication");
Исключение
Сообщить("Не удалось открыть Word");
Возврат;
КонецПопытки;
Word.Documents.Add();
Документ = Word.ActiveDocument();
// Перебор типов метаданных
Для Каждого ТипОбъекта Из ОбъектыКонфы Цикл
Состояние(ТипОбъекта.Значение);
Если Метаданные[ТипОбъекта.Ключ].Количество() > 0 Тогда
// Добавляем новый параграф
Документ.Paragraphs.Add();
Номер = Документ.Paragraphs.Count();
Документ.Paragraphs(Номер-1).Range().I_nsertAfter(ТипОбъекта.Значение);
Документ.Paragraphs(Номер).Range().Style="Заголовок 1";
//Перебираем конктретные объекты
Для каждого Объект Из Метаданные[ТипОбъекта.Ключ] Цикл
// Добавляем новый параграф
Документ.Paragraphs.Add();
Номер = Документ.Paragraphs.Count();
Документ.Paragraphs(Номер-1).Range().I_nsertAfter(Объект.Синоним);
Документ.Paragraphs(Номер).Range().Style="Заголовок 2";
// Перебираем параметры метаданных
Для каждого Параметр Из СтруктКонфы Цикл
Попытка
Количество = Объект[Параметр.Ключ].Количество();
Исключение
Продолжить;
КонецПопытки;
Если Количество > 0 Тогда
// Добавляем новый параграф
Документ.Paragraphs.Add();
Номер = Документ.Paragraphs.Count();
Документ.Paragraphs(Номер-1).Range().I_nsertAfter(Параметр.Значение + " (" + Количество + ")");
Документ.Paragraphs(Номер).Range().Style="Заголовок 3";
// Добавляем новый параграф
Документ.Paragraphs.Add();
Номер=Документ.Paragraphs.Count();
// Добавляем новую таблицу
Документ.Tables.Add(Документ.Paragraphs(Номер).Range(),Количество+1,4);
Счетчик = 1;
// Заполняем шапку таблицы
Таблица = Документ.Tables(Документ.Tables.Count());
Таблица.Cell(Счетчик,1).Range().I_nsertAfter("Имя");
Таблица.Cell(Счетчик,2).Range().I_nsertAfter("Синоним");
Таблица.Cell(Счетчик,3).Range().I_nsertAfter("Тип");
Таблица.Cell(Счетчик,4).Range().I_nsertAfter("Комментарий");
// Устанавливаем жирный шрифт для шапки таблицы
Документ.Range(Таблица.Cell(Счетчик,1).Range.Start,Таблица.Cell(Счетчик,4).Range.End).Font.Bold = Истина;
Для каждого Значение Из Объект[Параметр.Ключ] Цикл
Счетчик = Счетчик + 1;
// Заполняем содержимое таблицы
Попытка
Таблица.Cell(Счетчик,1).Range().I_nsertAfter(Значение.Имя);
Исключение
КонецПопытки;
Попытка
Таблица.Cell(Счетчик,2).Range().I_nsertAfter(Значение.Синоним);
Исключение
КонецПопытки;
Попытка
СтрокаТипов = "";
// Выводим все типы
Для каждого Тип Из Значение.Тип.Типы() Цикл
СтрокаТипов = СтрокаТипов + " " + Строка(Тип);
КонецЦикла;
Таблица.Cell(Счетчик,3).Range().I_nsertAfter(СтрокаТипов);
Исключение
КонецПопытки;
Попытка
Таблица.Cell(Счетчик,4).Range().I_nsertAfter(Значение.Комментарий);
Исключение
КонецПопытки;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Показываем документ
Word.Visible = Истина;
// Устанавливаем активность документа
Word.Activate();
Word = Неопределено;
КонецПроцедуры
Процедура ВыгрузитьВExcel()
Попытка
Excel = Новый COMОбъект("Excel.App lication");
Исключение
Сообщить("Не удалось открыть Excel");
Возврат;
КонецПопытки;
// Добавляем новый лист
Excel.App lication.Workbooks.Add(1);
Лист = Excel.ActiveSheet;
// Задаем имя закладки
Лист.Name = "Данные";
НомерСтроки = 0;
// Перебор типов метаданных
Для Каждого ТипОбъекта Из ОбъектыКонфы Цикл
Состояние(ТипОбъекта.Значение);
Если Метаданные[ТипОбъекта.Ключ].Количество() > 0 Тогда
// Добавляем новую строку
НомерСтроки = НомерСтроки + 1;
// Устанавливаем текст в ячейку
Лист.Cells(НомерСтроки, 1).Value = ТипОбъекта.Значение;
// Устанавливаем размер шрифта
Лист.Cells(НомерСтроки, 1).Font.Size = 16;
// Устанавливаем цвет
Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 3;
//Перебираем конктретные объекты
Для каждого Объект Из Метаданные[ТипОбъекта.Ключ] Цикл
// Добавляем новую строку
НомерСтроки = НомерСтроки + 1;
// Устанавливаем текст в ячейку
Лист.Cells(НомерСтроки, 1).Value = Объект.Синоним;
// Устанавливаем отступ в 2 символа
Лист.Cells(НомерСтроки, 1).I_nsertIndent(2);
// Устанавливаем размер шрифта
Лист.Cells(НомерСтроки, 1).Font.Size = 12;
// Устанавливаем цвет
Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 5;
// Перебираем параметры метаданных
Для каждого Параметр Из СтруктКонфы Цикл
Попытка
Количество = Объект[Параметр.Ключ].Количество();
Исключение
Продолжить;
КонецПопытки;
Если Количество > 0 Тогда
// Добавляем новую строку
НомерСтроки = НомерСтроки + 1;
Лист.Cells(НомерСтроки, 1).Value = Параметр.Значение + " (" + Количество + ")";
Лист.Cells(НомерСтроки, 1).I_nsertIndent(4);
// Устанавливаем жирный шрифт
Лист.Cells(НомерСтроки, 1).Font.Bold = Истина;
// Устанавливаем цвет
Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 16;
// Добавляем новую таблицу
НомерСтроки = НомерСтроки + 1;
Лист.Cells(НомерСтроки, 1).Value = "Имя";
Лист.Cells(НомерСтроки, 2).Value = "Синоним";
Лист.Cells(НомерСтроки, 3).Value = "Тип";
Лист.Cells(НомерСтроки, 4).Value = "Комментарий";
Для Ном = 1 По 4 Цикл
// Устанавливаем ширину колонки
Лист.Cells(НомерСтроки, Ном).ColumnWidth = 20;
Лист.Cells(НомерСтроки, Ном).Font.Bold = Истина;
// Очищаем все границы
Лист.Cells(НомерСтроки, Ном).Borders(5).LineStyle = -4142;
// Устанавливаем левую границу
Лист.Cells(НомерСтроки, Ном).Borders(7).LineStyle = 1;
// Устанавливаем верхнюю границу
Лист.Cells(НомерСтроки, Ном).Borders(8).LineStyle = 1;
// Устанавливаем нижнюю границу
Лист.Cells(НомерСтроки, Ном).Borders(9).LineStyle = 1;
// Устанавливаем правую границу
Лист.Cells(НомерСтроки, Ном).Borders(10).LineStyle = 1;
// Устанавливаем цвет фона
Лист.Cells(НомерСтроки, Ном).Interior.ColorIndex = 34;
КонецЦикла;
Для каждого Значение Из Объект[Параметр.Ключ] Цикл
НомерСтроки = НомерСтроки + 1;
// Заполняем содержимое таблицы
Попытка
Лист.Cells(НомерСтроки, 1).Value = Значение.Имя;
Исключение
КонецПопытки;
Попытка
Лист.Cells(НомерСтроки, 2).Value = Значение.Синоним;
Исключение
КонецПопытки;
Попытка
СтрокаТипов = "";
// Выводим все типы
Для каждого Тип Из Значение.Тип.Типы() Цикл
СтрокаТипов = СтрокаТипов + " " + Строка(Тип);
КонецЦикла;
Лист.Cells(НомерСтроки, 3).Value = СтрокаТипов;
Исключение
КонецПопытки;
Попытка
Лист.Cells(НомерСтроки, 4).Value = Значение.Комментарий;
Исключение
КонецПопытки;
Для Ном = 1 По 4 Цикл
// Установка границ
Лист.Cells(НомерСтроки, Ном).Borders(5).LineStyle = -4142;
Лист.Cells(НомерСтроки, Ном).Borders(7).LineStyle = 1;
Лист.Cells(НомерСтроки, Ном).Borders(8).LineStyle = 1;
Лист.Cells(НомерСтроки, Ном).Borders(9).LineStyle = 1;
Лист.Cells(НомерСтроки, Ном).Borders(10).LineStyle = 1;
// Устанавливаем выравнивание по левому краю
Лист.Cells(НомерСтроки, Ном).VerticalAlignment = -4160;
// Устанавливаем перенос слов
Лист.Cells(НомерСтроки, Ном).WrapText = Истина;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Показываем документ
Excel.Visible = Истина;
Excel = Неопределено;
КонецПроцедуры
Процедура Сформировать()
// Определяем все возможные объекты метаданных
ОбъектыКонфы = Новый Структура();
ОбъектыКонфы.Вставить("ОбщиеМодули", "Общие модули");
ОбъектыКонфы.Вставить("ОбщиеФормы", "Общие формы");
ОбъектыКонфы.Вставить("ОбщиеМакеты", "Общие макеты");
ОбъектыКонфы.Вставить("ОбщиеКартинки", "Общие картинки");
ОбъектыКонфы.Вставить("Роли", "Роли");
ОбъектыКонфы.Вставить("Интерфейсы", "Интерфейсы");
ОбъектыКонфы.Вставить("Стили", "Стили");
ОбъектыКонфы.Вставить("Языки", "Языки");
ОбъектыКонфы.Вставить("ПланыОбмена", "Планы обмена");
ОбъектыКонфы.Вставить("Константы", "Константы");
ОбъектыКонфы.Вставить("КритерииОтбора", "Критерии отбора");
ОбъектыКонфы.Вставить("Справочники", "Справочники");
ОбъектыКонфы.Вставить("Документы", "Документы");
ОбъектыКонфы.Вставить("ЖурналыДокументов", "Журналы документов");
ОбъектыКонфы.Вставить("Перечисления", "Перечисления");
ОбъектыКонфы.Вставить("Отчеты", "Отчеты");
ОбъектыКонфы.Вставить("Обработки", "Обработки");
ОбъектыКонфы.Вставить("ПланыВидовХарактеристик", "Планы видов характеристик");
ОбъектыКонфы.Вставить("ПланыСчетов", "Планы счетов");
ОбъектыКонфы.Вставить("ПланыВидовРасчета", "Планы видов расчета");
ОбъектыКонфы.Вставить("РегистрыСведений", "Регистры сведений");
ОбъектыКонфы.Вставить("РегистрыБухгалтерии", "Регистры бухгалтерии");
ОбъектыКонфы.Вставить("РегистрыРасчета", "Регистры расчета");
// Определяем все возможные параметры
СтруктКонфы = Новый Структура();
СтруктКонфы.Вставить("Измерения", "Измерения");
СтруктКонфы.Вставить("Ресурсы", "Ресурсы");
СтруктКонфы.Вставить("Реквизиты", "Реквизиты");
СтруктКонфы.Вставить("Формы", "Формы");
СтруктКонфы.Вставить("Макеты", "Макеты");
СтруктКонфы.Вставить("Графы", "Графы");
СтруктКонфы.Вставить("ТабличныеЧасти", "Табличные части");
СтруктКонфы.Вставить("Значения", "Значения");
ВыгрузитьВWord(); // из 1С в Microsoft Word
ВыгрузитьВExcel(); // из 1C в Microsoft Excel
КонецПроцедуры
Код 1C v 7.x
Процедура Справочник()
Ворд=СоздатьОбъект("Word.App lication");
Ворд.DisplayAlerts=0;
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Код");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=?(Метаданные.Справочник(СокрЛП(Имя)).ТипКода="Текстовый","Строка","Число");
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип+" ("+СокрЛП(Метаданные.Справочник(СокрЛП(Имя)).ДлинаКода)+")");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("");
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Наименование");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Строка ("+СокрЛП(Метаданные.Справочник(СокрЛП(Имя)).ДлинаНаименования)+")");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("");
Для Сч=1 По Метаданные.Справочник(СокрЛП(Имя)).Реквизит() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Реквизит=Метаданные.Справочник(СокрЛП(Имя)).Реквизит(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Предупреждение("Готово",5);
КонецПроцедуры
Процедура Документ()
Ворд=СоздатьОбъект("Word.App lication");
Ворд.DisplayAlerts=0;
Для Сч=1 По Метаданные.Документ(СокрЛП(Имя)).РеквизитШапки() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Шапка");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Документ(СокрЛП(Имя)).РеквизитШапки(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Для Сч=1 По Метаданные.Документ(СокрЛП(Имя)).РеквизитТабличнойЧасти() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Таб. часть");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Документ(СокрЛП(Имя)).РеквизитТабличнойЧасти(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Предупреждение("Готово",5);
КонецПроцедуры
Процедура Общие()
Ворд=СоздатьОбъект("Word.App lication");
Ворд.DisplayAlerts=0;
Для Сч=1 По Метаданные.ОбщийРеквизитДокумента() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Шапка");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.ОбщийРеквизитДокумента(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Предупреждение("Готово",5);
КонецПроцедуры
Процедура СтруктураРегистра()
Ворд=СоздатьОбъект("Word.App lication");
Ворд.DisplayAlerts=0;
Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Измерение() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Измерение");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Измерение(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Ресурс() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Ресурс");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Ресурс(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Реквизит() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Реквизит");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Реквизит(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Предупреждение("Готово",5);
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Запуск макроса в MS Word из 1С Код 1C v 8.х //Пример показывает как из 1С вызывается MS Word, вставляется макрос и запускается!
//Макрос пишет на листе Добрый день!, https://helpf.pro и сохраняет файл в D:/primer.doc
ПримерМакроса = "Sub VBAprimer()
|S_election.TypeText Text:=""Добрый день!""
|App lication.Keyboard (1033)
|S_election.TypeText Text:="": https://helpf.pro""
|S_election.TypeParagraph
|S_election.MoveUp Unit:=wdLine, Count:=2
|S_election.EndKey Unit:=wdLine, Extend:=wdExtend
|S_election.Style = ActiveDocument.Styles(""Заголовок 1"")
|S_election.MoveDown Unit:=wdLine, Count:=1
|S_election.HomeKey Unit:=wdLine
|S_election.EndKey Unit:=wdLine, Extend:=wdExtend
|S_election.Style = ActiveDocument.Styles(""Заголовок 2"")
|ActiveDocument.SaveAs FileName:=""D:/primer.doc"", FileFormat:= _
| wdFormatDocument, LockComments:=False, Password:="""", AddToRecentFiles:= _
| True, WritePassword:="""", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
| False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
| SaveAsAOCELetter:=False
|End Sub";
// Создание объекта
Word = Новый COMОбъект("Word.App lication");
Word.Documents.Add();
//VBComponents = Word.VBE.ActiveVBProject.VBComponents;
VBComponents = Word.ActiveDocument.VBProject.VBComponents;
Count = VBComponents.Count();
VBComponents.Add(1);
VBComponents.Item(Count + 1).CodeModule.I_nsertLines(1, ПримерМакроса);
Word.App lication.Run(VBAprimer");
Word.Quit();
Word = Неопределено;
Код 1C v 7.x // Если не будет работать - возможно установлен высокий уровень безопасности. Понизьте до среднего ...
Процедура Сформировать()
Попытка
W=СоздатьОбъект("Word.App lication");
Исключение
Возврат;
КонецПопытки;
W.Documents.Add();
i = W.VBE.ActiveVBProject.VBComponents.Count();
W.VBE.ActiveVBProject.VBComponents.Add (1);
W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.I_nsertLines (1, "Sub Golif()");
W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.I_nsertLines (2, "MsgBox " + """" + "Работает" + """");
W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.I_nsertLines (3, "End Sub");
W.App lication.Run ("Golif");
W="";
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Скрипт запуска 1С:Предприятия от имени Администратора или Пользователя Данные пример для 7.7, для 8-ых версий указать путь к 1Сv8.exe
Код VBS
Dim WshShell, ObjFSO
Set WshShell = CreateObject("WScript.Shell")
set objFSO = CreateObject("Scripting.FileSystemObject")
app l="C:\1Cv7\BINOP\1CV7s.exe"
users="DomenKompanii\emigachev"
Set objWMIService = GetObject _
("winmgmts:\\.\root\cimv2:Win32_Process")
errReturn = objWMIService.Create _
("cmd.exe /K ""title RUNAS_AUTO & runas.exe /user:" & users & " """ & app l & """""", Null, Null, intProcessID)
wscript.Sleep(1000)
wshShell.App Activate "RUNAS_AUTO"
function WriteWord()
WshShell.SendKeys "P@ssw0rd"
end function
wscript.Sleep(1000)
wshShell.SendKeys "{ENTER}"
или так:
Код VBS
Set WshShell = CreateObject("Wscript.Shell")
Set WshEnv = WshShell.Environment("PRocess")
WshShell.Run "runas.exe /user:DomenKompanii\emigachev C:\WD\1Cv7\BINOP\1CV7s.exe"
Wscript.Sleep 800
WshShell.App Activate WshEnv("SystemRoot") & "\system32\runas.exe"
Wscript.Sleep 200
WshShell.SendKeys "P@ssw0rd"
Wscript.Sleep 500
Категория:
Администрирование Как проиграть wav, mp3 файл Код 1C v 8.х ScriptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScriptCtrl.Language = "vbscript";
ScriptCtrl.AddCode("
Function PlayS()
| Set Wrap = CreateObject(""DynamicWrapp er"")
| Wrap.Register ""winmm.dll"", ""sndPlaySound"", ""i=sl"", ""f=s"", "r=l""
| PlayS = Wrap.sndPlaySound(""C:\Sounds\newemail.wav"", SDN_ASYNC)
| End Function");
ScriptCtrl.Run("PlayS");
Категория:
COM-объекты, WMI, WSH Формирование списка зарегистрированных информационных баз системы 1Cv8 В отличие от 1Cv7 (
где список зарегистрированных информационных баз хранится в системном реестре (Щелкните для просмотра примеров) ):
в 1C v 8 :
список зарегистрированных информационных баз хранится в текстовом файле v8ib.lst (кодировка UTF-8)
в каталоге \
App lication Data\1C\1Cv8 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\
App lication Data\1C\1Cv8\v8ib.lst
в 1C v 8.1 :
список зарегистрированных информационных баз хранится в текстовом файле ibases.v8i (кодировка UTF-8)
в каталоге \
App lication Data\1C\1Cv81 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\
App lication Data\1C\1Cv81\ibases.v8i
Если открыть этот файл в NotePad.exe, то видно, что он имеет структуру, схожую со стандартным INI-файлом :
[База Разработки]
Connect=File="F:\1C\1Cv8\DBRaz";
ID=1cd97bfa-4e57-4a23-9ee1-073a0a28e01c
OrderInList=16384
Folder=/
OrderInTree=16384
[Enterprise]
Connect=File="F:\1C\1Cv8\1cv8.db\Enterprise";
ID=647840fa-65e0-44e8-ad40-12476f178b92
OrderInList=20480
Folder=/
OrderInTree=32768
в 1C v 8.2 :
список зарегистрированных информационных баз хранится в текстовом файле ibases.v8i (кодировка UTF-8)
в каталоге \
App lication Data\1C\1Cv8 текущего пользователя на локальном компьютере (где запускается программа 1С:Предприятие v 8).
т.е. C:\Documents and Settings\%CurrentUser%\
App lication Data\1C\1CEStart\ibases.v8i
Если открыть этот файл в NotePad.exe, то там:
[1C:Документооборот 8 (демо)]
Connect=File="C:\Documents and Settings\E.S.Migachev\Мои документы\1C\DemoDoc8";
ID=b3b46c21-bd2a-481e-b100-e6cbdcba3e3d
OrderInList=16384
Folder=/
OrderInTree=256
External=0
ClientConnectionSpeed=Normal
App =Auto
WA=1
Version=8.2
Структура хранения информации по каждой информационной базе :
<Наименование информационной базы>
<ID>
<Connect>
<Folder>
<OrderInList>
<OrderInTree>
Где:
Connect - строка соединения с информационной базой,
ID - внутренний идентификатор информационной базы,
OrderInList - порядок в списке при представлении списком
Folder - наименование ветви в дереве информационных баз,
OrderInTree - порядок в ветви при представлении деревом.
В 1С 8.1 еще добавили External - но он всегда равен 0, для чего он пока не известно.
В 1С 8.2 добавлено:
ClientConnectionSpeed=Normal - скорость соединения
App =Auto - тип соединения - толстый, тонкий клиент.
WA=1
Version=8.2
Вот код получения получения списка баз из файла 1С 8.0 8.1 8.2
Код 1C v 8.х
Функция ПолучимСписокБаз1СИзФайла(Версия)
// Функция получения списка баз 1С 8.0 8.1 8.2 E_Migachev
// Возвращает Таблицу Значений содержащую Название, СтрокаСоединения с базами 1С
// Для начала получим программным путем полный путь к папке App lication Data
// Способ из https://helpf.pro/faq/view/271.html
App = Новый COMОбъект("Shell.App lication");
App Data=App .Namespace(26).Self.Path;
ТЗБаз=Новый ТаблицаЗначений;
ТЗБаз.Колонки.Добавить("Название",,"Название",25);
ТЗБаз.Колонки.Добавить("СтрокаСоединения",,"СтрокаСоединения",30);
Если Версия = "v80" Тогда
СписокБаз=App Data+"\1C\1Cv8\v8ib.lst";
ИначеЕсли Версия = "v81" Тогда
СписокБаз=App Data+"\1C\1Cv81\ibases.v8i";
ИначеЕсли Версия = "v82" Тогда
СписокБаз=App Data+"\1C\1CEStart\ibases.v8i";
КонецЕсли;
Сообщить("Файл со списком баз: "+Строка(СписокБаз));
//Открываем файл в кодировке UTF8
ФайлБаз= Новый ЧтениеТекста;
ФайлБаз.Открыть(СписокБаз, КодировкаТекста.UTF8);
Стр = ФайлБаз.ПрочитатьСтроку();
Пока НЕ Стр = Неопределено Цикл
Если СтрДлина(СокрЛП(Стр)) Тогда
ТекущаяСтрока = СокрЛП(Стр);
Если Лев(ТекущаяСтрока, 1) = "[" Тогда
НоваяСтрока = ТЗБаз.Добавить();
НоваяСтрока.Название = ТекущаяСтрока;
КонецЕсли;
Если Лев(ТекущаяСтрока, 8) = "Connect=" Тогда
Попытка
НоваяСтрока.СтрокаСоединения = Прав(ТекущаяСтрока, СтрДлина(ТекущаяСтрока)-8);
Исключение
// Это группа
НоваяСтрока.СтрокаСоединения = "";
КонецПопытки;
КонецЕсли;
КонецЕсли;
Стр = ФайлБаз.ПрочитатьСтроку();
КонецЦикла;
//Удалим из ТЗ строки с пустой Строкой Соединения, т.к это группы, а они нам не нужны
ПустыеСтроки = ТЗБаз.НайтиСтроки(Новый Структура("СтрокаСоединения",));
Для каждого СтрокаТаблицы Из ПустыеСтроки Цикл
ТЗБаз.Удалить(СтрокаТаблицы)
КонецЦикла;
Возврат ТЗБаз;
КонецФункции
Процедура ПолучимИзФайла(Кнопка)
ТЗБаз = ПолучимСписокБаз1СИзФайла(Кнопка.Имя);
//Выведем список баз из ТЗ в табличное поле
Список=ТЗБаз;
ЭлементыФормы.Список.СоздатьКолонки();
КонецПроцедуры
Пример обработки для 1С 8.1 "Получения списка баз 1С 8.0 8.1 8.2 E_Migachev"
Скачивать файлы может только зарегистрированный пользователь!
Обработка для 1С 8.1 "Чтение списка информационных баз 1С 8.1"(формирует дерево баз) Fisca
Скачивать файлы может только зарегистрированный пользователь! Категория:
Полезные, Универсальные Функции Как из 1С написать формулу в Excel Объяснить мне сразу трудно - поэтому давайте "на пальцах"
Свежий простой пример :
вопрос " Ексель.Cells(1,3).Formula= "=СЦЕПИТЬ(E1;C7)";" "
первое на что хочу обратить внимание
те функции которые Вы видите визуально в ячейке MS EXCEL для 1С "слегка не знакомы", ей лучше озвучить имя функции на VBA
откуда Вы знаете как это функция на VBA называется ???
я Вам расскажу, немного терпения:
1. открываем новую книгу MS EXCEL
2. идем в меню Сервис - Макрос - Начать запись - Ок (появится маленькое окошко с квадратной кнопкой - его не кое случае не закрывать)
3. кликаем ячейку "С1" и пишем в ней формулу =СЦЕПИТЬ(E1;C7)
4. после этого нажимаем на квадратную кнопочку (Мы только что с Вами записали макрос на языке VBA)
5.посмотрим что получилось
идем в меню Сервис - Макрос - Макросы - (там будет в новой книге по умолчанию Макрос1) - выбираем его и нажимаем кнопку "Войти"
Поздравляю - мы попали во встроенный редактор VBA (аналог конфигурартора 1С)
и что мы видим
Код Sub Макрос1()
Range("C1").S_elect
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)"
Range("C2").S_elect
End Sub
теоритически нам нужно только
Код Range("C1").FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)"
это и будет для 1С =
Код 1C v 7.x Cells(1,3).Formula= "=СЦЕПИТЬ(E1;C7)";" "
Проверим, напишем код на любимом 1С:
Код 1C v 7.x Процедура Сформировать()
Перем Кат,Шаб;
Ехсел=СоздатьОбъект("Excel.App lication");
Книга=Ехсел.Workbooks;
Если ФС.ВыбратьФайл(0,Кат,Шаб,"Выбери файл Еxcel",,"*.xls",)=1 Тогда
Книга.Open(Шаб+Кат);
Ехсел.Range("C1").FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)";
Книга.Close();
Ехсел="";
КонецЕсли;
КонецПроцедуры
все работает.
немного подумав, Вы поймете, что
Код 1C v 7.x Ехсел.Range("C1").FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)";
можно заменить на
Код 1C v 7.x Ехсел.Cells(1, 3).FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)";
и результат не изменится, а возможностей прибавится.
В MS EXCEL только амлет нельзя пожарить - возможности его одурманивают.
Tatitutu Категория:
Работа с Microsoft Office и OpenOffice Пример замены параметров (настроек) базы в списке баз 1С 8 Код 1C v 8.х Процедура КнопкаВыполнитьНажатие(Элемент)
ТекстовыйФайл = Новый ТекстовыйДокумент();
ПутьКФайлу = "C:\Documents and Settings\Adm\App lication Data\1C\1Cv8\v8ib.lst";
ТекстовыйФайл.Прочитать(ПутьКФайлу);
КС = ТекстовыйФайл.КоличествоСтрок();
Для Сч = 1 По КС Цикл
Строка = ТекстовыйФайл.ПолучитьСтроку(Сч-1);
Строка = СтрЗаменить(Строка, "NEW", "АБ:Фантастика 8.0");
ТекстовыйФайл.ЗаменитьСтроку(Сч-1, Строка);
КонецЦикла;
ТекстовыйФайл.Записать(ПутьКФайлу, КодировкаТекста.UTF8);
КонецПроцедуры
Категория:
Полезные, Универсальные Функции Как получить высоту картинки, изображения, локально и в интернет. Код 1C v 7.x Шелл=СоздатьОбъект("Shell.App lication");
Место=Шелл.NameSpace(Путь);
Сообщить(Место.GetDetailsOf(Место.ParseName(Файл),26));
А если картинка на интерне сайте, и нужно узнать ее высоту, то:
Код 1C v 7.x ИЕ=CreateObject("InternetExplorer.App lication");
ИЕ.Navigate("Aboutblank"); // нужно AboutДВОЕТОЧИЕblank добавить в надежные узлы
Док=ИЕ.document;
Док.write("<img id=img src=file:"+Каталог+ИмяКартинки+">");
Результат = Док.getElementById("img").height;
//Или такой вариант:
Текст=СоздатьОбъект("Текст");
Текст.ДобавитьСтроку("<img id=img src='file://"+Путь+Файл+"' >");
Времянка=КаталогВременныхФайлов()+_GetPerformanceCounter()+".html";
Текст.Записать(Времянка);
ИЕ=CreateObject("InternetExplorer.App lication");
ИЕ.Navigate(Времянка);
Пока ИЕ.ReadyState<4 Цикл
КонецЦикла;
Док=ИЕ.document;
Сообщить(Док.getElementById("img").height);
Категория:
COM-объекты, WMI, WSH Вставить формулу, функцию в ячейку Excel Код 1C v 8.х Ячейка = Лист.Cells(1,8);
Ячейка.Formula="=SUM(R11C:R[-1]C)";
Код 1C v 7.x Процедура Сформировать()
Перем Кат,Шаб;
Ехсел=СоздатьОбъект("Excel.App lication");
Книга=Ехсел.Workbooks;
Если ФС.ВыбратьФайл(0,Кат,Шаб,"Выбери файл Еxcel",,"*.xls",)=1 Тогда
Книга.Open(Шаб+Кат);
Ехсел.Range("C1").FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)";
Книга.Close();
Ехсел="";
КонецЕсли;
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice