Добро пожаловать,
Поиск
Пример создания компоненты, написанной на JScript по методике WSC и ADODB.Connection. В основном актуально для тех, кто занимается клиент-банками.
В практической работе приходится проводить импорт данных в "1С:Предприятие" из различных внешних приложений, обслуживающих базы данных. Встроенный язык программы "1С:Предприятие" и стандартизированные методы построения баз данных позволяют создавать универсальные обработки по импорту данных из внешних источников. Написание универсальной обработки, зачастую, - это сложный, но и достаточно увлекательный процесс. Сложным я могу назвать его потому, что на этапе разработки нужно заранее предусмотреть все возможные варианты импортирования и обработки данных. А увлекательным процесс написания универсальных обработок по импорту данных в 1С мне видится потому, что постоянно ощущаешь огромные выгоды от использования обработки в последующей работе.
Файловая система
Для начала давайте посмотрим, как проводится работа с файловой системой из программы 1С:Предприятие.
Код //открытие файла заданного типа
Функция гФайл_Открыть(Файл,Каталог,ФлагВсе,ФлагТекст=0,ФлагКнига=0,
ФлагДокумент=0,ФлагПрезентация=0,ФлагАкробат=0) Экспорт
//меню
Если ПустоеЗначение(Файл)=0 Тогда
А=СоздатьОбъект("СписокЗначений");
А.ДобавитьЗначение(0,"Открыть");
А.ДобавитьЗначение(1,"Выбрать");
Ответ=0;
Если А.ВыбратьЗначение(Ответ,,,,1)=0 Тогда
Возврат(0);
ИначеЕсли Ответ=0 Тогда
ЗапуститьПриложение(Каталог+Файл);
Возврат(0);
ИначеЕсли Ответ=1 Тогда
ФС.УстТекКаталог(Каталог);
КонецЕсли;
КонецЕсли;
//формат
Список="";
Если ФлагВсе=1 Тогда
Список=Список+"|Все файлы|*.*";
КонецЕсли;
Если ФлагТекст=1 Тогда
Список=Список+"|Текстовые файлы|*.txt";
КонецЕсли;
Если ФлагКнига=1 Тогда
Список=Список+"|Книги MS Excel|*.xls";
КонецЕсли;
Если ФлагДокумент=1 Тогда
Список=Список+"|Документы MS Word|*.doc";
КонецЕсли;
Если ФлагПрезентация=1 Тогда
Список=Список+"|Презентации MS PowerPoint|*.pps";
КонецЕсли;
Если ФлагАкробат=1 Тогда
Список=Список+"|Документы Adobe Acrobat|*.pdf";
КонецЕсли;
Список=Сред(Список,2);
//
Возврат ФС.ВыбратьФайл(0,Файл,Каталог,"Открыть файл",Список);
КонецФункции
//процедура определяет название файла и каталога на основании заданной адресной строки
Процедура гПуть_Получить(Путь,Файл,Каталог) Экспорт
Текст=СтрЗаменить(Путь,"\",РазделительСтрок);
//каталог
Для i=1 По СтрКоличествоСтрок(Текст-1) Цикл
Каталог=Каталог+СтрПолучитьСтроку(Текст,i)+"\";
КонецЦикла;
//файл
Файл=СтрПолучитьСтроку(Текст,СтрКоличествоСтрок(Текст));
КонецПроцедуры
Импорт данных в 1С из MS Excel
Программу Microsoft Excel сегодня можно называть стандартом работы с электронными таблицами. Именно поэтому довольно часто приходится встречаться с ситуациями, когда массивы данных хранятся именно в файлах формата MS Excel. Для того, чтобы умело импортировать данные из файлов формата MS Excel в базу данных 1С:Предприятия, вы можете воспользоваться следующими примерами.
Код //подключение к MS Excel через OLE
Функция гКнига_Открыть(Файл,Каталог,Область,Высота,Ширина) Экспорт
Оле=СоздатьОбъект("Excel.Application");
//поиск в открытом приложении
Для i=1 По Оле.Workbooks.Count Цикл
ТекКнига=Оле.Workbooks(i);
Если ТекКнига.Name=Файл Тогда
Книга=ТекКнига;
Прервать;
КонецЕсли;
КонецЦикла;
//открытие файла
Если ПустоеЗначение(Книга)=1 Тогда
Книга=Оле.Workbooks.Open(Каталог+Файл);
КонецЕсли;
Оле.Visible=1;
//выбор листа
Если Книга.Worksheets.Count=1 Тогда
НомерЛиста=1;
Иначе
Список=СоздатьОбъект("СписокЗначений");
Для i=1 По Книга.Worksheets.Count Цикл
Список.ДобавитьЗначение(i,Книга.Worksheets(i).Name);
КонецЦикла;
Если Список.ВыбратьЗначение(НомерЛиста,"Выбор листа - "+Книга.Name)=0 Тогда
Возврат(0);
КонецЕсли;
КонецЕсли;
//лист
Лист=Книга.Worksheets(НомерЛиста);
Лист.Activate();
//данные
Область=Книга.Worksheets(НомерЛиста).Cells.CurrentRegion;
Высота=Область.Rows.Count;
Ширина=Область.Columns.Count;
//
Возврат(1);
КонецФункции
//импорт цен из файла MS Excel
//поиск элемента справочника проводится по полному коду
Процедура ИмпортироватьЦеныТовара()
Перем Файл,Каталог,Область,Высота,Ширина;
//открытие
Каталог=КаталогПользователя();
Файл="";
Если ФС.ВыбратьФайл(0,Файл,Каталог,"Открыть файл","Файлы MS Excel|*.xls")=0 Тогда
Возврат;
ИначеЕсли гКнига_Открыть(Файл,Каталог,Область,Высота,Ширина)=0 Тогда
Возврат;
КонецЕсли;
//справочник
С=СоздатьОбъект("Справочник.Товары");
С.ИспользоватьРодителя("");
С.ИспользоватьДату(РабочаяДата(),1);
//данные
Для Стр=2 По Высота Цикл
Состояние("Прогресс: "+Цел(Стр/Высота
0)+"%");
//код
ТекКод=СокрЛП(Область.Cells(Стр,1).Text);
Если С.НайтиПоКоду(ТекКод,2)=0 Тогда
Сообщить("Не найден товар по коду: "+ТекКод,"!");
Продолжить;
КонецЕсли;
//цена
ТекЦена=Число(Область.Cells(Стр,2).Text);
Если ТекЦена=0 Тогда
Продолжить;
КонецЕсли;
//значение
С.УстановитьАтрибут("Цена",ТекЦена);
//запись
Попытка
С.Записать();
Исключение
Сообщить("Ошибка записи: "+ОписаниеОшибки(),"!");
КонецПопытки;
КонецЦикла;
Предупреждение("Импортированы цены для "+Высота+" наименований товаров");
КонецПроцедуры
Импорт данных в 1С из текстового файла.
Основными преимуществами текстовых файлов являются их маленький размер и простота хранения данных внутри файла. Пожалуй, именно поэтому многие данные до сего дня передаются посредством текстовых файлов. Учитывая существующую потребность, вам могут потребоваться умения в импортировании данных в 1С из текстового файла. И нижеприведённые примеры помогут вам в приобретении необходимых знаний.
Самым распространённым случаем передачи данных текстовым файлом является способ выгрузки данных из системы Клиент-Банк. В примере, приведённом ниже, вы можете увидеть, каким образом производится загрузка данных о банковских операциях в 1С из текстового файла, в который предварительно выгружены данные из системы Банк-Клиент.
Код //импорт данных выписки из текстового файла программы "Банк-Клиент"
Процедура ИмпортироватьВыписку()
//настройка
Н=СоздатьОбъект("Справочник.НастройкиИмпортаВыписки");
Если РСчет.НастройкаИмпортаВыписки.Выбран()=1 Тогда
Н.НайтиЭлемент(РСчет.НастройкаИмпортаВыписки);
ИначеЕсли Н.Выбрать("Выбор настройки импорта","ДляВыбора")=0 Тогда
Возврат;
КонецЕсли;
//очистка строк
Если КоличествоСтрок()>0 Тогда
Если Вопрос("Удалить строки?","ОК+Отмена")="Отмена" Тогда
Возврат;
КонецЕсли;
УдалитьСтроки();
КонецЕсли;
//файл
Файл=Формат(ДатаДок,"Д ДДММГГ");
Файл=СтрЗаменить(Файл,".","");
Файл=СокрЛП(Н.Каталог)+"\"+Файл+".txt");
Если ФС.СуществуетФайл(Файл)=0 Тогда
Сообщить("Файл не найден: "+Файл,"!");
Предупреждение("Файл электронной выписки за "+ДатаДок+" не найден!");
Возврат;
КонецЕсли;
//источник
Т=СоздатьОбъект("Текст");
Т.Открыть(Файл);
Если Т.КоличествоСтрок()=0 Тогда
Сообщить("Файл пустой: "+Файл, "!");
Предупреждение("Файл электронной выписки за "+ДатаДок+" пустой!");
Возврат;
КонецЕсли;
//установки
ОснСчет=СокрЛП(РСчет.НомерСчета);
ОснМфо=Формат(РСчет.Банк.Код,"Ч(0)9");
ОснВалюта=СокрЛП(РСчет.Валюта.Код);
СтавкаНдс=Константа.БазНдс.Ставка.Получить(ДатаДок);
К=СоздатьОбъект("Справочник.Контрагенты");
//выбор
Для й=1 По Т.КоличествоСтрок() Цикл
Стр=Т.ПолучитьСтроку(й);
Если ПустаяСтрока(Стр)=1 Тогда
Прервать;
КонецЕсли;
//перекодировка
Если Н.ФлагДос=1 Тогда
Стр=OemToAnsi(Стр);
Стр=СтрЗаменить(Стр,"\"+Симв(34),Симв(34));
КонецЕсли;
//деление
Стр=СтрЗаменить(Стр,Симв(34)+" "+Симв(34),РазделительСтрок);
//данные
Имя1=СтрПолучитьСтроку(Стр,3);
Окпо1=СтрПолучитьСтроку(Стр,4);
Банк1=СтрПолучитьСтроку(Стр,5);
ТекМфо1=СтрПолучитьСтроку(Стр,6);
ТекСчет1=СтрПолучитьСтроку(Стр,7);
Имя2=СтрПолучитьСтроку(Стр,8);
Окпо2=СтрПолучитьСтроку(Стр,9);
Банк2=СтрПолучитьСтроку(Стр,10);
ТекМфо2=СтрПолучитьСтроку(Стр,11);
ТекСчет2=СтрПолучитьСтроку(Стр,12);
ТекВалюта=СтрПолучитьСтроку(Стр,13);
ТекСумма=СтрПолучитьСтроку(Стр,14);
ТекИнфо=СтрПолучитьСтроку(Стр,16);
//проверка
Если Не(Оснвалюта=ТекВалюта) Тогда
Сообщить("Строка "+й+": Не найдена Валюта "+РСчет.Валюта.Наименование+" по коду: "+ОснВалюта,"!");
Продолжить;
ИначеЕсли Не(ОснМфо=ТекМфо1) И Не(ОснМфо=ТекМфо2) Тогда
Сообщить("Строка "+й+": Не найден Банк "+РСчет.Банк.Наименование+" по коду МФО: "+ОснМфо,"!");
Продолжить;
ИначеЕсли Не(ОснСчет=ТекСчет1) И Не(ОснСчет=ТекСчет2) Тогда
Сообщить("Строка "+й+": Не найден РСчет по коду: "+ОснСчет,"!");
Продолжить;
КонецЕсли;
//строка
НоваяСтрока();
Если (ОснМфо=ТекМфо1) И (ОснСчет=ТекСчет1) Тогда
//приход
УстановитьАтрибут("ПриходРасход",Перечисление.ПлюсМинус.Плюс);
УстановитьАтрибут("Счет",Н.СчетД);
КодКлиента=Окпо2;
ИмяКлиента=Имя2;
Иначе
//расход
УстановитьАтрибут("ПриходРасход",Перечисление.ПлюсМинус.Минус);
УстановитьАтрибут("Счет",Н.СчетК);
КодКлиента=Окпо1;
ИмяКлиента=Имя1;
КонецЕсли;
//содержание
УстановитьАтрибут("Содержание",ТекИнфо);
//сумма
УстановитьАтрибут("ВидНдс",Константа.БазНдс);
УстановитьАтрибут("СуммаСНдс",ТекСумма);
УстановитьАтрибут("Ндс",СуммаСНдс*СтавкаНдс/(1+СтавкаНдс));
//субконто
НазначитьТип("Субконто",ВидыСубконто.Контрагенты);
Если К.НайтиПоРеквизиту("ЕДРПОУ",КодКлиента,1)=1 Тогда
УстановитьАтрибут("Субконто",К.ТекущийЭлемент());
ИначеЕсли Н.ФлагСоздать=1 Тогда
К.Новый();
К.Наименование=ИмяКлиента;
К.ПолнНаименование=ИмяКлиента;
К.Едрпоу=КодКлиента;
К.Записать();
Сообщить("Строка "+й+": Новый контрагент: "+ИмяКлиента);
//контрагент
УстановитьАтрибут("Субконто",К.ТекущийЭлемент());
Иначе
Сообщить("Строка "+й+": Не найден Контрагент по коду ЕГРПОУ: "+КодКлиента,"!");
КонецЕсли;
КонецЦикла;
Предупреждение("Обработка выполнена");
КонецПроцедуры
Импорт данных из файла формата DBF
Старый добрый формат dBase по-прежнему используется для хранения массивов данных. Чего уж говорить, если обычная версия 1С:Предприятия (не SQL) сама хранит базы данных в файлах с расширением DBF? Формат файлов DBF, на мой взгляд, очень удобен для передачи данных в базу 1С, поскольку преимуществами файла формата dBase являются маленький размер и матричная система хранения данных.
Программист 1С может встретиться с необходимостью импортировать данные в 1С из файла DBF, в который экспортированы данные о банковских операциях из системы Банк-Клиент. В нижеприведённом примере вы можете увидеть пример обработки файла DBF, из которого в 1С импортируется банковская выписка.
Код //импорт банковских операций в базу 1С из внешнего файла DBF, созданного в системе Банк-Клиент
Процедура КнопкаИмпорт()
Перем Файл,Каталог;
Если Вопрос("Импортировать данные?","ОК+Отмена")="Отмена" Тогда
Возврат;
ИначеЕсли ФС.ВыбратьФайл(0,Файл,Каталог,"Открыть файл","Файлы Клиент-Банк (dbf)|*.dbf|Все файлы|*.*")=0 Тогда
Возврат;
КонецЕсли;
//удаление строк
Если КоличествоСтрок()>0 Тогда
Если Вопрос("Удалить все строки табличной части документа?","Да+Нет")="Да" Тогда
УдалитьСтроки();
КонецЕсли;
КонецЕсли;
//создание нового файла
Б=СоздатьОбъект("XBase");
Б.ОткрытьФайл(Каталог+Файл,,1);
Если Б.Открыта()=0 Тогда
Сообщить("Не удалось открыть файл DBF","!");
Возврат;
КонецЕсли;
//справочник
С=СоздатьОбъект("Справочник.Контрагенты");
//строки
Счетчик=0;
Для й=1 По Б.КоличествоЗаписей() Цикл
Б.Перейти(й);
//проверка
Если Не(Б.OperData=ДатаДок) Тогда
Продолжить;
ИначеЕсли Не(Б.KodVal=980) Тогда
Продолжить;
ИначеЕсли Не(Число(Б.Kod_Cred)=Число(Фирма.РегКод)) Тогда
Продолжить;
ИначеЕсли Не(Число(Б.Mfo_Cred)=Число(Фирма.Банк.Код)) Тогда
Продолжить;
ИначеЕсли Не(Число(Б.Acc_Credit)=Число(Фирма.Счет)) Тогда
Продолжить;
КонецЕсли;
//строка
НоваяСтрока();
УстановитьАтрибут("Сумма",Б.OperSum);
УстановитьАтрибут("Примечание",СокрЛП(Б.Naznach));
//контрагент
Если С.НайтиПоРеквизиту("РегКод",Б.Kod_Deb,1)=0 Тогда
С.Новый();
С.Наименование=СокрЛП(Б.Naim_Deb);
С.РегКод=Б.Kod_Deb;
С.Записать();
КонецЕсли;
УстановитьАтрибут("Контрагент",С.ТекущийЭлемент());
//счётчик
Счетчик=Счетчик+1;
КонецЦикла;
//закрытие файла
Б.ЗакрытьФайл();
//извещение
Предупреждение("Импортировано строк: "+Счетчик);
КонецПроцедуры
Импорт данных из файла формата XML
С недавних пор набирает популярность новый формат передачи многомерных массивов данных, который носит название eXtensible Markup Language или XML. Возможности нового языка разметки, используемого для хранения данных, огромны настолько, что его стали использовать даже для. передачи данных в программу 1С:Предприятие. Поэтому современный специалист по платформе 1С обязан уметь импортировать данные в 1С из файла, имеющего формат XML.
//процедура формирует печатную таблицу с данными, содержащимися в файле формата XML
Процедура Сформировать()
Перем Файл,Каталог;
Если ФС.ВыбратьФайл(0,Файл,Каталог,"Открытие документа XML","Документы XML|*.xml")=0 Тогда
Возврат;
КонецЕсли;
//таблица
Т=СоздатьОбъект("Таблица");
Т.ИсходнаяТаблица("");
Т.ВывестиСекцию("Шапка");
//документ
Анализатор=СоздатьОбъект("AddIn.XMLParser");
Д=Анализатор.СоздатьДокумент();
Д.Загрузить(Каталог+Файл);
//узлы
Узел=Д.ВыбратьУзел("Данные");
Для i=1 По Узел.КоличествоПодчиненных() Цикл
ТекУзел=Узел.ПолучитьПодчиненныйПоНомеру(i);
Состояние(ТекУзел.Текст);
//строка
тЭлемент=ТекУзел.Наименование;
тЗначение=ТекУзел.Значение;
Т.ВывестиСекцию("Строка");
КонецЦикла;
//таблица
Т.Опции(1,1,1,0);
Т.ПовторятьПриПечатиСтроки(1,1);
Т.ТолькоПросмотр(1);
Т.Показать("XML");
КонецПроцедуры
Ну вот собственно и все. Надеюсь данная статья оказалась вам полезна.
В статье продемонстрированы программные методы экспортирования данных из программы "1С:Предприятие 7.7".
Экспорт данных из 1С в Текстовой файл TXT, CSV
Код //сохранение данных таблицы значений в текстовой файл
//аргументы: М - таблица значений
Процедура ВыполнитьЭкспорт(М)
Т=СоздатьОбъект("Текст");
//выборка
М.ВыбратьСтроки();
Пока М.ПолучитьСтроку()=1 Цикл
Состояние("Экспорт: "+
Цел(М.НомерСтроки/М.КоличествоСтрок()
0)+"%");
тФирма=М.Фирма.ПолныйКод();
тТовар=М.Товар.ПолныйКод();
тСклад=М.Склад.ПолныйКод();
тКоличество=М.Количество;
Т.ДобавитьСтроку("Фирма="+тФирма+";Товар="+тТовар+";Склад="+тСклад+
";Количество="+тКоличество+";");
КонецЦикла;
//файл
Файл="export"+Формат(ДатаК,"Д ГГГГММДД")+".csv";
Т.Записать(Файл);
Сообщить("Файл с данными сохранен в каталоге
экспортной БД: "+КаталогИБ()+Файл);
КонецПроцедуры
Экспорт данных из 1С в файл dBase формата DBF
Код //процедура записывает данные об использовании
отчёта в файл dBase формата DBF
Процедура гЗаписатьСтатистикуИспользованияОтчета(ИдентификаторОтчета) Экспорт
//путь к файлу; имя файла не должно превышать 8 знаков
Путь=КаталогИБ()+"Stat.dbf";
//создание нового файла
Б=СоздатьОбъект("XBase");
Если ФС.СуществуетФайл(Путь)=0 Тогда
//добавление полей
Б.ДобавитьПоле("REPORT","S",100,0);
Б.ДобавитьПоле("USER","S",50,0);
Б.ДобавитьПоле("DATE","D",10,0);
Б.ДобавитьПоле("TIME","S",5,0);
//создание файла
Б.СоздатьФайл(Путь);
Б.ЗакрытьФайл();
КонецЕсли;
//открытие файла
Б.ОткрытьФайл(Путь);
Если Б.Открыта()=0 Тогда
Сообщить("Не удалось открыть файл DBF","!");
Возврат;
КонецЕсли;
//добавление записи
Б.Добавить();
Б.Date=ТекущаяДата();
Б.Time=ТекущееВремя();
Б.Report=СокрЛП(ИдентификаторОтчета);
Б.User=гПользователь.Наименование;
Б.Записать();
//закрытие файла
Б.ЗакрытьФайл();
КонецПроцедуры
Экспорт данных из 1С на лист MS Excel
Код //функция создаёт новую книгу в MS Excel и выгружает табличную часть заданного документа
Процедура гМногострочка_Экспортировать(Док) Экспорт
//документ
Д=СоздатьОбъект("Документ");
Д.НайтиДокумент(Док);
//приложение
Оле=СоздатьОбъект("Excel.Application");
Если ФлагВидимость=1 Тогда
Оле.Visible=1;
КонецЕсли;
Книга=Оле.Workbooks().Add();
Книга.Windows(1).Caption=Д.ПредставлениеВида()+" "+СокрЛП(Д.НомерДок);
Лист=Книга.Activesheet;
//шапка
Колонка=0;
Для i=1 По Метаданные.Документ(Д.Вид()).РеквизитТабличнойЧасти() Цикл
Ж=Метаданные.Документ(Д.Вид()).РеквизитТабличнойЧасти(i);
//колонка
Колонка=Колонка+1;
Ячейка=Лист.Cells(1,Колонка);
//текст
Ячейка.Value=Ж.Идентификатор;
//форматирование
Ячейка.Font.Bold=1;
Если Ж.Тип="Число" Тогда
Попытка
Лист.Columns(Колонка).NumberFormat="# ##0.00";
Исключение
Лист.Columns(Колонка).NumberFormat="# ##0,00";
КонецПопытки;
КонецЕсли;
КонецЦикла;
//строки
Д.ВыбратьСтроки();
Пока Д.ПолучитьСтроку()=1 Цикл
Лист.Range("A"+Число(Д.НомерСтроки+1)).Select();
Колонка=0;
//многострочка
Для i=1 По Метаданные.Документ(Д.Вид()).РеквизитТабличнойЧасти() Цикл
Ж=Метаданные.Документ(Д.Вид()).РеквизитТабличнойЧасти(i);
Колонка=Колонка+1;
//значение
Значение=Д.ПолучитьАтрибут(Ж.Идентификатор);
Лист.Cells(Д.НомерСтроки+1,Колонка).Value=СокрЛП(Значение);
КонецЦикла;
КонецЦикла;
//авто подбор ширины
Лист.Cells.EntireColumn.AutoFit();
//закрепление области
Лист.Range("A2").Select();
Оле.ActiveWindow.FreezePanes=1;
Оле.Visible=1;
КонецПроцедуры
Управление MS Word из 1С
Методы работы с MS Word через OLE активно использованы в конфигурации "Договоры". Для определения числового кода текстовых констант MS Word использована обработка "Константы VBA".
* Конфигурация "Договоры"
* Универсальная обработка "Константы VBA"
Код //поиск текста в открытом документе MS Word
Функция Текст_Найти(Оле,аТекст)
Текст=СокрЛП(аТекст);
//поиск
Оле.Selection.Find.ClearFormatting();
Оле.Selection.Find.Text=Текст;
Оле.Selection.Find.MatchCase=0;
Оле.Selection.Find.MatchWholeWord=0;
Оле.Selection.Find.MatchWildcards=0;
Оле.Selection.Find.MatchSoundsLike=0;
Оле.Selection.Find.MatchAllWordForms=0;
Оле.Selection.Find.Forward=1;
Оле.Selection.Find.Wrap=wdFindContinue;
Оле.Selection.Find.Format=0;
Ответ=Оле.Selection.Find.Execute();
//найден
Если Оле.Selection.Find.Found()=0 Тогда
Сообщить("Текст не найден: "+Текст);
Возврат(0);
Иначе
Возврат(1);
КонецЕсли;
КонецФункции
//поиск и замена текста в документе MS Word
Процедура Договор_Заменить()
//путь
Если ФС.ВыбратьФайл(0,Файл,Каталог,"Открыть старый файл","Файлы MS Word|*.doc")=0 Тогда
Возврат;
КонецЕсли;
//приложение
Оле=СоздатьОбъект("Word.Application");
Оле.Documents.Open(Каталог+Файл,,1);
//переход курсора в начало текста
Оле.Selection.HomeKey(wdStory);
//замена Номер договора
Если Текст_Найти(Оле,"ДОГОВОР")=1 Тогда
Оле.Selection.EndKey(wdLine,wdCharacter);
Оле.Selection.TypeText("ДОГОВОР № "+гНомерДок(НомерДок));
КонецЕсли;
//замена Дата договора
Если Текст_Найти(Оле,Константа.ГодСтарый)=1 Тогда
Оле.Selection.MoveLeft(wdWord,3);
Оле.Selection.EndKey(wdLine,wdCharacter);
Оле.Selection.TypeText(ДатаДоговора());
КонецЕсли;
//переход курсора в начало текста
Оле.Selection.HomeKey(wdStory);
Оле.Visible=1;
//предупреждение
Предупреждение("Создание нового договора копированием старого выполнено.");
КонецПроцедуры
Экспорт данных в файл формата XML
Код //процедура выгружает элементы справочника "Физические лица" в файл формата XML
Процедура Лица_Выгрузить()
//справочник
С=СоздатьОбъект("Справочник.Лица");
//анализатор
Анализатор=СоздатьОбъект("AddIn.XMLParser");
Корень=Анализатор.СоздатьДокумент();
//данные
Данные=Корень.СоздатьПодчиненныйЭлемент("Данные");
Данные.УстановитьАтрибут("Дата",ТекущаяДата());
Данные.УстановитьАтрибут("Время",ТекущееВремя());
Данные.УстановитьАтрибут("Автор",гПользователь.Наименование);
//наполнение
Группа=Данные;
С.ВыбратьЭлементы();
Пока С.ПолучитьЭлемент()=1 Цикл
Если С.ЭтоГруппа()=1 Тогда
Группа=Данные.СоздатьПодчиненныйЭлемент(С.Наименование);
Иначе
Э=Группа.СоздатьПодчиненныйЭлемент("Лицо");
Э.Значение=С.Код;
Э.УстановитьАтрибут("Наименование",С.Наименование);
КонецЕсли;
КонецЦикла;
//запись
Корень.Записать("C:\People.xml");
Предупреждение("ОК");
КонецПроцедуры
Управление MS Outlook из 1С
Код //создать новое сообщение из 1С в MS Outlook
Процедура Письмо_Создать()
//приложение
Попытка
Оле=CreateObject("Outlook.Application");
ЕстьОшибка=0;
Исключение
Предупреждение("Не удалось создать письмо в MS Outlook!");
ЕстьОшибка=1;
КонецПопытки;
//адрес
Адрес=СокрЛП(Лицо.АдресЭ);
//письмо
Если ЕстьОшибка=0 Тогда
//Outlook
Письмо=Оле.CreateItem(0);
Письмо.Subject=Клиент.Наименование+?(Лицо.Выбран()=0,"",", "+Лицо.Наименование);
Письмо.Body=гЛицо(Лицо);
Если ПустаяСтрока(Адрес)=0 Тогда
Письмо.Recipients.Add(Адрес);
КонецЕсли;
Если ПустаяСтрока(Путь)=0 Тогда
Письмо.Attachments.Add(Путь);
КонецЕсли;
Письмо.Display();
Иначе
//тема
Тема=Клиент.Наименование;
Если Лицо.Выбран()=1 Тогда
Тема=Тема+", "+Лицо.Наименование+"&body="+СокрЛП(Лицо.Имя);
КонецЕсли;
ЗапуститьПриложение("mailto:"+Адрес+"?subject="+Тема);
КонецЕсли;
КонецПроцедуры
//создать запись в календаре событий
Процедура Календарь_Создать()
//приложение
Попытка
Оле=CreateObject("Outlook.Application");
Исключение
Предупреждение("Не удалось создать запись в календаре событий в MS Outlook!");
Возврат;
КонецПопытки;
//задача
Задача=Оле.CreateItem(1);
Задача.Subject="Название встречи";
Задача.Start="01.11.2007 15:00:00";
Задача.End="01.11.2007 16:00:00";
Задача.Body="Описание встречи";
Задача.Location="Место встречи";
Задача.ReminderMinutesBeforeStart=30;
Задача.BusyStatus=0;
Задача.MeetingStatus=0;
Задача.Sensitivity=2;
Задача.Save();
КонецПроцедуры
//создать новую задачу из 1С в MS Outlook
Процедура Задача_Создать()
//приложение
Попытка
Оле=CreateObject("Outlook.Application");
Исключение
Предупреждение("Не удалось создать задачу в MS Outlook!");
Возврат;
КонецПопытки;
//задача
Задача=Оле.CreateItem(3);
Задача.Subject=Клиент.Наименование;
Задача.StartDate=ДатаДок+Константа.Фирма.ПериодСобытие;
Задача.Display();
Если Лицо.Выбран()=1 Тогда
Задача.Body=
""+Лицо.Наименование+"
|"+гЛицо(Лицо)+"
|"+СокрЛП(Лицо.Должность)+"
|моб. "+СокрЛП(Лицо.ТелефонМ)+"
|гор. "+СокрЛП(Лицо.ТелефонГ);
КонецЕсли;
КонецПроцедуры
Запустить из 1С страницу Интернет, отправить электронное почтовое сообщение
//создание почтового сообщения в ассоциированном почтовом клиенте с заданным электронным адресом
Процедура гКнопкаПочта(Значение) Экспорт
Если ПустаяСтрока(Значение)=0 Тогда
ЗапуститьПриложение("mailto:"+СокрЛП(Значение));
КонецЕсли;
КонецПроцедуры
//открытие страницы Интернет по заданному адресу в ассоциированном Интернет-браузере
Процедура гКнопкаИнтернет(Значение) Экспорт
Если ПустаяСтрока(Значение)=0 Тогда
ЗапуститьПриложение(СокрЛП(Значение));
КонецЕсли;
КонецПроцедуры
Внимание! Если у вас не получилось найти нужную информацию, используйте
рубрикатор или воспользуйтесь
поиском .
книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать