![]() |
|
Внешняя обработка на УФ | ☑ | ||
---|---|---|---|---|
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", , НаименованиеЗадания); Тогда все отработает, но не хочу вносить изменения в конфу. Хочу разместить все в обработке. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |