подскажите как из глобального модуля перенести переменну.
18.06.2009
14:59
#21
"А если сделать так:<br>объявить в глобальном модуле переменную Среднее тоже как Экспорт<br>и написать:<br>Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда<br> Среднее =Запрос.СуммаСреднее;<br> Возврат Среднее;<br>КонецЕсли; <br>"
18.06.2009
15:02
#22
"> господин belicovS вы я смотрю смый умный , вы только критикуете, а сами дали дельный совет.Не суди и судим не будешь-плохие програмеры всегда злятся и критикуют других.<br> Зачем обижаться? Просто то, что вы пишете,лишено смысла.<br>Вам belicovS дал правильный совет, который понял бы любой программист! Использовать следующее:<br>> НачисленоЗаОтпуск = СформироватьСредний();<br><br>Элементарные вещи: функция возвращает не переменную, а ее значение!!! Переменная существовала только внутри самой функции, вышли-исчезла. Это азы программирования, но вы этого не поняли. Вам еще раз это же посоветовали и shindi, и ЗаЕц. Но вы все равно не понимаете.<br><br>естественно, после этого совет<br>> Позовите наконец программиста - он вам это сделает за 5 минут
<br><br><br>"

18.06.2009
15:04
#23
"> А если сделать так:<br>> объявить в глобальном модуле переменную Среднее тоже как Экспорт<br>> и написать:<br>> Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда<br>> Среднее =Запрос.СуммаСреднее;<br>> Возврат Среднее;<br>> КонецЕсли; <br>> <br><br>А зачем? ведь строки НачисленоЗаОтпуск = СформироватьСредний(); более, чем достаточно.<br><br>"
18.06.2009
15:10
#24
ну не получается же у нее так все равно. Пусть попробует по-другому. страшного-то ничего нет.<br>
18.06.2009
15:13
#25
"Ладно начну с начала, а то я вижу что меня не понимают:<br>///это в отчете , получили данные за месяц по одному запросу , <br>Пока Запрос.Группировка() = 1 Цикл<br>Премия =Окр(ОтработаноЗаМесяц*0.3*Запрос.ПремияПроцент/100,2);//мы вычислили премию теперь объявляем функцию, для нахождения сред. <br> СформироватьСредний();//это функция объявления, которая находится в глобальнике т.е.ушли в глобальник сформировали там запрос:<br>Функция СформироватьСредний() Экспорт<br> Перем Запрос, ТекстЗапроса;<br> //Создание объекта типа Запрос <br> ЗначениеМесяца = ДатаМесяц(РабочаяДата());<br> Если ЗначениеМесяца = 6 тогда<br> Мес1 = Дата("30.06.2009"); <br> Мес3 = Дата("01.04.2009"); <br> КонецЕсли;<br> Запрос = СоздатьОбъект("Запрос");<br> ТекстЗапроса = <br> "//{{ЗАПРОС(Сформировать)<br> |Период с Мес3 по Мес1;<br> |Обрабатывать НеПомеченныеНаУдаление;<br> |Сотрудник = Документ.Отпускные.Сотрудник;<br> |Сумма = Документ.Отпускные.Сумма;<br> |ДатаДок = Документ.Отпускные.ДатаДок;<br> |ТекущийДокумент = Документ.Отпускные.ТекущийДокумент;<br> |Функция СуммаСреднее = Среднее(Сумма);<br> |Функция ТекущийДокументСуммаСумма = Сумма(ТекущийДокумент);<br> |Группировка Сотрудник без упорядочивания без групп;<br> |Условие(Сотрудник = Сотрудник);<br> |"//}}ЗАПРОС<br> ;<br> // Если ошибка в запросе, то выход из процедуры<br> Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда<br> Среднее = Запрос.СуммаСреднее;<br> Возврат Среднее ;//вот это должно уйти в отчет, но после перехода в отчет он выдает ошибку, поле агрегатного объекта не обнаружено или ещё что-нибудь, вот этот переход меня и волнует я прошу подсказать что я делаю не так, а в ответ читаю только.....,мне нужна помощь а не критика .<br> <br> "
18.06.2009
15:30
#26
Смотритре, вот вы пишете, если в запросе не выполнен, то как же вы присваиваете переменной Среднее значение, которое должно получиться при выполнении запроса? Как-то я сразу на это не обратила внимания.
18.06.2009
15:38
#28
"Ну тогда вам правильно советовали в отчете просто написать НачисленоЗаОтпуск = СформироватьСредний(); "
18.06.2009
15:41
#29
я присваивала и добавляла сразу в формулу, и вот эту формулу т.е.её название выводила в печ-форму, она показывала 0, я её убрала сделала на прямую и все заработала, но это опять мой косяк что-то я не внимательно делаю, ну теперь легче , ч/з отладчик увижу.спасибо.
18.06.2009
15:49
#30
"Одно тут настораживает, для чего условие? |Условие(Сотрудник = Сотрудник);<br>Надо полагать, что хотели сделать отбор по некоему конкретному сотруднику, но в приведенном случае<br>условие выполняется всегда. <br><br>Либо надо сделать какую-нибудь глобальную переменную глСотрудник, присваивать ей значения и затем вызывать вашу функцию, либо (как мне кажется правильнее) добавить в функцию параметр.<br>Тогда объявление вашей функции будет выглядеть как нибудь так:<br><br>Функция СформироватьСредний(ВыбСотрудник) Экспорт<br>// ...... и соответственно поменять вышеуказанную строчку на<br>|Условие(Сотрудник = ВыбСотрудник);<br>//.........................................................."
Читают тему
(гостей: 1)