Имя: Пароль:
1C
1С v8
1с и Word более 255 символов
,
0 perester
 
25.08.17
11:50
Есть код
    ПараметрыДокумента = Новый Соответствие;
    
    // получаем макет
    Макет = ЭтотОбъект.ПолучитьМакет(ИмяМакета);  
    Excel = Макет.Получить();
    
    // выводим данные
    Попытка
        Документ = Excel.Application.Documents(1);   //получаем объект - документ. Это OLE объект, с ним можно работать используя все методы, которые существуют в VBA  
        Документ.Activate();
        
        ПараметрыДокумента.Вставить("{v8 Достижения}",                ?(ЗначениеЗаполнено(ЭтотОбъект.ДопГлавныеДостижения), ЭтотОбъект.ДопГлавныеДостижения, ""));


        Для каждого ЭлементПД из ПараметрыДокумента Цикл
            Пока Документ.Content.Find.Execute(ЭлементПД.Ключ, , , , , , , , ,ЭлементПД.Значение) Цикл
                //Пустое тело. Вся работа выполняется в условии цикла
            КонецЦикла;
        КонецЦикла;
Естественно в нем еще много всяких ПД.Вставить(тыры-пыры), но для примера подойдет
С такой макетом в виде ворда первый раз связался, но я так поднял что ЭлементПД.Ключ это искомая строка и заменяется на ЭлементПД.Значение,
вопроса у меня 2, точнее полтора:
1) Ключ обязательно должен быть в {}?
2) если нет, то почему не работает

Для каждого ЭлементПД из ПараметрыДокумента Цикл
            если СтрДлина(ЭлементПД.Значение)>255 тогда
                ключ = ЭлементПД.Ключ;
                полная = ЭлементПД.Значение;
                длинаполной = Стрдлина(полная);
                ПараметрыДокумента.Удалить(ЭлементПД.Ключ);
                Если (длинаполной%235)>0 тогда колитер = Цел(длинаполной/235+1) Иначе колитер = цел(длинаполной/235) конецЕсли;
                для счетчик = 1 по колитер цикл
                    значение = лев(полная,235);
                    ПараметрыДокумента.Вставить(ключ, значение);
                    новаядлина = (СтрДлина(полная)-235);
                    полная = прав(полная,новаядлина);
                    Если найти(ключ,"{v8")=0 тогда значение = Ключ+ Значение конецЕсли;
                    Пока Документ.Content.Find.Execute(Ключ, , , , , , , , ,Значение) Цикл
                        //Пустое тело. Вся работа выполняется в условии цикла
                    КонецЦикла;
                                        ПараметрыДокумента.Удалить(Ключ);
                                        Ключ = прав(значение,20);

                конеццикла;
            Иначе
                Пока Документ.Content.Find.Execute(ЭлементПД.Ключ, , , , , , , , ,ЭлементПД.Значение) Цикл
                    //Пустое тело. Вся работа выполняется в условии цикла
                КонецЦикла;
            КонецЕсли
        КонецЦикла;

Или как это реализовать?
1 Fragster
 
гуру
25.08.17
11:52
странно, в заголовке ворд, а в сообщении - эксель
2 perester
 
25.08.17
11:54
(1) Только заметил, этот макет делал не я, устраняю ошибку с 255 символами, но сохраняет то он ворд файл :о
3 perester
 
25.08.17
11:55
(2) тип макета Active document, а еще в конфигураторе он как вордовский файл
4 perester
 
25.08.17
12:03
(0) смысл кода(второго): находит последние 20 символов предыдущего значения и говорит что ключ им равен, потом значение = ключ(20 предыдущих значений) и  235 следующих символов в цикле
но когда я его запускаю он очень долго думает и все, ворд через некоторое время запускается и говорит что слишком много синтаксических ошибок и продолжает думать
5 perester
 
25.08.17
12:18
up, тонет
6 perester
 
25.08.17
20:30
Up*
7 breezee
 
25.08.17
21:04
(0) Вроде 1С теперь без эксель апликэйшн может рабоатть с экселем
8 mikecool
 
25.08.17
21:06
(0) 1 - да, 2 - хз, отладка что говорит?
я недавно первый раз столкнулся, послали в общий модуль, нашел, посмотрел и быстро все сделал
9 Alexandr_U1982
 
25.08.17
22:36
(0)Проблему 255 знаков в Word можно решить с помощью закладок.
В шаблоне Word ставишь закладку. Большой текст режешь на куски по 255 символов и выводишь их перед закладкой так, чтобы закладка всегда указывала на конец введенного текста.
Из 1с закладки Word доступные через свойство bookmarks.
10 perester
 
26.08.17
02:18
(8) ну вот, а я то в цикле без {} искал, видимо из-за этого
(9) кажется понимаю, он не ищет и заменяет, а ставит закладку и в нее вставляет текст?