Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 05:31

Помогите разобраться!!! Метод Скопировать()

Автор Кот_Леопольд, 21 янв 2019, 11:26

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

Кот_Леопольд

Помогите разобраться!!! Метод Скопировать():
ТекущийТекстДоговора=ТекстДоговора.Скопировать();
Ошибка:
{Документ.Договоры.Форма.ФормаДокумента.Форма(72)}: Значение не является значением объектного типа (Скопировать)
   ТекущийТекстДоговора=ТекстДоговора.Скопировать();
Я так понимаю это из за того что не определена переменная ТекстДоговора?!
но я ее описал как Перем ТекстДоговора;
&НаСервере
Процедура  ЗаполнитьТекстДоговора()
Если ЗначениеЗаполнено(Объект.ТипДоговора) Тогда
        ТекстДоговора=Объект.ТипДоговора.ПунктыДоговора.Выгрузить();
        ПодписиНаСтраницах=Объект.ТипДоговора.ПунктыДоговора.Выгрузить();
        Подписи=Объект.ТипДоговора.Подписи.Выгрузить();
        ПодписьНаПоследнейСтранице=Объект.ТипДоговора.ПодписьНаПоследнейСтранице;
    КонецЕсли;
КонецПроцедуры


&НаКлиенте
Процедура ТипДоговораПриИзменении(Элемент)
ЗаполнитьТекстДоговора();
КонецПроцедуры

Не как до меня не дойдет в чем ошибка?!

alex0402

Цитата: Кот_Леопольд от 21 янв 2019, 11:26Перем ТекстДоговора;

это объявление, я так понял, на сервере...

при каждом обращении к серверу создается новая переменная и естественно
ТекстДоговора = Неопределено
Спасибо за Сказать спасибо

Кот_Леопольд

Цитата: alex0402 от 21 янв 2019, 11:44
Цитата: Кот_Леопольд от 21 янв 2019, 11:26Перем ТекстДоговора;

это объявление, я так понял, на сервере...

при каждом обращении к серверу создается новая переменная и естественно
ТекстДоговора = Неопределено
Подскажите как мне к ней правильно обратиться что бы все было хорошо, а то я что уже только не побывал у меня зацикливание идет и все в отладчики?!
&НаСервере
Функция ПечатьНаСервере()
ЗаполнитьПараметры();
    УстановитьПараметры();
    ВычислитьВысотуПодписиИСтраницы();
    ТекущаяВысотаСтраницы=0;
//ЗаполнитьТекстДоговора();
    ТабДок=Новый ТабличныйДокумент;
    Макет=Документы.Договоры.ПолучитьМакет("Договор");
    ТекущийТекстДоговора=Новый ТаблицаЗначений;
ТекущийТекстДоговора=ТекстДоговора.Скопировать();
    Для каждого СтрокаДоговора из Объект.ИзмененныеПунктыДоговора Цикл
        ПараметрыПоиска=новый Структура;
        ПараметрыПоиска.Вставить("Пункт",СтрокаДоговора.Пункт);
        РезультатПоиска=ТекущийТекстДоговора.НайтиСтроки(ПараметрыПоиска);
        Если РезультатПоиска.Количество()>0 Тогда
            РезультатПоиска[0].Текст=СтрокаДоговора.Текст;
            РезультатПоиска[0].СимволФорматирования=СтрокаДоговора.СимволФорматирования;
            РезультатПоиска[0].Заголовок=СтрокаДоговора.Заголовок;
            РезультатПоиска[0].Положение=СтрокаДоговора.Положение;
          Иначе
            НоваяСтрока=ТекущийТекстДоговора.Добавить();
            НоваяСтрока.Текст= СтрокаДоговора.Текст;
            НоваяСтрока.Пункт= СтрокаДоговора.Пункт;
            НоваяСтрока.СимволФорматирования=СтрокаДоговора.СимволФорматирования;
            НоваяСтрока.Заголовок=СтрокаДоговора.Заголовок;
            НоваяСтрока.Положение=СтрокаДоговора.Положение;
        КонецЕсли;
    КонецЦикла;
Объект.ПунктыДоговора.Сортировать("Пункт Воз");
    Для каждого СтрокаДоговора из ТекущийТекстДоговора Цикл
        Если Найти(СтрокаДоговора.Текст,"&")<>0 Тогда
            Для Каждого СтрокаПараметров из ТаблицаПараметров Цикл
                СтрокаДоговора.Текст=СтрЗаменить(СтрокаДоговора.Текст,"&"+СтрокаПараметров.Реквизит,СтрокаПараметров.Значение);   
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    ВременныйТекстДоговора=Новый ТаблицаЗначений;
    ВременныйТекстДоговора=ТекущийТекстДоговора.Скопировать();
    ТекущийТекстДоговора.Очистить();
      Для каждого ПунктДоговора из ВременныйТекстДоговора Цикл
        ТекстСтроки="";
        Если СтрДлина(ПунктДоговора.СимволФорматирования)>0 Тогда
            ТекстСтроки=ПунктДоговора.СимволФорматирования+ПунктДоговора.Текст;
        Иначе
            ТекстСтроки=ПунктДоговора.Пункт+" "+ПунктДоговора.Текст;
        КонецЕсли;
        РазложеннаяСтрока=ТаблицаСтрок(ТекстСтроки,ПунктДоговора.Положение);
        Для каждого СтрокаТаблицы из РазложеннаяСтрока Цикл
            НоваяСтрока=ТекущийТекстДоговора.Добавить();
            Если СтрокаТаблицы.Положение=Перечисления.Положение.ПоШирине Тогда
                НоваяСтрока.Текст=ВыровнятьПоШирине(СтрокаТаблицы.Текст);
            Иначе
                НоваяСтрока.Текст=СтрокаТаблицы.Текст;   
            КонецЕсли;
            НоваяСтрока.Заголовок=ПунктДоговора.Заголовок;
            НоваяСтрока.Положение=СтрокаТаблицы.Положение;
        КонецЦикла;
    КонецЦикла;
    ВременныйТекстДоговора.Очистить();
    ПоследняяСтраница=ложь;
    ТекущаяВысотаСтраницы=0;
    Для каждого ПунктДоговора из ТекущийТекстДоговора Цикл
Если ТекущаяВысотаСтраницы Тогда
Если ПунктДоговора.Заголовок Тогда
                Область=Макет.ПолучитьОбласть("ТекстЗаголовка");   
            Иначе
                Область=Макет.ПолучитьОбласть("Текст");
            КонецЕсли;
            Область.Параметры.Текст=ПунктДоговора.Текст;
            ПоложениеНаСтранице(Область,ПунктДоговора.Положение);
            ТабДок.Вывести(Область);
            ТекущаяВысотаСтраницы=ТекущаяВысотаСтраницы+ВысотаСтроки;
        Иначе
            ТекущаяВысотаСтраницы=0;
            Остаток=ТекущийТекстДоговора.Количество()-1-ТекущийТекстДоговора.Индекс(ПунктДоговора);
            Если Остаток>0 Тогда
                ВывестиПодписи();
            КонецЕсли;
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

        КонецЕсли;
    КонецЦикла;
    ВывестиРеквизиты();
    Если ПодписьНаПоследнейСтранице=Истина Тогда
        ВывестиПодписи();   
    КонецЕсли;
    ТабДок.ПолеСлева=15;
    ТабДок.ОтображатьЗаголовки=Ложь;
    ТабДОк.ОтображатьСетку=Ложь;
    Возврат ТабДок;
КонецФункции


&НаКлиенте
Процедура Печать(Команда)

ТабДОк = ПечатьНаСервере();
ТабДок.Показать(Объект.ТипДоговора);
КонецПроцедуры

Добавлено: 21 янв 2019, 13:05


Цитата: alex0402 от 21 янв 2019, 11:44
Цитата: Кот_Леопольд от 21 янв 2019, 11:26Перем ТекстДоговора;

это объявление, я так понял, на сервере...

при каждом обращении к серверу создается новая переменная и естественно
ТекстДоговора = Неопределено
НЕТ ВАРИАНТОВ!!!???

Теги:

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

Рейтинг@Mail.ru

Поиск