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

код такой


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


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

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

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

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

Тогда все отработает, но не хочу вносить изменения в конфу. Хочу разместить все в обработке.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой