Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:17

Установить параметр в запросе для получения измерение из регистра

Автор vforallofus, 18 апр 2018, 13:07

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

vforallofus

Добрый день,

хочу получить из регистра накопления остаток суммы доллара и евро по дате. но не могу установить параметр "валюта". В остатке только две валюты , доллар и евро. в цикле хотелось бы поместить соответствующие остатки в реквизиты, но получается остатки суммы записываются либо по доллару или по евро. как можно исправить, помогите пожалуйста. Реквизиты "текущийостатоквдолларах" и "текущийостатоквеврах" находятся на форме регистра накопления

(я совсем новичок) 

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

oleg-x

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      Если ВыборкаДетальныеЗаписи.Валюта = Доллар Тогда
          ТекущийОстатокВДолларах = ВыборкаДетальныеЗаписи.КоличествоВалютОстаток;
      ИначеЕсли ВыборкаДетальныеЗаписи.Валюта = Евро Тогда
          ТекущийОстатокВЕврах =   ВыборкаДетальныеЗаписи.КоличествоВалютОстаток;
       Иначе
            //Новая валюта
    КонецЕсли                           
   КонецЦикла;

А то что у Вас было. В цикле переписывало значения по каждой валюте.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

vforallofus


Я тоже делал кое-что подобное, но результатов нет. в отладке в вижу что даже когда USD = USD, "истина" не пишет. если пишу без кавочек, тогда ругается что объекта нет((

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

]

oleg-x

ЦитироватьЯ тоже делал кое-что подобное, но результатов нет. в отладке в вижу что даже когда USD = USD, "истина" не пишет. если пишу без кавочек, тогда ругается что объекта нет((
Валюта, это справочник и сравнивать надо со справочником или же выводить наименование валюты и сравнивать как строки.
1) ВыбДетЗапис.Валюта = Справочники.Валюты.НайтиПоНаименованию("Доллар");
2) ВыбДетЗапис.Валюта.Наименование = "Доллар";
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

vforallofus

моя конфигурация
Добавлено: 18 апр 2018, 14:56


Оба вариантов не сработало, или я не понял как коду написать:dfbsdfbsdf: но все равно спасибо!:)


я отредактировал таким образом:

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      
      
   Если ВыборкаДетальныеЗаписи.Валюта.наименование = "USD" Тогда
      
      
      ТекущийОстатокВДолларах = ВыборкаДетальныеЗаписи.КоличествоВалютОстаток;
      
   ИначеЕсли ВыборкаДетальныеЗаписи.Валюта.Наименование = "EUR" Тогда
      
      ТекущийОстатокВЕврах =   ВыборкаДетальныеЗаписи.КоличествоВалютОстаток;
    Иначе
            //Новая валюта
    КонецЕсли                           
   КонецЦикла;

oleg-x

То что у вас в конфигураторе сейчас
   Если ВыборкаДетальныеЗаписи.Валюта = "USD" Тогда

ТекущийОстатокВДолларах = ВыборкаДетальныеЗаписи.КоличествоВалютОстаток;

ИначеЕсли ВыборкаДетальныеЗаписи.Валюта = "EUR" Тогда

ТекущийОстатокВЕврах =   ВыборкаДетальныеЗаписи.КоличествоВалютОстаток;
    Иначе


и где вы тут сравниваете наименование?
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

vforallofus


Получилось! спасибо добрый человек!

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      
      
   Если ВыборкаДетальныеЗаписи.Валюта = Перечисления.Валюты.USD Тогда;
      
      
      ТекущийОстатокВДолларах = ВыборкаДетальныеЗаписи.КоличествоВалютОстаток;
      
   ИначеЕсли ВыборкаДетальныеЗаписи.Валюта = Перечисления.Валюты.EUR Тогда
      
      ТекущийОстатокВЕврах =   ВыборкаДетальныеЗаписи.КоличествоВалютОстаток;
    Иначе
            //Новая валюта
    КонецЕсли                           
   КонецЦикла;

oleg-x

Понятно, у вас это перечисление. Но по классике, такие вещи делают справочниками. Так как если потребуется добавить новую валюту, то придется менять конфигурацию и переписывать весь код. Нужно изначально писать так, что бы можно все сделать только с пользовательской стороны.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

vforallofus

верно, наверное хранить как перечисление не самое оптимальное, спасибо еще раз!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск