[РЕШЕНО] Перевожу обработку Поиск и замена зачений с обычного приложения на управляем.

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Mambo, 11 апр 2016.

  1. TopicStarter Overlay
    Mambo
    Offline

    Mambo

    Регистрация:
    22 май 2014
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Перевожу обработку поиск и замена значений для 1с8.3 с обычного приложения на управляемое. Есть реквизит ТЧСсылки тип "ДеревоЗначений" он размещается на форме, в нем два поля заменить тип "булево", и СсылкаНаОбъект тип "ЛюбаяСсылка, Строка". При попытке заполнить дерево значений Изначально происходит очистка

    ЭлементыФормы.ТЧСсылки.Значение.Строки.Очистить();

    Выдает ошибка Поле объекта не обнаружено ТЧСсылки.
    Код:
    Процедура ПоискСсылокНажатие(ЭлементыФормы) Экспорт
        ЭлементыФормы.ТЧСсылки.Значение.Строки.Очистить();
       
        //ЭтаФорма.ТЧСсылки.Значение.Строки.Очистить();   
       
        // проверим все ли заполнено
        Для Каждого Стар Из ЭлементыФормы.ТЧСтарыеЗначения Цикл
            Если Стар.СтароеЗначение = Неопределено ИЛИ Стар.СтароеЗначение.Пустая() Тогда
                Сообщить("Не корректно заполнена таб. часть 'Старые значения'");
                Возврат;
            КонецЕсли;   
        КонецЦикла;   
       
        МассивЗначений = Новый Массив;
        Для Каждого МассЗнач Из Объект.ТЧСтарыеЗначения Цикл
            МассивЗначений.Добавить(МассЗнач.СтароеЗначение);
        КонецЦикла;
        СсылкиНаДанные = НайтиПоСсылкам(МассивЗначений);
       
        // оформим нужным образом Массив
        ТЗСсылки = Новый ТаблицаЗначений;
        ТЗСсылки.Колонки.Добавить("Данные");
        ТЗСсылки.Колонки.Добавить("ТипЗначения");
        Для Каждого Стр Из СсылкиНаДанные Цикл
            ТЗСсылка             = ТЗСсылки.Добавить();
            ТЗСсылка.Данные      = Стр.Данные;
            ТЗСсылка.ТипЗначения = ТипЗнч(Стр.Данные);
        КонецЦикла;   
        ТЗСсылки.Сортировать("ТипЗначения Возр");
        //==============================
        ТипЗначенияПоследний = "";
       
       
        Для Каждого Ссылка ИЗ ТЗСсылки Цикл
           
            Если ТипЗначенияПоследний <> Ссылка.ТипЗначения И Лев(Ссылка.Данные, 3) <> "Рег" Тогда
                СтрокаРодитель                = Объект.ТЧСсылки.Значение.Строки.Добавить();
                СтрокаРодитель.СсылкаНаОбъект = Ссылка.ТипЗначения;
                СтрокаРодитель.Заменять       = Истина;
                // в РС не должна попадать контактная информация
            ИначеЕсли ТипЗначенияПоследний <> "Регистры сведений" И Лев(Ссылка.Данные, 8) = "РегистрС"  И Строка(Ссылка.Данные) <> "РегистрСведенийКлючЗаписи.КонтактнаяИнформация" Тогда
                СтрокаРодитель                = Объект.ТЧСсылки.Значение.Строки.Добавить();
                СтрокаРодитель.СсылкаНаОбъект = "Регистры сведений";
                СтрокаРодитель.Заменять       = Ложь;
            КонецЕсли;   
            // регистры не должны попадать в ТЧ
            Если Лев(Ссылка.Данные, 3) <> "Рег" И МассивЗначений.Найти(Ссылка.Данные) = Неопределено И Ссылка.Данные <> Неопределено Тогда
                // если документы, то проверяем период
                Если Лев(ТипЗНЧ(Ссылка.Данные.ПолучитьОбъект()), 3) = "Док" И Объект.ОтборПоДате Тогда
                    Если Ссылка.Данные.Дата >= Объект.ДатаНач И Ссылка.Данные.Дата <= КонецДня(Объект.ДатаКон) Тогда
                        Строка                = СтрокаРодитель.Строки.Добавить();
                        Строка.СсылкаНаОбъект = Ссылка.Данные;
                        Строка.Заменять       = Истина;
                    КонецЕсли;
                Иначе
                    Строка                = СтрокаРодитель.Строки.Добавить();
                    Строка.СсылкаНаОбъект = Ссылка.Данные;
                    Строка.Заменять       = Истина;
                КонецЕсли;
                ТипЗначенияПоследний = Ссылка.ТипЗначения;
                // добавим регистры свединей
            ИначеЕсли Лев(Ссылка.Данные, 8) = "РегистрС" И Строка(Ссылка.Данные) <> "РегистрСведенийКлючЗаписи.КонтактнаяИнформация" Тогда
                Строка                = СтрокаРодитель.Строки.Добавить();
                Строка.СсылкаНаОбъект = Ссылка.Данные;
                Строка.Заменять       = Ложь;
                ТипЗначенияПоследний  = "Регистры сведений";
            КонецЕсли;
           
        КонецЦикла;   
       
    
        ЭлементыФормы.ТЧСсылки.СоздатьКолонки();
        ЭлементыФормы.ТЧСсылки.Колонки.Заменять.Ширина       = 4;
        ЭлементыФормы.ТЧСсылки.Колонки.СсылкаНаОбъект.Ширина = 75;
        ЭлементыФормы.ТЧСсылки.Колонки.Заменять.ДанныеФлажка = "Заменять";
        ЭлементыФормы.ТЧСсылки.Колонки.Заменять.Имя = "Заменять";
        ЭлементыФормы.ТЧСсылки.Колонки.Заменять.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
        ЭлементыФормы.ТЧСсылки.Колонки.СсылкаНаОбъект.ЭлементУправления.КнопкаВыбора         = Ложь;
        ЭлементыФормы.ТЧСсылки.Колонки.СсылкаНаОбъект.ЭлементУправления.КнопкаОчистки        = Ложь;
        ЭлементыФормы.ТЧСсылки.Колонки.СсылкаНаОбъект.ЭлементУправления.КнопкаОткрытия       = Истина;
    КонецПроцедуры
    
    Пробовал заменять элементы форм ЭтаФорма или просто оставлял ТЧСсылки, тогда нет комад для добовления колонок.
  2. TopicStarter Overlay
    Mambo
    Offline

    Mambo

    Регистрация:
    22 май 2014
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Вопрос снят, нашел в закрамах обработку адаптированную по управляемое приложение.

Поделиться этой страницей