helpf.pro
Регистрация

v8: Как вывести рисунок (фото)с правой стороны?

Rina82
07.09.2011 11:39Прочитано: 4288
Код 1C v 8.х
 АктивныйДокумент = ПолучитьМакет("Справка");
КомОбъект = АктивныйДокумент.Получить();

Документ = КомОбъект.Application.Documents(1);
Документ.Activate();

//КомОбъект.Application.Visible=1;
КомОбъект.Bookmarks("Сотрудник").S_elect();
КомОбъект.Application.S_election.TypeText(СтруктураПараметровWord.Сотрудник);

КомОбъект.Bookmarks("ДолжностьРаботника").S_elect();
КомОбъект.Application.S_election.TypeText(СтруктураПараметровWord.ДолжностьРаботника);

КомОбъект.Variables.Item("ДатаРождения").Value=Строка(СтруктураПараметровWord.ДатаРождения);
КомОбъект.Variables.Item("МестоРождения").Value=Строка(СтруктураПараметровWord.МестоРождения);
КомОбъект.Variables.Item("МестоЖительства1").Value=Строка(СтруктураПараметровWord.МестоЖительства1);
КомОбъект.Variables.Item("МестоЖительства2").Value=Строка(СтруктураПараметровWord.МестоЖительства2);
КомОбъект.Variables.Item("СемейноеПоложение").Value=Строка(СтруктураПараметровWord.СемейноеПоложение);
КомОбъект.Variables.Item("Дети").Value=Строка(СтруктураПараметровWord.Дети);
// заполняем таблицу образование
// переходим на закладку
// нужно в макете в первой колонке первой строки
// установить закладку "ПерваяСтрока"
КомОбъект.GoTo(-1, ,, "ПерваяСтрока").S_elect();
Счетчик = 1;
Рез = ПолучитьСведенияОбОбразовании();
КолВоСтрок = Рез.Выгрузить().Количество();
Если КолВоСтрок > 0 Тогда

ВыборкаОбр = Рез.Выбрать();
Пока ВыборкаОбр.Следующий() Цикл

// заполняем первую колонку
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаОбр.ВидОбразования));
// переходим вправо
КомОбъект.Application.S_election.MoveRight(1, 1);
// заполняем вторую колонку
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаОбр.УчебноеЗаведение));
КомОбъект.Application.S_election.MoveRight(1, 1);

КомОбъект.Application.S_election.TypeText(Строка(ВыборкаОбр.ГодОкончания));
КомОбъект.Application.S_election.MoveRight(1, 1);

КомОбъект.Application.S_election.TypeText(Строка(ВыборкаОбр.Специальность));
КомОбъект.Application.S_election.MoveRight(1, 1);


КомОбъект.Application.S_election.TypeText(Строка(ВыборкаОбр.Квалификация));
КомОбъект.Application.S_election.MoveRight(1, 1);
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаОбр.СреднийБалл)); // СреднийБалл
КомОбъект.Application.S_election.MoveRight(1, 1);
// КомОбъект.Application.S_election.MoveRight(1, 1);


// добавляем новую строку
Если КолВоСтрок > Счетчик Тогда
КомОбъект.Application.S_election.I_nsertRowsBelow(1);
КонецЕсли;

Счетчик = Счетчик + 1;

КонецЦикла;
КонецЕсли;

КомОбъект.GoTo(-1, ,, "ВтораяСтрока").S_elect();
Счетчик = 1;

Рез = ПолучитьДанныеПовышенияКвалификации();
КолВоСтрок = Рез.Выгрузить().Количество();
Если КолВоСтрок > 0 Тогда

ВыборкаПовышения = Рез.Выбрать();
Пока ВыборкаПовышения.Следующий() Цикл

// заполняем первую колонку
КомОбъект.Application.S_election.TypeText(Строка(Формат(ВыборкаПовышения.ДатаНачала,"ДФ=dd.MM.yyyy")));
// переходим вправо
КомОбъект.Application.S_election.MoveRight(1, 1);
// заполняем вторую колонку
КомОбъект.Application.S_election.TypeText(Строка(Формат(ВыборкаПовышения.ДатаОкончания,"ДФ=dd.MM.yyyy")));
КомОбъект.Application.S_election.MoveRight(1, 1);

КомОбъект.Application.S_election.TypeText(Строка(ВыборкаПовышения.ВидПовышения));
КомОбъект.Application.S_election.MoveRight(1, 1);
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаПовышения.УчебноеЗаведение));
КомОбъект.Application.S_election.MoveRight(1, 1);
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаПовышения.Квалификация));
КомОбъект.Application.S_election.MoveRight(1, 1);
КомОбъект.Application.S_election.MoveRight(1, 1);


// добавляем новую строку
Если КолВоСтрок > Счетчик Тогда
КомОбъект.Application.S_election.I_nsertRowsBelow(1);
КонецЕсли;

Счетчик = Счетчик + 1;

КонецЦикла;
КонецЕсли;

КомОбъект.GoTo(-1, ,, "ТретьяСтрока").S_elect();
Счетчик = 1;

Результат = ПолучитьЯзыки();
КолвоСтрок = Результат.Выгрузить().Количество();
Если КолВоСтрок > 0 Тогда

ВыборкаЯзыки = Результат.Выбрать();
Пока ВыборкаЯзыки.Следующий() Цикл
// заполняем первую колонку
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаЯзыки.Язык));
// переходим вправо
КомОбъект.Application.S_election.MoveRight(1, 1);
// заполняем вторую колонку
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаЯзыки.Степень));
КомОбъект.Application.S_election.MoveRight(1, 1);
// добавляем новую строку
Если КолВоСтрок > Счетчик Тогда
КомОбъект.Application.S_election.I_nsertRowsBelow(1);
КонецЕсли;

Счетчик = Счетчик + 1;

КонецЦикла;
КонецЕсли;

КомОбъект.GoTo(-1, ,, "ЧетвертаяСтрока").S_elect();
Счетчик = 1;

РезТруд = ПолучитьСведенияОТрудовойДеятельности();
КолвоСтрок = РезТруд.Выгрузить().Количество();
Если КолВоСтрок > 0 Тогда

ВыборкаТруд = РезТруд.Выбрать();
Пока ВыборкаТруд.Следующий() Цикл
// заполняем первую колонку
КомОбъект.Application.S_election.TypeText(Строка(Формат(ВыборкаТруд.ДатаНачала,"ДФ=dd.MM.yyyy")));
// переходим вправо
КомОбъект.Application.S_election.MoveRight(1, 1);
// заполняем вторую колонку
ДатаУвольнения = ?(ВыборкаТруд.ДатаОкончания = Дата("00010101"), " по наст.время ("+Формат(ДатаОтчета,"ДФ=dd.MM.yyyy")+")",Формат(ВыборкаТруд.ДатаОкончания,"ДФ=dd.MM.yyyy"));

КомОбъект.Application.S_election.TypeText(Строка(ДатаУвольнения));
КомОбъект.Application.S_election.MoveRight(1, 1);
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаТруд.Должность));
КомОбъект.Application.S_election.MoveRight(1, 1);
КомОбъект.Application.S_election.TypeText(Строка(ВыборкаТруд.Организация));
КомОбъект.Application.S_election.MoveRight(1, 1);


Если КолВоСтрок > Счетчик Тогда
КомОбъект.Application.S_election.I_nsertRowsBelow(1);
КонецЕсли;

Счетчик = Счетчик + 1;

КонецЦикла;
КонецЕсли;


КомОбъект.GoTo(-1, ,, "ПятаяСтрока").S_elect();
Счетчик = 1;

РезНаграды = ПолучитьСведенияОНаградах();
КолвоСтрок = РезНаграды.Выгрузить().Количество();
Если КолВоСтрок > 0 Тогда

ВыборкаНаграды = РезНаграды.Выбрать();
Пока ВыборкаНаграды.Следующий() Цикл
// заполняем первую колонку
КомОбъект.Application.S_election.TypeText(Строка(Формат(ВыборкаНаграды.ДатаНаграждения,"ДЛФ=D")));
// переходим вправо
КомОбъект.Application.S_election.MoveRight(1, 1);
// заполняем вторую колонку
Поощрение = ""+ ВыборкаНаграды.ПоощренияИНаграды+ " "+ ВыборкаНаграды.НаименованиеНаграды;
КомОбъект.Application.S_election.TypeText(Строка(Поощрение));
КомОбъект.Application.S_election.MoveRight(1, 1);


Если КолВоСтрок > Счетчик Тогда
КомОбъект.Application.S_election.I_nsertRowsBelow(1);
КонецЕсли;

Счетчик = Счетчик + 1;

КонецЦикла;
КонецЕсли;

КомОбъект.Variables.Item("РуководительДолжность").Value=Строка(СтруктураПараметровWord.РуководительДолжность);
КомОбъект.Variables.Item("РуководительФИО").Value=Строка(СтруктураПараметровWord.РуководительФИО);
КомОбъект.Variables.Item("ДатаОтчета").Value=Строка(Формат(?(НЕ ЗначениеЗаполнено(ДатаОтчета),ТекущаяДата(),ДатаОтчета),"ДЛФ=DD"));

КомОбъект.Fields.UpDate();


//попытка вставить рисунок
ОбъектИзХранилища = Ссылка.ОсновноеИзображение.Хранилище;
Если ОбъектИзХранилища <> NULL Тогда
ОсновноеИзображение = ОбъектИзХранилища.Получить();
Если ОсновноеИзображение <> Неопределено Тогда
Фото = ОсновноеИзображение;
Иначе
Фото = Новый Картинка;
КонецЕсли;
КонецЕсли;
///////////

//
//ТекИзображение.Объект = СпрТкани.Ссылка;
//ТекИзображение.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
//Хранилище = Новый ХранилищеЗначения(НоваяКартинка, Новый СжатиеДанных());
//ТекИзображение.Хранилище = Хранилище.Получить();


//// в этом месте он все выводит ...

//ЭлементыФормы.ПолеКартинки1.Картинка = Хранилище.Получить();
//ТекИзображение.Записать();

///////////////
попытка
ФайлФото = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнойКаталогФайлов")+"\Image.bmp";
//ФайлФото = "C:\abc\Image.bmp";
Фото.Записать(ФайлФото);
////////КомОбъект.Application.S_election

КомОбъект.Bookmarks("Фото").S_elect();

Shapes = КомОбъект.Application.S_election.Range().InlineShapes.AddPicture(ФайлФото,1,Истина);
// показать окно ворда
КомОбъект.ActiveWindow.Visible = Истина;
//Shapes.Height = 108;
Shapes.Height = 105;
Shapes.Width = 85;
// Shapes.justifyLeft=Истина;
Shape = Shapes.ConvertToShape();
Shape.WrapFormat.Type = 0; // по контуру...



Исключение
// показать окно ворда
КомОбъект.ActiveWindow.Visible = Истина;
КонецПопытки;

// обнуляем КомОбъект
КомОбъект = 0;

//КомОбъект.Close();

Изменено 07.09.11 12:11:45 по причине: Раскрашен Код
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
07.09.2011 12:12Ответ № 1
Не понял, так он вообще добавляет в Excel фото или нет?
Rina82
07.09.2011 12:17Ответ № 2
Да, добавляет (Это Word) Выводит фото с левой стороны, но мне нужно с правой
E_Migachev
07.09.2011 13:16Ответ № 3
(2) Rina82,
Код 1C v 8.х
 wdAlignParagraphRight = 2;
S_election.ParagraphFormat.Alignment = wdAlignParagraphRight;

вот еще пример Работа 1С с MS Word через OLE
E_Migachev
07.09.2011 13:19Ответ № 4
+ (3)
Код 1C v 8.х
 //ВАЖНО - описания вордовских констант (они недоступны по ОЛЕ) !!!
Перем False;
Перем True;

Перем wdAlignParagraphLeft; // по правому краю
Перем wdAlignParagraphCenter; //по центру
Перем wdAlignParagraphRight; //по правому краю
Перем wdAlignParagraphJustify; //по ширине обычно применимое
Перем wdAlignParagraphDistribute; //по ширине ах_енно некомпактно, последняя строка вообще в жопе
Перем wdAlignParagraphJustifyMed; //по ширине средней компактности
Перем wdAlignParagraphJustifyHi; //по ширине очень разреженно
Перем wdAlignParagraphJustifyLow; //по ширине очень компактно

Перем wdCellAlignVerticalBottom;
Перем wdCellAlignVerticalCenter;
Перем wdCellAlignVerticalTop;

Перем wdWord9TableBehavior;
Перем wdAutoFitFixed; // Автоматически корректировать ширину (размер)

Перем wdBorderBottom;// Нижняя грань таблицы
Перем wdBorderLeft; // Левая грань таблицы
Перем wdBorderRight; //Правая
Перем wdBorderTop; // нижняя
Перем wdBorderVertical; //Вертикальная (видимо смежная)

Перем wdLineStyleNone; //Граница таблицы не отображается
Перем wdLineStyleSingle;

Перем wdLine; //Используется в MoveDown (строка вниз/вниз)
Перем wdCharacter; //Используется в MoveRight (смещение на количество символов,)

Перем wdActiveEndPageNumber; //обращение к текущей строке Information
Перем wdNumberOfPagesInDocument; //обращение к общему количеству строк в Information

Перем wdPageBreak;

// ИНИЦИАЛИЗАЦИЯ ВОРДОВЫХ КОНСТАНТ И ЗНАЧЕНИЯ ЭТИХ КОНСТАНТ

False = 0;
True = 1;

wdAlignParagraphLeft = 0; // по правому краю
wdAlignParagraphCenter = 1; //по центру
wdAlignParagraphRight = 2; //по правому краю
wdAlignParagraphJustify = 3; //по ширине обычно применимое
wdAlignParagraphDistribute = 4; //по ширине ах_енно некомпактно, последняя строка вообще в жопе
wdAlignParagraphJustifyMed = 5; //по ширине средней компактности
wdAlignParagraphJustifyHi = 7; //по ширине очень разреженно
wdAlignParagraphJustifyLow = 8; //по ширине очень компактно

wdWord9TableBehavior = 0;
wdAutoFitFixed = 1; // Автоматически корректировать ширину (размер)

wdBorderBottom = -3;// Нижняя грань таблицы
wdBorderLeft = -2; // Левая грань таблицы
wdBorderRight = -4; //Правая
wdBorderTop = -1; // нижняя
wdBorderVertical = -6; //Вертикальная (видимо смежная)

wdLineStyleNone = 0; //Граница таблицы не отображается
wdLineStyleSingle = 1;

wdLine = 5; //Используется в MoveDown (строка вниз/вниз)
wdCharacter = 1; //Используется в MoveRight (смещение на количество символов,)

wdActiveEndPageNumber = 3; //обращение к текущей строке Information
wdNumberOfPagesInDocument = 4; //обращение к общему количеству строк в Information

wdPageBreak = 7; //вставка разрыва страницы (используется в I_nsertBreak(...))

wdCellAlignVerticalBottom = 3;
wdCellAlignVerticalCenter = 1;
wdCellAlignVerticalTop = 0;
Rina82
08.09.2011 11:29Ответ № 5
Все получилось!!! Спасибочки огромные)
Rina82
08.09.2011 11:29Ответ № 6
Вопрос закрыт!
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.