![]() |
|
MS Word. Метод или свойство SelectRow недоступны | ☑ | ||
---|---|---|---|---|
0
Ilnazio
02.02.21
✎
14:26
|
Произошла исключительная ситуация (MS): Метод или свойство SelectRow недоступны, потому что некоторые или все объекты не ссылаются на таблицу.
Что выяснил: При заполнении из 1с таблицы в ворде курсор переходит на следующую страницу, так как не хватает место для таблицы. И код ругается не найдя по всей видимости таблицу. Ругается на последнюю строку в цикле Если Документ.Bookmarks.Exists("Таблица2") Тогда Документ.Bookmarks("Таблица2").Select(); //Перемещаемся вниз, выделяем строку таблицы и копируем ее в буфер обмена Документ.Application.Selection.MoveDown(); Документ.Application.Selection.SelectRow(); Документ.Application.Selection.Copy(); Для Сч = 0 по ДанныеДляЗаполненияТаблицы.Количество()-1 Цикл Документ.Application.Selection.Find.Execute("{НомП}" ,,,,,,,,,Строка(Сч+1),2); Документ.Application.Selection.Find.Execute("{НаименованиеП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Номенклатура),2); Документ.Application.Selection.Find.Execute("{СтоимостьП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Цена)*Строка(ДанныеДляЗаполненияТаблицы[Сч].Количество),2); Документ.Application.Selection.Find.Execute("{СрокП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Номенклатураxyz_СрокОказания),2); //Перемещаемся вниз, вставляем из буфера обмена строку Документ.Application.Selection.MoveDown(); Документ.Application.Selection.Paste(); //Перемещаемся вверх и выделяем строку для замены значений Документ.Application.Selection.MoveUp(); Документ.Application.Selection.SelectRow(); КонецЦикла; //Вырезаем лишнюю строку Документ.Application.Selection.Cut(); //Скрываем обязательную закладку начала таблицы Документ.Bookmarks("Таблица2").Select(); Документ.Application.Selection.TypeText(" "); КонецЕсли; Кто сталкивался помогите пожалуйста |
|||
1
Ilnazio
02.02.21
✎
14:26
|
Если Документ.Bookmarks.Exists("Таблица2") Тогда
//ДанныеДляЗаполненияТаблицы = ПолучитьДанныеДляТаблицы1(СсылкаНаЗаказВМассиве); Документ.Bookmarks("Таблица2").Select(); //Перемещаемся вниз, выделяем строку таблицы и копируем ее в буфер обмена Документ.Application.Selection.MoveDown(); Документ.Application.Selection.SelectRow(); Документ.Application.Selection.Copy(); Для Сч = 0 по ДанныеДляЗаполненияТаблицы.Количество()-1 Цикл Документ.Application.Selection.Find.Execute("{НомП}" ,,,,,,,,,Строка(Сч+1),2); Документ.Application.Selection.Find.Execute("{НаименованиеП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Номенклатура),2); Документ.Application.Selection.Find.Execute("{СтоимостьП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Цена)*Строка(ДанныеДляЗаполненияТаблицы[Сч].Количество),2); Документ.Application.Selection.Find.Execute("{СрокП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Номенклатураxyz_СрокОказания),2); //Перемещаемся вниз, вставляем из буфера обмена строку Документ.Application.Selection.MoveDown(); Документ.Application.Selection.Paste(); //Перемещаемся вверх и выделяем строку для замены значений Документ.Application.Selection.MoveUp(); Документ.Application.Selection.SelectRow(); КонецЦикла; //Вырезаем лишнюю строку Документ.Application.Selection.Cut(); //Скрываем обязательную закладку начала таблицы Документ.Bookmarks("Таблица2").Select(); Документ.Application.Selection.TypeText(" "); КонецЕсли; |
|||
2
Ilnazio
04.02.21
✎
15:33
|
up
|
|||
3
МихаилМ
04.02.21
✎
15:43
|
это методика работы с таблицами word для word2000. перепишите без Selection и Bookmarks
|
|||
4
Ilnazio
04.02.21
✎
16:16
|
(3) Спасибо за ответ, попробую. Однако встречал статьи именно с таким оформлением кода. Подкиньте пожалуйста соответствующую литературу
|
|||
5
МихаилМ
04.02.21
✎
17:32
|
||||
6
Ilnazio
05.02.21
✎
09:24
|
(5) Спасибо
|
|||
7
Ilnazio
12.02.21
✎
09:14
|
Временное решение - костыль.
Для Сч = 0 по ДанныеДляЗаполненияТаблицы.Количество()-1 Цикл Если Сч <>0 Тогда Документ.Application.Selection.MoveDown(); Документ.Application.Selection.Paste(); Документ.Application.Selection.MoveUp(); КонецЕсли; Документ.Application.Selection.Find.Execute("{НомП}" ,,,,,,,,,Строка(Сч+1),2); Документ.Application.Selection.Find.Execute("{НаименованиеП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Номенклатура),2); Документ.Application.Selection.Find.Execute("{СтоимостьП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Цена)*Строка(ДанныеДляЗаполненияТаблицы[Сч].Количество),2); Документ.Application.Selection.Find.Execute("{СрокП}" ,,,,,,,,,Строка(ДанныеДляЗаполненияТаблицы[Сч].Номенклатураxyz_СрокОказания),2); Если Сч = 0 Тогда Документ.Application.Selection.MoveDown(); КонецЕсли; КонецЦикла; |
|||
8
Ilnazio
12.02.21
✎
09:14
|
вопрос закрыт
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |