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


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

Внешняя обработка на УФ
Я
   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 человек.
Рекламное место пустует