helpf.pro
Регистрация

v8.2 УП: Помогите студенту советом, как переделать обычную форму в УФ

Troyan_IV
12.04.2017 09:24Прочитано: 1679

Помогите переделать обычную форму в управляемую код в модуле формы: Процедура СфорОстат(Элемент) ВременнаяТаблица1=ИзТКС(); ЭлементыФормы.ВременнаяТаблица1.СоздатьКолонки(); КонецПроцедуры ---------------------------------------------------------- В модуле Объекта: Функция ИзТКС() экспорт ПодключБаза(); НаборЗаписей = Новый ComObject("ADODB.RecordSet"); Попытка Организ="""МОРИОН"""; Команда = Новый COMОбъект("ADODB.Command"); Команда.CommandTimeout = 600; Команда.ActiveConnection = Connection; Команда.CommandText ="SEL ECT ComponentName as component,Sum(Quantity) Количество FR OM mydata_common_db.mydbcarrview_10.carrier_magname | GROUP BY ComponentName order by ComponentName"; НаборЗаписей = Команда.Execute(); //Состояние("Данные получены."); Исключение Сообщить("Нет данных."); //Возврат 0; КонецПопытки; ВременнаяТаблица = Новый ТаблицаЗначений; //Добавление колонок во временную таблицу Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count - 1 Цикл ИмяСтолбца = НаборЗаписей.Fields.Item(НомерСтолбца).Name; ВременнаяТаблица.Колонки.Добавить(ИмяСтолбца); КонецЦикла; Пока НЕ НаборЗаписей.EOF Цикл НоваяСтрока = ВременнаяТаблица.Добавить(); Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count-1 Цикл Попытка НоваяСтрока.Установить(НомерСтолбца, СокрЛП(НаборЗаписей.Fields(НомерСтолбца).Value)); Исключение Сообщить("Нет данных."); КонецПопытки; КонецЦикла; НаборЗаписей.MoveNext(); КонецЦикла; Возврат ВременнаяТаблица; КонецФункции -----------------------------

Yandex
Возможно, вас также заинтересует
Реклама на портале
Troyan_IV
12.04.2017 11:57Ответ № 1

Процедура СфорОстат(Элемент) ВременнаяТаблица1=ИзТКС(); ЭлементыФормы.ВременнаяТаблица1.СоздатьКолонки(); КонецПроцедуры ---------------------------------------------------------- В модуле Объекта: Функция ИзТКС() экспорт ПодключБаза(); НаборЗаписей = Новый ComObject("ADODB.RecordSet"); Попытка Организ="""МОРИОН"""; Команда = Новый COMОбъект("ADODB.Command"); Команда.CommandTimeout = 600; Команда.ActiveConnection = Connection; Команда.CommandText ="SEL ECT ComponentName as component,Sum(Quantity) Количество FR OM mydata_common_db.mydbcarrview_10.carrier_magname | GROUP BY ComponentName order by ComponentName"; НаборЗаписей = Команда.Execute(); //Состояние("Данные получены."); Исключение Сообщить("Нет данных."); //Возврат 0; КонецПопытки; ВременнаяТаблица = Новый ТаблицаЗначений; //Добавление колонок во временную таблицу Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count - 1 Цикл ИмяСтолбца = НаборЗаписей.Fields.Item(НомерСтолбца).Name; ВременнаяТаблица.Колонки.Добавить(ИмяСтолбца); КонецЦикла; Пока НЕ НаборЗаписей.EOF Цикл НоваяСтрока = ВременнаяТаблица.Добавить(); Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count-1 Цикл Попытка НоваяСтрока.Установить(НомерСтолбца, СокрЛП(НаборЗаписей.Fields(НомерСтолбца).Value)); Исключение Сообщить("Нет данных."); КонецПопытки; КонецЦикла; НаборЗаписей.MoveNext(); КонецЦикла; Возврат ВременнаяТаблица; КонецФункции -----------------------------

|

Troyan_IV
12.04.2017 11:58Ответ № 2

Ни как не вставить код по людски)

coldblood
13.04.2017 13:10Ответ № 3
Код 1C v 8.3
 

&НаКлиенте
Процедура СфортОстат(Команда)

    СфорОстатНаСервере();

КонецПроцедуры // СфортОстат()

&НаСервере
Процедура СфорОстатНаСервере()
    
    ТекОбъект = РеквизитФормыВЗначение(<Объект, Отчет или что там у тебя>);
    
    // Если ТЗ не описана вручную на форме тогда создашь программно, хочешь до, хочешь после получения ТЗ.
    // Если ТЗ на форме описана заранее то тоже можешь сделать:
    //     РеквизитФормыВЗначение("ТЗНаФорме")
    // И передать параметром в процедуру
    
    ТЗСДанными = ТекОбъект.ИзТКС();
        
    ЭлементыФормы.ВременнаяТаблица1.СоздатьКолонки();
    
КонецПроцедуры

// В модуле Объекта:
Функция ИзТКС() экспорт
    
    ПодключБаза();
    НаборЗаписей = Новый ComObject("ADODB.RecordSet");
    Попытка
        Организ="""МОРИОН""";
        Команда = Новый COMОбъект("ADODB.Command");
        Команда.CommandTimeout = 600;
        Команда.ActiveConnection = Connection;
        Команда.CommandText ="SEL ECT ComponentName as component,Sum(Quantity) Количество FR OM mydata_common_db.mydbcarrview_10.carrier_magname

| GROUP BY ComponentName order by ComponentName";
        НаборЗаписей = Команда.Execute();
        //Состояние("Данные получены.");
    Исключение
        Сообщить("Нет данных.");
        //Возврат 0;
    КонецПопытки;
    
    ВременнаяТаблица = Новый ТаблицаЗначений;
    //Добавление колонок во временную таблицу
    Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count - 1 Цикл
        ИмяСтолбца = НаборЗаписей.Fields.Item(НомерСтолбца).Name;
        ВременнаяТаблица.Колонки.Добавить(ИмяСтолбца);
    КонецЦикла;
    
    Пока НЕ НаборЗаписей.EOF Цикл
        НоваяСтрока = ВременнаяТаблица.Добавить();
        Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count-1 Цикл
            Попытка
                НоваяСтрока.Установить(НомерСтолбца, СокрЛП(НаборЗаписей.Fields(НомерСтолбца).Value));
            Исключение
                Сообщить("Нет данных.");
            КонецПопытки;
        КонецЦикла;
        НаборЗаписей.MoveNext();
    КонецЦикла;
    
    Возврат ВременнаяТаблица;
КонецФункции

coldblood
13.04.2017 13:11Ответ № 4

Уточню что данный код на УФ работать не будет

ЭлементыФормы.ВременнаяТаблица1.СоздатьКолонки();[/pre]
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.