Вывести на форму сумму из регистра накопления
Здравствуйте!
В рамках обучения решил написать калькулятор кассы, с задачей суммирования банкнот и монет из полей справился, теперь хочу вывести на форму данные Кассы из регистра, что бы в дальнейшем сравнить фактические наличные деньги с "теоретическими".
Обработку делаю в расширении
Добавил в расширение регистр накоплений ДенежныеСредстваНаличные со всеми вложениями.
создал запрос с помощью конструктора запросов:
В примерах везде запросы вытаскивают из регистров несколько ресурсов, поэтому по образцу сделал с циклом, хотя он тут скорее всего не нужен :)
не понятно, нужно ли выставлять в параметрах организацию, если она всего одна.
Результат - пустое сообщение. ткните пожалуйста дошкольника в ошибку
В рамках обучения решил написать калькулятор кассы, с задачей суммирования банкнот и монет из полей справился, теперь хочу вывести на форму данные Кассы из регистра, что бы в дальнейшем сравнить фактические наличные деньги с "теоретическими".
Обработку делаю в расширении
Добавил в расширение регистр накоплений ДенежныеСредстваНаличные со всеми вложениями.
создал запрос с помощью конструктора запросов:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДенежныеСредстваНаличные.Сумма КАК Сумма
|ИЗ
| РегистрНакопления.ДенежныеСредстваНаличные КАК ДенежныеСредстваНаличные
|ГДЕ
| ДенежныеСредстваНаличные.Касса = &Касса
| И ДенежныеСредстваНаличные.Организация = &Организация
|ИТОГИ ПО
| Сумма";
Запрос.УстановитьПараметр("Касса",Справочники.Кассы.НайтиПоНаименованию("Касса физическая"));
Запрос.УстановитьПараметр("Организация",Справочники.Организации.НайтиПоНаименованию("Индивидуальный предприниматель ""Г.А.А."""));
РезультатЗапроса = Запрос.Выполнить();
Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
Сообщить(Записи.Сумма);
КонецЦикла;
Сообщить (Записи.Сумма);
ПоказатьВ примерах везде запросы вытаскивают из регистров несколько ресурсов, поэтому по образцу сделал с циклом, хотя он тут скорее всего не нужен :)
не понятно, нужно ли выставлять в параметрах организацию, если она всего одна.
Результат - пустое сообщение. ткните пожалуйста дошкольника в ошибку
По теме из базы знаний
- Корректировка остатков регистров накопления (обычные и управляемые формы)
- Поиск ошибок по регистрам накопления (управляемые формы)
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Остатки товара на складе с ценой и суммой (ERP 2.4, ERP 2.5, УТ 11.4, УТ 11.5, КА 2.4, КА 2.5)
- Универсальный отчет для сравнения записей регистров накопления между базами по COM-соединению, для обычных форм
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) а возможно "сообщить" этот параметр что бы проверить, нашел он или нет...
типа Сообщить(Записи.Запрос.Параметр("Касса"))
кстати, может это из-за расширения, потому что в него не добавлены справочники... хотя он же их позволяет в коде и не ругается что нет таких
типа Сообщить(Записи.Запрос.Параметр("Касса"))
кстати, может это из-за расширения, потому что в него не добавлены справочники... хотя он же их позволяет в коде и не ругается что нет таких
(1)Циклом обходятся элементы выборки, а не "вытащенные" ресурсы, поэтому в этом смысле цикл не нужен.
Цикл нужен, если у вас результат запроса - более, чем одна запись, чтобы вывести все записи.
Далее, если Касса и Организация - это измерения регистра, то условия нужно накладывать не в ГДЕ, а в параметры виртуальной таблицы.
И по сути вопроса, почему пустое сообщение.
Запрос выбирает какие-то данные вообще? Записи.Количество() - чему равно?
И если оно больше 0, то второй вопрос. На этом этапе
Сообщить (Записи.СуммаОстаток)
чему равно значение Записи.СуммаОстаток?
Цикл нужен, если у вас результат запроса - более, чем одна запись, чтобы вывести все записи.
Далее, если Касса и Организация - это измерения регистра, то условия нужно накладывать не в ГДЕ, а в параметры виртуальной таблицы.
И по сути вопроса, почему пустое сообщение.
Запрос выбирает какие-то данные вообще? Записи.Количество() - чему равно?
И если оно больше 0, то второй вопрос. На этом этапе
Сообщить (Записи.СуммаОстаток)
чему равно значение Записи.СуммаОстаток?
Эврика! получилось!
1) вытащил каим то чудом сумму и офигел от количества записей :) Понял свой косяк, Исправил и взял СуммаОстаток
2) Организацию не смог найти ни по названию, ни по ИНН, ну да бог с ней, без нее работает только по кассе.
3) по поводу того что в "где" не надо пихать параметр а делать это в виртуальной таблице не понял, но вроде и так работает.
4) Без цикла не работает, не смотря, на то что один результат должен быть.
т.е. если закомментировать цикл и вставить просто Сообщить(Записи.СуммаОстаток); то почему то не работает...
Чувствую что вырос, хотя зря, сделал без понимания, методом тыка.
СПАСИБО! вам большое что потратили на меня время!
1) вытащил каим то чудом сумму и офигел от количества записей :) Понял свой косяк, Исправил и взял СуммаОстаток
2) Организацию не смог найти ни по названию, ни по ИНН, ну да бог с ней, без нее работает только по кассе.
3) по поводу того что в "где" не надо пихать параметр а делать это в виртуальной таблице не понял, но вроде и так работает.
4) Без цикла не работает, не смотря, на то что один результат должен быть.
т.е. если закомментировать цикл и вставить просто Сообщить(Записи.СуммаОстаток); то почему то не работает...
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДенежныеСредстваНаличныеОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
| РегистрНакопления.ДенежныеСредстваНаличные.Остатки КАК ДенежныеСредстваНаличныеОстатки
|ГДЕ
| ДенежныеСредстваНаличныеОстатки.Касса = &Касса";
Запрос.УстановитьПараметр("Касса",Справочники.Кассы.НайтиПоНаименованию("Касса физическая"));
РезультатЗапроса = Запрос.Выполнить();
Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
Сообщить(Записи.СуммаОстаток);
КонецЦикла;
ПоказатьЧувствую что вырос, хотя зря, сделал без понимания, методом тыка.
СПАСИБО! вам большое что потратили на меня время!
(6)без цикла у вас не работает, потому что вы не переходите на первую запись выборки.
Метод Выборка.Следующий() делает "шаг" на следующую запись.
Можно использовать в цикле, как в вашем примере, для обхода всех записей. Но если, например, в выборке всего 1 запись, или если вам в любом случае нужна только первая, можно делать так:
По поводу параметров. Это важный момент, и грубая ошибка, поэтому лучше разобраться в этом нюансе изначально.
Вот пример запроса, где из регистра накопления выбираются данные по измерениям с использованием параметров виртуальной таблицы:
Метод Выборка.Следующий() делает "шаг" на следующую запись.
Можно использовать в цикле, как в вашем примере, для обхода всех записей. Но если, например, в выборке всего 1 запись, или если вам в любом случае нужна только первая, можно делать так:
Выборка.Следующий();
Сообщить(Выборка.СуммаОстаток)
По поводу параметров. Это важный момент, и грубая ошибка, поэтому лучше разобраться в этом нюансе изначально.
Вот пример запроса, где из регистра накопления выбираются данные по измерениям с использованием параметров виртуальной таблицы:
Запрос.Текст = "ВЫБРАТЬ
| ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(
| ,
| Номенклатура = &Номенклатура
| И Склад = &Склад) КАК ОстаткиТоваровОстатки";
Запрос.УстановитьПараметр("Номенклатура",);// Номенклатура
Запрос.УстановитьПараметр("Склад",);// Склады учета
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот