|
VBA | ☑ | ||
---|---|---|---|---|
0
hawksib
20.02.15
✎
04:44
|
{Форма.Форма.Форма(283)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft Word): Слишком длинный строковый параметр.
а вставляю я этот параметр в трех местах, и длина параметра всё время разная, как можно обойти? |
|||
1
Cube
20.02.15
✎
04:47
|
(0) Не использовать "Слишком длинный строковый параметр".
Ваш КО http://sngservice.ru/cards/images/announce/9e2b115a.jpg |
|||
2
hawksib
20.02.15
✎
04:58
|
нужен слишком длинный
|
|||
3
MiniMuk
20.02.15
✎
05:03
|
(2) причем тут VBA? использую 2 параметра.
|
|||
4
hawksib
20.02.15
✎
05:06
|
(3) а если два мало оказывается, три?
|
|||
5
hawksib
20.02.15
✎
05:06
|
а VBA при том, что может какой другой метод есть
|
|||
6
MiniMuk
20.02.15
✎
05:15
|
Я вангую что замену в ворде делаешь.
И скороей всего Execute Почитай тут |
|||
7
MiniMuk
20.02.15
✎
05:15
|
||||
8
hawksib
20.02.15
✎
05:49
|
(6) ещё один капитан?
|
|||
9
VladZ
20.02.15
✎
05:53
|
Я для таких "длинных параметров" использую закладки. Там нет таких ограничений.
|
|||
10
hawksib
20.02.15
✎
06:01
|
(9) спасибо за подсказку, на днях попробую
|
|||
11
DrZombi
гуру
20.02.15
✎
07:22
|
(0) Покажи лучше сам код, что ты там куда вставляешь?
Может ты туда бацаешь Войну и Мир, а нм тут позх пудришь :) |
|||
12
DrZombi
гуру
20.02.15
✎
07:23
|
(8) Нет не капитан, Телепат. По твой ошибке, все дело в твоих руках :)
|
|||
13
hawksib
20.02.15
✎
09:57
|
(12) ну по ошибке-то понятно, что Execute метод юзаю
(11) ну не войну и мир, просто анекдоты в договор вставляю ну код пусть будет такой &НаКлиенте Процедура ПечатьДоговора(Вариант) МакетВФайл(Вариант).Записать(КаталогВременныхФайлов() + "contract" + Строка(Вариант) + ".dot"); Попытка MsWord = Новый COMОбъект("Word.Application"); MsWord.Documents.Add(КаталогВременныхФайлов() + "contract" + Строка(Вариант) + ".dot"); Документ = MsWord.Documents(1); Замена = Документ.Content.Find; Замена.Execute("<TypeOfWork>", Ложь, Истина, Ложь, , , Истина, , Ложь, ВидРаботПоДоговору); Документ.Application.Visible = Истина; Сообщение = Новый СообщениеПользователю(); Если Вариант < 1 Тогда Сообщение.Текст = "Акт напечатан"; Иначе Сообщение.Текст = "Договор напечатан"; КонецЕсли; Сообщение.Сообщить(); Исключение Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "не удалось сформировать документ : |" + ОписаниеОшибки(); Сообщение.Сообщить(); MsWord.Application.Quit(); //Документ.Application.Quit(); КонецПопытки; КонецПроцедуры |
|||
14
hawksib
27.02.15
✎
11:34
|
короче че-то с закладками экспериментировать не стал, сегодня во сне мне реально приснилось как надо в цикле заполнить договор, с учетом того, что я гуглил, и на этом же форуме нашел, что заменить в ворде строку больше 255 символов ни у кого не получалось, минут за 30, с учетом того что во сне думал, написал вот такую функцию (чтобы меняло наверняка, взял длину строки 100 символов)
&НаКлиенте Функция РазбитьВидРаботПоСтрокам(ОстатокСтроки) Результат = Новый Структура; МассивСтрок = Новый Массив; Счетчик = 0; ПараметрыДляПечати = ""; Пока СтрДлина(ОстатокСтроки) > 100 Цикл ПараметрыДляПечати = ПараметрыДляПечати + "<n" + Строка(Счетчик) + ">"; СтрокаМассива = Лев(ОстатокСтроки, 100); МассивСтрок.Добавить(СтрокаМассива); ОстатокСтроки = Прав(ОстатокСтроки, СтрДлина(ОстатокСтроки) - 100); Счетчик = Счетчик + 1; КонецЦикла; ПараметрыДляПечати = ПараметрыДляПечати + "<n" + Строка(Счетчик) + ">"; МассивСтрок.Добавить(ОстатокСтроки); Результат.Вставить("Параметры", ПараметрыДляПечати); Результат.Вставить("Строки", МассивСтрок); Возврат Результат; КонецФункции и исходную процедуру чуть чуть допилил &НаКлиенте Процедура ПечатьДоговора(Вариант) МакетВФайл(Вариант).Записать(КаталогВременныхФайлов() + "contract" + Строка(Вариант) + ".dot"); ВидРабот = РазбитьВидРаботПоСтрокам(ВидРаботПоДоговору); Попытка MsWord = Новый COMОбъект("Word.Application"); MsWord.Documents.Add(КаталогВременныхФайлов() + "contract" + Строка(Вариант) + ".dot"); Документ = MsWord.Documents(1); Замена = Документ.Content.Find; Замена.Execute("<TypeOfWork>", Ложь, Истина, Ложь, , , Истина, , Ложь, ВидРабот.Параметры); Счетчик = 0; Для Каждого Строка Из ВидРабот.Строки Цикл Замена = Документ.Content.Find; Замена.Execute("<n" + Строка(Счетчик) + ">", Ложь, Истина, Ложь, , , Истина, , Ложь, Строка); Счетчик = Счетчик + 1; КонецЦикла; Документ.Application.Visible = Истина; Сообщение = Новый СообщениеПользователю(); Если Вариант < 1 Тогда Сообщение.Текст = "Акт напечатан"; Иначе Сообщение.Текст = "Договор напечатан"; КонецЕсли; Сообщение.Сообщить(); Исключение Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "не удалось сформировать документ : |" + ОписаниеОшибки(); Сообщение.Сообщить(); MsWord.Application.Quit(); КонецПопытки; КонецПроцедуры Всем спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |