0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153

На оборотной стороне документа word в правой части документа, текст съезжает за границу документа

24.05.2014, 22:47. Показов 2194. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.

Есть код, который формирует документ из шаблона. И все вроде бы, но происходит что то непонятное. На оборотной стороне документа (2 страничка) в правой части документа, текст съезжает за границу документа. Я, и разработчик этого кода, никак не можем понять, почему. Ведь у него, по его словам, все нормально форматирует. Возможно ли это из-за разных версии офиса? У него office2007, у меня office2010.
Пожалуйста, помогите разобраться.

Это часть кода отвечающий за форматирования. Шаблон и результат форматирования прилагаются.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 /// <summary>
    /// Класс, описывающий путевки
    /// </summary>
    public class Mission : Template
    {
        public Mission(object templateFileName, object targetFileName, object fileFormat, bool isVisible)
            : base(templateFileName, targetFileName, fileFormat, isVisible)
        {}
        public void GetMissions(CheckedListBox source
                                    ,string cl_number
                                    ,string from
                                    ,string to
                                    ,string year
                                    ,string p_type)
        {
            WWord.Table tab = doc.Tables[1]; // just one table in document. 
            WWord.Table workTab;
            // Размещаем путевки
            var students = source.CheckedItems;
            int index = 0;
            object beforeRowNumber = doc.Tables[1].Rows[1]; //insert row before. Why? Don't ask me!!!
            int rest = source.CheckedItems.Count%2; // если путевок четное число - будем добавлять еще одну справа
            int bottomOfTable = 1;
            int run = 1;
            
            for (int i = 1; i <source.CheckedItems.Count/2+1*rest; i++)
            { 
                tab.Rows.Add(ref beforeRowNumber);
                tab.Rows.Add(ref beforeRowNumber);
                bottomOfTable += 2;
                // Dare to separate
 
 
                workTab = tab.Tables[index*3+1];    
                
                
                workTab.Range.Paragraphs[5].Range.Text = string.Format("на {0} практику", GetEndings(p_type, 3, @"ную"));
                workTab.Range.Paragraphs[8].Range.Text = ((DataRowView)students[index]).Row.ItemArray[0].ToString();
                workTab.Range.Paragraphs[10].Range.Text = cl_number;
                workTab.Range.Paragraphs[23].Range.Text = year;
                workTab.Range.Paragraphs[27].Range.Text = GetEndings(p_type, 3, @"ной");
                workTab.Range.Paragraphs[31].Range.Text = from;
                workTab.Range.Paragraphs[33].Range.Text = to;
                workTab.Range.Paragraphs[36].Range.Text = ((DataRowView)students[index++]).Row.ItemArray[1].ToString();
                tab.Rows[bottomOfTable].Cells[1].Range.Copy();
                tab.Rows[run].Cells[1].Range.Paste();
 
                
                workTab.Range.Paragraphs[5].Range.Text = string.Format("на {0} практику", GetEndings(p_type, 3, @"ную"));
                workTab.Range.Paragraphs[8].Range.Text = ((DataRowView)students[index]).Row.ItemArray[0].ToString();
                workTab.Range.Paragraphs[10].Range.Text = cl_number;
                workTab.Range.Paragraphs[23].Range.Text = year;
                workTab.Range.Paragraphs[27].Range.Text = GetEndings(p_type, 3, @"ной");
                workTab.Range.Paragraphs[31].Range.Text = from;
                workTab.Range.Paragraphs[33].Range.Text = to;
                workTab.Range.Paragraphs[36].Range.Text = ((DataRowView)students[index++]).Row.ItemArray[1].ToString();
                tab.Rows[bottomOfTable].Cells[1].Range.Copy();
                tab.Rows[run].Cells[2].Range.Paste();
                              
 
                tab.Rows[bottomOfTable+1].Cells[1].Range.Copy();
                tab.Rows[run+1].Cells[1].Range.Select();
                tab.Rows[run+1].Cells[1].Range.Paste();
                tab.Rows[run+1].Cells[2].Range.Select();
                tab.Rows[run+1].Cells[2].Range.Paste();
                run += 2;
               }
            workTab = tab.Tables[index * 3 + 1];
            
            if (rest == 0)
            {
                //четное число - добавляем путевку справа
 
                workTab.Range.Paragraphs[5].Range.Text = string.Format("на {0} практику", GetEndings(p_type, 3, @"ную"));
                workTab.Range.Paragraphs[8].Range.Text = ((DataRowView)students[index+1]).Row.ItemArray[0].ToString();
                workTab.Range.Paragraphs[10].Range.Text = cl_number;
                workTab.Range.Paragraphs[23].Range.Text = year;
                workTab.Range.Paragraphs[27].Range.Text = GetEndings(p_type, 3, @"ной");
                workTab.Range.Paragraphs[31].Range.Text = from;
                workTab.Range.Paragraphs[33].Range.Text = to;
                workTab.Range.Paragraphs[36].Range.Text = ((DataRowView)students[index+1]).Row.ItemArray[1].ToString();
                tab.Rows[bottomOfTable].Cells[1].Range.Copy();
                tab.Rows[bottomOfTable ].Cells[2].Range.Paste();
                tab.Rows[bottomOfTable+1].Cells[1].Range.Copy();
                tab.Rows[bottomOfTable+1].Cells[2].Range.Paste();
                
             }
 
            workTab = tab.Tables[index * 3+1];
            workTab.Range.Paragraphs[5].Range.Text = string.Format("на {0} практику", GetEndings(p_type, 3, @"ную"));
            workTab.Range.Paragraphs[8].Range.Text = ((DataRowView)students[index]).Row.ItemArray[0].ToString();
            workTab.Range.Paragraphs[10].Range.Text = cl_number;
            workTab.Range.Paragraphs[23].Range.Text = year;
            workTab.Range.Paragraphs[27].Range.Text = GetEndings(p_type, 3, @"ной");
            workTab.Range.Paragraphs[31].Range.Text = from;
            workTab.Range.Paragraphs[33].Range.Text = to;
            workTab.Range.Paragraphs[36].Range.Text = ((DataRowView)students[index++]).Row.ItemArray[1].ToString();
 
                     
            
 
        }
    }
Вложения
Тип файла: rar pytevki.rar (36.1 Кб, 9 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2014, 22:47
Ответы с готовыми решениями:

Из одного документа получить данные табличной части другого документа
Добрый день. Сразу оговорюсь 1С только начал изучать, поэтому просьба помидорами не закидывать. Вопрос такой. Есть документ...

Как из одного документа перенести значение из табличной части в реквизит другого документа?
Только начинаю осваивать 1С, учебная задача. Есть два документа &quot;Индивидуальный заказ&quot; и &quot;Конкретное изделие в заказе&quot;...

Заполнение реквизита табличной части документа (строки, из справочника наименования, внутри документа)
Здравствуйте. Волею судеб нужно сваять пару документов в 1с 77. Вроде бы как все шло нормально, но наткнулся на нерешаемую для себя...

1
0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153
25.05.2014, 14:30  [ТС]
Что, никто не может помочь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2014, 14:30
Помогаю со студенческими работами здесь

Автоматическое заполнение табличной части документа при изменении реквизита этого документа
Здравствуйте. Делаю свою конфу на 1с 8.3.5. Добавил справочник &quot;Сотрудники&quot; и подчиненный ему справочник &quot;КритерииОценки&quot;, где ...

Заполнение документа Word несколько раз данными из другого документа
есть некий документ Word(test.docx). Нужно создать новый документ(test1.docx), и заполнить его несколько раз данными из первого документа....

Постраничная разбивка документа Word. Сохранение под разными именами.(данные из документа)
ТЗ: Сделать так чтобы данные из Excel перетягивались в Word, При этом файл ворд разбивался на 5 файлов и сохранялся под 5 именами. ...

Оповещение о скором истечении документа, выполнение документа, истечение документа
Плохо разбираюсь в 1С. Помогите пожалуйста реализовать, чтоб когда документ подходил к истечению (за день до срока исполнения), то было...

Как изменить текст надписи формы документа при записи документа
Здравствуйте уважаемые, у меня простой вопрос - как мне при записи документа изменить надпись на форме, нужный код я написал, как мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru