Вход | Регистрация
 

Внешняя обработка на УФ

Внешняя обработка на УФ
Я
   bard666
 
03.10.16 - 14:38
в УФ не силен, потому прошу помощи. Задача: запилить внешнюю обработку, которая будет выводить список таблиц. Хочу сделать процедуру, которая будет выполняться в фоновом режиме. Затык в том, что не понимаю как к ней обращаться.

код такой


ТабДок.Очистить();
    
    Макет = ПолучитьМакетНаСервере("Счет01");
    ОбластьШапка  = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьИтоги  = Макет.ПолучитьОбласть("Итоги");
    ТабДок.Вывести(ОбластьШапка);
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("Период", Период);
    НаименованиеЗадания = "ПолучитьИтоги01";
    
    
    
    Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
         УникальныйИдентификатор,
         "ПолучитьИтоги01",
         ,
         НаименованиеЗадания);
        
    АдресХранилища = Результат.АдресХранилища;
    
    Если Результат.ЗаданиеВыполнено Тогда
        ТабИтоги = ПолучитьИзВременногоХранилища(АдресХранилища);
        
    КонецЕсли;


если процедуру ПолучитьИтоги01 запихнуть в общий модуль, прекрасно достукивается и отрабатывает, а вот как ту же процедурину оставить в форме или модули обработки?
 
 
   bodri
 
1 - 03.10.16 - 14:39
&НаСервере
   bard666
 
2 - 03.10.16 - 14:41
Процедура ПолучитьИтоги01 на сервере и экспортная
   bodri
 
3 - 03.10.16 - 14:42
+(1)
&НаКлиенте
Процедура Кнопка()
   Напечатать(ТаблицаСФормы);
Конецпроцедуры

&НаСервере
Процедура Напечатать(ТабДок)

>>   Ссылка на вашу процедуру
Конецпроцедуры
   bard666
 
4 - 03.10.16 - 14:43
ошибка такова:

Неправильный формат параметра ИмяМетода (передано значение: "ПолучитьИтоги01") в РаботаВБезопасномРежиме.ПроверитьИмяМетодаКонфигурации
        ВызватьИсключение(ТекстОшибки);
   bard666
 
5 - 03.10.16 - 14:44
(3) это так и сделано
   bodri
 
6 - 03.10.16 - 14:46
Весь текст сюда именно откуда ошибка
   bard666
 
7 - 03.10.16 - 14:56
На данный момент сделано так: 3 процедуры.
1. кнопка Если выбрано что-то для вывода, формируем и показываем

&НаКлиенте 
Процедура ФормироватьТаблицы(Команда)
    
    Если Период = 0 Тогда
        
        Сообщить("Не выбран период. Задайте и повторите попытку.");
        Возврат;
        
    КонецЕсли;    
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.ОтображатьСетку = Ложь;
    
    Если Счет01 Тогда
        Счет01НаСервере(ТабДок);
        ТабДок.Показать("Основные средства");
    КонецЕсли;
КонецПроцедуры


2.Формирование и вывод таблиц

&НаСервере
Процедура Счет01НаСервере(ТабДок)
ТабДок.Очистить();
    
    Макет = ПолучитьМакетНаСервере("Счет01");
    ОбластьШапка  = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьИтоги  = Макет.ПолучитьОбласть("Итоги");
    ТабДок.Вывести(ОбластьШапка);
    //ТабИтоги = ПолучитьИтоги01();

    //ТекОбъект = РеквизитФормыВЗначение("Объект");

    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("Период", Период);
    НаименованиеЗадания = "ПолучитьИтоги01";
    
    
    
    Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
         УникальныйИдентификатор, 
         "ПолучитьИтоги01", 
         , 
         НаименованиеЗадания);
         
    АдресХранилища = Результат.АдресХранилища;
    
    Если Результат.ЗаданиеВыполнено Тогда
        ТабИтоги = ПолучитьИзВременногоХранилища(АдресХранилища);
        //ТабИтоги = СтруктураДанных.Результат;

    КонецЕсли;
//здесь код по выводу областей макета


КонецПроцедуры

3. Получение данных для таблиц 

&НаСервере
Процедура ПолучитьИтоги01(СтруктураПараметров = Неопределено, АдресХранилища) Экспорт 
    
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ГОД(ХозрасчетныйОстаткиИОбороты.Период) КАК Год,
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток) КАК НО01,
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ОборотДт01,
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК ОборотКт01,
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток) КАК КО01,
                          |    0 КАК НО02,
                          |    0 КАК ОборотДт02,
                          |    0 КАК ОборотКт02,
                          |    0 КАК КО02
                          |ПОМЕСТИТЬ ВременнаяТаблица
                          |ИЗ
                          |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(ДАТАВРЕМЯ(" + СтрЗаменить(Строка(Период - 1),Символы.НПП,"") + ", 1, 1, 0, 0, 0), ДАТАВРЕМЯ(" + СтрЗаменить(Строка(Период - 1),Символы.НПП,"") + ", 12, 31, 23, 59, 59), Год, , Счет.код = ""01.01"", , ) КАК ХозрасчетныйОстаткиИОбороты
                          |
                          |СГРУППИРОВАТЬ ПО
                          |    ГОД(ХозрасчетныйОстаткиИОбороты.Период)
                          |
                          |ОБЪЕДИНИТЬ ВСЕ
                          |
                          |ВЫБРАТЬ
                          |    ГОД(ХозрасчетныйОстаткиИОбороты.Период),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток),
                          |    0,
                          |    0,
                          |    0,
                          |    0
                          |ИЗ
                          |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(ДАТАВРЕМЯ(" + СтрЗаменить(Строка(Период),Символы.НПП,"") + ", 1, 1, 0, 0, 0), ДАТАВРЕМЯ(" + СтрЗаменить(Строка(Период),Символы.НПП,"") + ", 12, 31, 23, 59, 59), Год, , Счет.код = ""01.01"", , ) КАК ХозрасчетныйОстаткиИОбороты
                          |
                          |СГРУППИРОВАТЬ ПО
                          |    ГОД(ХозрасчетныйОстаткиИОбороты.Период)
                          |
                          |ОБЪЕДИНИТЬ ВСЕ
                          |
                          |ВЫБРАТЬ
                          |    ГОД(ХозрасчетныйОстаткиИОбороты.Период),
                          |    0,
                          |    0,
                          |    0,
                          |    0,
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт)
                          |ИЗ
                          |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(ДАТАВРЕМЯ(" + СтрЗаменить(Строка(Период - 1),Символы.НПП,"") + ", 1, 1, 0, 0, 0), ДАТАВРЕМЯ(" + СтрЗаменить(Строка(Период - 1),Символы.НПП,"") + ", 12, 31, 23, 59, 59), Год, , Счет.код = ""02.01"", , ) КАК ХозрасчетныйОстаткиИОбороты
                          |
                          |СГРУППИРОВАТЬ ПО
                          |    ГОД(ХозрасчетныйОстаткиИОбороты.Период)
                          |
                          |ОБЪЕДИНИТЬ ВСЕ
                          |
                          |ВЫБРАТЬ
                          |    ГОД(ХозрасчетныйОстаткиИОбороты.Период),
                          |    0,
                          |    0,
                          |    0,
                          |    0,
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт),
                          |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт)
                          |ИЗ
                          |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(ДАТАВРЕМЯ(" + СтрЗаменить(Строка(Период),Символы.НПП,"") + ", 1, 1, 0, 0, 0), ДАТАВРЕМЯ(" + СтрЗаменить(Строка(Период),Символы.НПП,"") + ", 12, 31, 23, 59, 59), Год, , Счет.код = ""02.01"", , ) КАК ХозрасчетныйОстаткиИОбороты
                          |
                          |СГРУППИРОВАТЬ ПО
                          |    ГОД(ХозрасчетныйОстаткиИОбороты.Период)
                          |;
                          |
                          ////////////////////////////////////////////////////////////////////////////////

                          |ВЫБРАТЬ
                          |    ВременнаяТаблица.Год КАК Год,
                          |    СУММА(ВременнаяТаблица.НО01) КАК НО01,
                          |    СУММА(ВременнаяТаблица.ОборотДт01) КАК ОборотДт01,
                          |    СУММА(ВременнаяТаблица.ОборотКт01) КАК ОборотКт01,
                          |    СУММА(ВременнаяТаблица.КО01) КАК КО01,
                          |    СУММА(ВременнаяТаблица.НО02) КАК НО02,
                          |    СУММА(ВременнаяТаблица.ОборотДт02) КАК ОборотДт02,
                          |    СУММА(ВременнаяТаблица.ОборотКт02) КАК ОборотКт02,
                          |    СУММА(ВременнаяТаблица.КО02) КАК КО02
                          |ИЗ
                          |    ВременнаяТаблица КАК ВременнаяТаблица
                          |
                          |СГРУППИРОВАТЬ ПО
                          |    ВременнаяТаблица.Год
                          |
                          |УПОРЯДОЧИТЬ ПО
                          |    Год УБЫВ");
    Результат = Запрос.Выполнить().Выгрузить();
    ПоместитьВоВременноеХранилище(Результат,АдресХранилища);
    
КонецПроцедуры

И всю эту штуку хочу перевести на такой алгоритм: формирование параметров, запуск в фоновом режиме процедуры сбора данных для таблиц и вывод на экран. Я понял, что можно процедуру разместить в общем модуле и сделать такое обращение

Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
         УникальныйИдентификатор, 
         "ИмяМодуля.ПолучитьИтоги01",
         , 
         НаименованиеЗадания);

Тогда все отработает, но не хочу вносить изменения в конфу. Хочу разместить все в обработке.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует