Автор Тема: Путаница в модулях! Откуда вызывать запрос?  (Прочитано 5473 раз)

0 Пользователей и 1 Гость просматривают эту тему.

olia

  • Новичок
  • *
  • Сообщений: 2
Всем доброго времени суток! Совсем запуталась в модулях! Объясните, пожалуйста, что делаю не так?

У документа реквизиты: Номер, Дата, СчетДенежныхСредств, ОстатокНаСчете, СуммаФактическая, такие-же на форме. Хочу при выборе счета автоматом получть остаток по нему. Пробовала так:
&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)
СуммаНаСчете = ВернутьОстатокПоСчету();
КонецПроцедуры

&НаСервере
Функция ВернутьОстатокПоСчету()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
           | ОстатокПоСчетамДенежныхСредствОстатки.СуммаОстаток
           |ИЗ
           | РегистрНакопления.ОстатокПоСчетамДенежныхСредств.Остатки(&НаДату, СчетДенежныхСредств = &Счет) КАК ОстатокПоСчетамДенежныхСредствОстатки";
Запрос.УстановитьПараметр("НаДату", Дата);
Запрос.УстановитьПараметр("Счет", СчетДенежныхСредств);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат.СуммаОстаток;
КонецФункции
Орёт, что переменная не определена:
Цитировать
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(13,38)}: Переменная не определена (Дата)
   Запрос.УстановитьПараметр("НаДату", <<?>>Дата); (Проверка: Сервер)
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(14,36)}: Переменная не определена (СчетДенежныхСредств)
   Запрос.УстановитьПараметр("Счет", <<?>>СчетДенежныхСредств);    (Проверка: Сервер)
Пыталась передавать их в процедуру:
СуммаНаСчете = ВернутьОстатокПоСчету(Дата, СчетДенжныхСредств);Орёт уже на форму:
Цитировать
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,39)}: Переменная не определена (Дата)
   СуммаНаСчете = ВернутьОстатокПоСчету(<<?>>Дата, СчетДенжныхСредств);       (Проверка: Тонкий клиент)
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,45)}: Переменная не определена (СчетДенжныхСредств)
   СуммаНаСчете = ВернутьОстатокПоСчету(Дата, <<?>>СчетДенжныхСредств);       (Проверка: Тонкий клиент)
Перекинула эту функцию в модуль объекта, пыталась вызывать её из модуля формы, ругается, что функция не определена, хотя я даже добавила к функции "Экспорт".
А в самой процедуре СчетДенежныхСредствПриИзменении(Элемент) не даёт сделать запрос, ругается на запрос.
Цитировать
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,17)}: Тип не определен (Запрос)
   Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
Где что не так делаю? Как правильно и почему?  ???
Заранее благодарна!

iipobaji

  • Модератор форума
  • Пользователь
  • *****
  • Сообщений: 62
  • iipobaji
  • ФИО: iipobaji
&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)   тут надо в отладчике посмотреть и из элемента найти значение нового счета
   СуммаНаСчете = ВернутьОстатокПоСчету(ДАТА, СЧЕТ);   здесь надо передать значение даты и значение счета(или строку счета а в серверной функции найти счет по коду)   
КонецПроцедуры

&НаСервере
Функция ВернутьОстатокПоСчету(ДАТА, СЧЕТ)   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
           |   ОстатокПоСчетамДенежныхСредствОстатки.СуммаОстаток
           |ИЗ
           |   РегистрНакопления.ОстатокПоСчетамДенежныхСредств.Остатки(&НаДату, СчетДенежныхСредств = &Счет) КАК ОстатокПоСчетамДенежныхСредствОстатки";
   Запрос.УстановитьПараметр("НаДату", Дата);
   Запрос.УстановитьПараметр("Счет", СчетДенежныхСредств);   
   Результат = Запрос.Выполнить().Выгрузить();   
   Возврат Результат.СуммаОстаток;   
КонецФункции



olia

  • Новичок
  • *
  • Сообщений: 2
Ничё не поняла! Можно поподробней?
В отладчике смотрела, но значение даты и счета так и не нашла. :(

poikopoi

  • Новичок
  • *
  • Сообщений: 2
На клиенте определите переменную Дата И Счет

&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)   
        Дата = Объект.Дата;
        Счет = Объект. СчетДенежныхСредств;

//Затем передайте эти переменный в процедуру на сервер в качестве параметров

   СуммаНаСчете = ВернутьОстатокПоСчету(Дата, Счет);      
КонецПроцедуры

//После чего можно вызывать функцию на сервере без контекста
&НаСервереБезКонтекста
Функция ВернутьОстатокПоСчету(Дата, Счет)   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
           |   ОстатокПоСчетамДенежныхСредствОстатки.СуммаОстаток
           |ИЗ
           |   РегистрНакопления.ОстатокПоСчетамДенежныхСредств.Остатки(&НаДату, СчетДенежныхСредств = &Счет) КАК ОстатокПоСчетамДенежныхСредствОстатки";
   Запрос.УстановитьПараметр("НаДату", Дата);
   Запрос.УстановитьПараметр("Счет", Счет);   
   Результат = Запрос.Выполнить().Выгрузить();   
   Возврат Результат.СуммаОстаток;   
КонецФункции