Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 июн 2021, 15:57

Слишком длинный строковый параметр(Execute)

Автор Rust, 03 апр 2017, 07:42

0 Пользователей и 1 гость просматривают эту тему.

Rust

Здравствуйте!
При замене текста в word(execute),использовав более 255 символов-ошибка: Слишком длинный строковый параметр.

Как разбить строку на части?

Norfolk

Цитата: Rust от 03 апр 2017, 07:42
Здравствуйте!
При замене текста в word(execute),использовав более 255 символов-ошибка: Слишком длинный строковый параметр.

Как разбить строку на части?
Гугл выдал следующее:
цитата "Разбиваешь вставляемую строку на строку с количеством символов 255-ДлинаСтроки("{"+Элемент.Ключ+"}")
потом к каждой отрезанной части перед вставкой в ворд дописываешь "{"+Элемент.Ключ+"}" вот и всё.
Таким образом у тебя цикл будет постоянно находить ту часть, которую надо заменить твоим длинным текстом и по кускам ты его заменишь"
Не знаю можно ли тут кидать ссылки на другие сайты, поэтому рекомендую самостоятельно погуглить.
Не помощь, но зато совет :)

Rust

Цитата: Norfolk от 03 апр 2017, 07:57
Цитата: Rust от 03 апр 2017, 07:42
Здравствуйте!
При замене текста в word(execute),использовав более 255 символов-ошибка: Слишком длинный строковый параметр.

Как разбить строку на части?
Гугл выдал следующее:
цитата "Разбиваешь вставляемую строку на строку с количеством символов 255-ДлинаСтроки("{"+Элемент.Ключ+"}")
потом к каждой отрезанной части перед вставкой в ворд дописываешь "{"+Элемент.Ключ+"}" вот и всё.
Таким образом у тебя цикл будет постоянно находить ту часть, которую надо заменить твоим длинным текстом и по кускам ты его заменишь"
Не знаю можно ли тут кидать ссылки на другие сайты, поэтому рекомендую самостоятельно погуглить.
Не помощь, но зато совет :)
Большое спасибо!Встречал этот вариант.Но,не понимаю как это реализовать.Поэтому обратился сюда :dfbsdfbsdf:
Добавлено: 03 апр 2017, 09:36


ЗаменаКонтента.Execute("[Комментарий1Замена]",,,,,,,,,Комментарий1,2);

LexaK

свой код работы с Вордом выкладывайте, (тот код где возникает ошибка +/- десяток команд
тогда можно будет подсказать конкретнее.
ответ Понравился? (в смысле пригодился?)

Rust

WordApplication = Новый COMОбъект("WORD.Application");
WordApplication.DisplayAlerts = 0;   // не выводить предупреждения

Зак = WordApplication .Documents.Add(ПутьКЗаключению);


Комментарий1=Док.Комментарий1;


ЗаменаКонтента = Зак.content.Find;

ЗаменаКонтента.Execute("[Комментарий1Замена]",,,,,,,,,Комментарий1,2);

Не дает вставить более 255 символов.
Знаю что нужно разбить эту строку,(Как в совете выше) Но незнаю как.
Добавлено: 03 апр 2017, 10:06


Цитата: LexaK от 03 апр 2017, 09:44
свой код работы с Вордом выкладывайте, (тот код где возникает ошибка +/- десяток команд
тогда можно будет подсказать конкретнее.
WordApplication = Новый COMОбъект("WORD.Application");
WordApplication.DisplayAlerts = 0;   // не выводить предупреждения

Зак = WordApplication .Documents.Add(ПутьКЗаключению);


Комментарий1=Док.Комментарий1;


ЗаменаКонтента = Зак.content.Find;

ЗаменаКонтента.Execute("[Комментарий1Замена]",,,,,,,,,Комментарий1,2);

Не дает вставить более 255 символов.
Знаю что нужно разбить эту строку,(Как в совете выше) Но незнаю как.

LexaK

попробуйте так, должно сработать


WordApplication = Новый COMОбъект("WORD.Application");
    WordApplication.DisplayAlerts = 0;   // не выводить предупреждения
       
    Зак = WordApplication .Documents.Add(ПутьКЗаключению);

   
    Комментарий1=Док.Комментарий1;


        ЗаменаКонтента = Зак.content.Find;
       
    //заменено на цикл, ниже
        //ЗаменаКонтента.Execute("[Комментарий1Замена]",,,,,,,,,Комментарий1,2);

//разбивка замены по 200 символов
лкВсяДлина = СтрДлина(Комментарий1);
лкТекущаяПозиция = 1;
лкКлюч = "[Комментарий1Замена]";
Пока лкТекущаяПозиция < лкВсяДлина Цикл
лкЧасть = Сред(Комментарий1, лкТекущаяПозиция, 200) + лкКлюч;
        ЗаменаКонтента.Execute(лкКлюч,,,,,,,,,лкЧасть,2);
лкТекущаяПозиция = лкТекущаяПозиция + 200;
КонецЦикла;

//так как у вас ключ текстовый - чистим ключ
        ЗаменаКонтента.Execute(лкКлюч,,,,,,,,,"",2);


ответ Понравился? (в смысле пригодился?)

Rust

Цитата: LexaK от 03 апр 2017, 10:13
попробуйте так, должно сработать


WordApplication = Новый COMОбъект("WORD.Application");
    WordApplication.DisplayAlerts = 0;   // не выводить предупреждения
       
    Зак = WordApplication .Documents.Add(ПутьКЗаключению);

   
    Комментарий1=Док.Комментарий1;


        ЗаменаКонтента = Зак.content.Find;
       
    //заменено на цикл, ниже
        //ЗаменаКонтента.Execute("[Комментарий1Замена]",,,,,,,,,Комментарий1,2);

//разбивка замены по 200 символов
лкВсяДлина = СтрДлина(Комментарий1);
лкТекущаяПозиция = 1;
лкКлюч = "[Комментарий1Замена]";
Пока лкТекущаяПозиция < лкВсяДлина Цикл
лкЧасть = Сред(Комментарий1, лкТекущаяПозиция, 200) + лкКлюч;
        ЗаменаКонтента.Execute(лкКлюч,,,,,,,,,лкЧасть,2);
лкТекущаяПозиция = лкТекущаяПозиция + 200;
КонецЦикла;

//так как у вас ключ текстовый - чистим ключ
        ЗаменаКонтента.Execute(лкКлюч,,,,,,,,,"",2);



Спасибо!Помогло!:)

Gobbledegook

Цитата: LexaK от 03 апр 2017, 10:13
попробуйте так, должно сработать


WordApplication = Новый COMОбъект("WORD.Application");
    WordApplication.DisplayAlerts = 0;   // не выводить предупреждения
       
    Зак = WordApplication .Documents.Add(ПутьКЗаключению);

   
    Комментарий1=Док.Комментарий1;


        ЗаменаКонтента = Зак.content.Find;
       
    //заменено на цикл, ниже
        //ЗаменаКонтента.Execute("[Комментарий1Замена]",,,,,,,,,Комментарий1,2);

//разбивка замены по 200 символов
лкВсяДлина = СтрДлина(Комментарий1);
лкТекущаяПозиция = 1;
лкКлюч = "[Комментарий1Замена]";
Пока лкТекущаяПозиция < лкВсяДлина Цикл
лкЧасть = Сред(Комментарий1, лкТекущаяПозиция, 200) + лкКлюч;
        ЗаменаКонтента.Execute(лкКлюч,,,,,,,,,лкЧасть,2);
лкТекущаяПозиция = лкТекущаяПозиция + 200;
КонецЦикла;

//так как у вас ключ текстовый - чистим ключ
        ЗаменаКонтента.Execute(лкКлюч,,,,,,,,,"",2);




Если в Док.Комментарий1 будет один символ, то не сработает. Надо Пока лкТекущаяПозиция <= лкВсяДлина Цикл

Теги: Word 

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск