|
Шаблон Ворд и 1С | ☑ | ||
---|---|---|---|---|
0
Baf
30.04.12
✎
01:13
|
пишу процедуру
Процедура ОсновныеДействияФормыПриказ(Кнопка) АктивныйДокумент = ПолучитьМакет("Макет"); КомОбъект = АктивныйДокумент.Получить(); КомОбъект.Application.Visible=1; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ГруппыТабличнаяЧасть.НомерСтроки КАК НомерСтроки, | ГруппыТабличнаяЧасть.Курсант, | ГруппыТабличнаяЧасть.ДатаРождения |ИЗ | Документ.Группы.ТабличнаяЧасть КАК ГруппыТабличнаяЧасть | |УПОРЯДОЧИТЬ ПО | НомерСтроки |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Группа", Группа); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл КомОбъект.Bookmarks(СокрЛП("Номер")).Select(); КомОбъект.Application.Selection.TypeText(СокрЛП(Выборка.НомерСтроки)); КомОбъект.Bookmarks(СокрЛП("Курсант")).Select(); КомОбъект.Application.Selection.TypeText(СокрЛП(Выборка.Курсант)); КомОбъект.Bookmarks(СокрЛП("ДатаРождения")).Select(); КомОбъект.Application.Selection.TypeText(СокрЛП(Формат(Выборка.ДатаРождения, "ДФ=dd.MM.yyyy"))); КонецЦикла; КонецПроцедуры и заполняются только первые строки...а надо чтоб заполнялись все...помогите советом как вывести всё |
|||
1
Torquader
30.04.12
✎
01:18
|
Ну если для каждой строки выборки вы пишете в одни и те же строки, то ничего удивительного в этом нет.
|
|||
2
Baf
30.04.12
✎
01:24
|
а как тогда нужно написать? просто задача такая - вывести нескольких сотрудников в один вордовский документ. Мой запрос выводит 28 сотрудников, в в ворд попадает только 1 - первый.Как быть в этом случае?может подскажешь?
|
|||
3
Baf
30.04.12
✎
01:25
|
я вот что думал, после каждой ФИО выводить какойто разделитель страниц или что то в этом роде, а как вывести голова уже закипает от этого вопроса
|
|||
4
Torquader
30.04.12
✎
01:29
|
А почему мы это делаем через закладки, а не добавляем строку, скажем в таблицу.
Да и через Selection (то есть выделение) работать как-то некошерно. Нужно открыть Word включить запись макроса и вручную добавить строку с данными потом выключить запись и посмотреть на полученный макрос - сразу станет ясно, как это нужно делать. |
|||
5
Anton_2011
30.04.12
✎
02:29
|
Нужно удалить 1С и Майкрософт Оффице с компьютера. И Виндоус. И поставить Генту. Ну или Убунту, если лень или МНУ не работает как нужно.
|
|||
6
Stim
30.04.12
✎
09:04
|
я делал, что добавлялись строки и заполнялись. позже найду
|
|||
7
Baf
30.04.12
✎
09:11
|
Дело еще в том что это не таблица. Stim найди плиз, ну вобще никак не получается.
|
|||
8
kod263
30.04.12
✎
11:06
|
в Макет добавить таблицу из одной строки и трех колонок
Табл = КомОбъект.Tables.Item(1); ин = 0; Пока Выборка.Следующий() Цикл ин = ин + 1; Если ин > 1 Тогда Табл.Rows.add(); КонецЕсли; Табл.Cell(ин,1).Select(); КомОбъект.ActiveWindow.ActivePane.Selection.TypeText(Выборка.Номер); Табл.Cell(ин,2).Select(); КомОбъект.ActiveWindow.ActivePane.Selection.TypeText(Выборка.Курсант); КонецЦикла; |
|||
9
Baf
30.04.12
✎
23:42
|
таблицу добавил, все красиво, но мне нужно чтоб каждый курсант был либо в отдельном файле либо в этом же но на новой странице. неужели никто не сумеет мне помочь?
|
|||
10
Torquader
01.05.12
✎
01:25
|
Вставь разрыв страницы в макет.
Если же нужно в отдельном файле - то сохраняй его после выбора каждой строки результата запроса. |
|||
11
Baf
01.05.12
✎
01:40
|
КомОбъект.Fields.UpDate();
КомОбъект.Application.Visible = Истина; КомОбъект.Activate(); КомОбъект.SaveAs("C:\"+Курсант+".doc"); КонецЦикла; КомОбъект.Close() "Если же нужно в отдельном файле - то сохраняй его после выбора каждой строки результата запроса." теперь так и делаю, но он мне выводит в каждом файле имя первого. |
|||
12
sanja26
01.05.12
✎
01:47
|
Замена.Execute("[ДатаНачала]", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка(Формат(ДоговорЗаказчика.Дата, "ДЛФ=DD")));
Word.selection.MoveDown(,12); Док.Paragraphs.Add(); //Word.Selection.MoveRight(,); Табл= Word.Selection.Range; //Формируем заголовок: Табл.InsertAfter("П/П*Наименование статьи расходов Агента*Стоимость (руб.)"); Табл.InsertParagraphAfter(); //сама таблица й = 1; Для Каждого строка из Услуги Цикл Табл.InsertAfter(Строка(й) + "*" + строка.Услуга+"*"+Строка.СуммаOUTСНДС); Табл.InsertParagraphAfter(); й = й + 1; КонецЦикла; Табл.InsertAfter("" + "*" + "ИТОГО общая сумма расходов Агента без НДС:"+"*"+"5"); Табл.InsertParagraphAfter(); Табл.InsertAfter("" + "*" + "НДС 18%:"+"*"+"5"); Табл.InsertParagraphAfter(); Табл.InsertAfter("" + "*" + "ИТОГО общая сумма расходов Агента, включая НДС 18%:"+"*"+"5"); Табл.InsertParagraphAfter(); Табл.ConvertToTable("*"); //Происходит конвертация строки в таблицу //не нравятся звездочки - используйте другой символ Док.Tables(1).AutoFormat(1); Док.Tables(1).Borders(wdBorderBottom).LineStyle = wdLineStyleNone; Док.Tables(1).Borders(wdBorderLeft).LineStyle = wdLineStyleNone; Док.Tables(1).Borders(wdBorderRight).LineStyle = wdLineStyleNone; Док.Tables(1).Borders(wdBorderTop).LineStyle = wdLineStyleNone; Док.Tables(1).Borders(wdBorderVertical).LineStyle = wdLineStyleNone; Док.Tables(1).Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone; |
|||
13
Torquader
01.05.12
✎
01:57
|
(12) Ему шаблон нужен - проще посмотреть, как работает Fields - то есть коллекция полей в документе, в которые нужно записать значение - тогда получится аналог макета в 1С, но уже в Word.
|
|||
14
Baf
01.05.12
✎
01:58
|
sanja26 у тебя все записывается в таблицу, ну а мне нужно на каждый лист отдельно
|
|||
15
sanja26
01.05.12
✎
02:00
|
||||
16
sanja26
01.05.12
✎
02:02
|
(14) тогда с макросами разбирайся
|
|||
17
Torquader
01.05.12
✎
02:04
|
d=Word.ActiveDocument;
For i=1 To 100 Do p=d.Paragraphs.Add(); p.PageBreakBefore=True; p.Range.Text="Это наш замечательный абзац"; EndDo; |
|||
18
Baf
01.05.12
✎
02:06
|
Процедура ОсновныеДействияФормыПриказ(Кнопка)
АктивныйДокумент = ПолучитьМакет("Макет"); КомОбъект = АктивныйДокумент.Получить(); КомОбъект.Application.Visible=1; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ГруппыТабличнаяЧасть.НомерСтроки КАК НомерСтроки, | ГруппыТабличнаяЧасть.Курсант, | ГруппыТабличнаяЧасть.ДатаРождения |ИЗ | Документ.Группы.ТабличнаяЧасть КАК ГруппыТабличнаяЧасть | |УПОРЯДОЧИТЬ ПО | НомерСтроки |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Группа", Группа); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Курсант = Выборка.Курсант; КомОбъект.Variables.Item("Курсант").Value = Курсант; КомОбъект.Fields.UpDate(); КомОбъект.Application.Visible = Истина; КомОбъект.Activate(); КомОбъект.SaveAs("C:\"+Курсант+".doc"); КонецЦикла; MSWord.Close(); Word = Новый COMОбъект("Word.Application"); Word.Visible = 0; WordDoc = Word.Documents; Docum = WordDoc.Add(); Пока Выборка.Следующий() Цикл Курсант = Выборка.Курсант; Word.Selection.InsertFile("C:\"+Курсант+".doc"); Word.Selection.InsertBreak(2); КонецЦикла; Word.Visible = 1; Word.Activate(); Word = "" ; Преобразовал код чуток, теперь он сохраняет мне каждого чела в отдельный файл, только имя внутри он выдает первого почему то, от сюда он складывает криво в один файл, понять не могу почему.Может у меня где то ошибка? |
|||
19
Torquader
01.05.12
✎
02:07
|
У тебя написано +Курсант+ а должно быть +Выборка.Курсант+
|
|||
20
sanja26
01.05.12
✎
02:11
|
(19) Курсант = Выборка.Курсант;
|
|||
21
Baf
01.05.12
✎
10:19
|
и всеравно выводит неправильно. ничего не изменилось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |