Доброго времени всем. Буду признателен за любую помощь и подсказку.
Проблема собственно в следующем. В СКД запрос работает и выдаёт все необходимые данные, но если этот же запрос выполнять в модуле то выдаёт ошибку "Поле объекта не обнаружено (Сумма). Стр.Зарплаты = Результат.ПараметрыОплаты.Сумма;"
Думается мне что это от того что Сумма находится в ПараметрыОплаты
и если СКД воспринимает это нормально, выдавая результат
то модуль ругается.
Перепробовал варианты как и в тексте запроса:
- ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма КАК СуммаЗП)
- ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма) КАК СуммаЗП
так и в модуле:
- Стр.Сумма = Результат.ПараметрыОплаты.СуммаЗП;
- Стр.Сумма = Результат.ПараметрыОплаты.(СуммаЗП);
и кучу других, но...
Пробовал и способом вот таким:
Выборка = Документы.ЗарплатаКВыплатеОрганизаций.Выбрать(НачалоПериода,КонецПериода);
Пока Выборка.Следующий() Цикл
Стр.Дата = Выборка.Дата;
Стр.Документ = Выборка.Номер;
Стр.Зарплаты = Выборка.ПараметрыОплаты.Сумма;
КонецЦикла;
Запрос.Текст =
"ВЫБРАТЬ
| ЗарплатаКВыплатеОрганизаций.Организация,
| НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, ДЕНЬ) КАК Дата,
| ЗарплатаКВыплатеОрганизаций.Номер,
| ЗарплатаКВыплатеОрганизаций.Проведен,
| ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма)
|ИЗ
| Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
|ГДЕ
| ЗарплатаКВыплатеОрганизаций.Проведен = ИСТИНА
| И ЗарплатаКВыплатеОрганизаций.Дата МЕЖДУ &НачПериода И &КонПериода
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Стр = Таб.Добавить();
Стр.Дата = Результат.Дата;
Стр.Документ = Результат.Номер;
Стр.Сумма = Результат.ПараметрыОплаты.Сумма;
Сообщить("Док №: "+Стр.Документ+" от "+Стр.Дата+" на сумму "+Стр.Зарплаты);
КонецЦикла;
! | http://pro1c.org.ua/index.php?act=announce&id=2: 3 |
СКД в данном случае делает работу программиста за вас, она понимает, что это табличная часть и берет всю работу на себя. В обычном запросе так не получится, т.к. "ПараметрыОплаты" - Табличная часть, и разумеется у нее нет реквизита Сумма, он есть у Строки табличной части (а вы пытаетесь обратиться к ТЧ как к Строке табличной части).
Если нужен итог по всей колонке таблицы то
|ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма(Сумма) КАК Сумма)
Стр.Сумма = Результат.ПараметрыОплаты.Сумма;
все равно выдает туже ошибку...Стр.Сумма = Результат.ПараметрыОплаты;
logist @ Сегодня, 15:57
,
Попробовал
Стр.Сумма = Результат.ПараметрыОплаты;
- ничего.Стр.Зарплаты = Результат.Получить(4)
- пусто... Странно...
ВЫБРАТЬ
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Номер,
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Дата КАК Дата,
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Проведен,
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Организация,
СУММА(ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Сумма) КАК Сумма
ИЗ
Документ.ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты КАК ЗарплатаКВыплатеОрганизацийПараметрыОплаты
ГДЕ
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Проведен
И ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
СГРУППИРОВАТЬ ПО
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Номер,
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Дата,
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Проведен,
ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Организация
УПОРЯДОЧИТЬ ПО
Дата
logist @ Сегодня, 19:25
,
Огромнейшее спасибо за помощь, получилось с небольшими допиливанием. Спасибо что поморочились и наставили на путь истинный)
п.с. кстати
Результат.Получить(5)
выводит по индексу результат запроса (формулировка метода моя и может не совпадать с истинной:), обнаружена методом научного тыка), возвращает отбираемые запросом данные по порядку их выбора, ну т.е. в случае ВЫБРАТЬ
ЗарплатаКВыплатеОрганизаций.Организация,
НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, ДЕНЬ) КАК Дата,
ЗарплатаКВыплатеОрганизаций.Номер,
ЗарплатаКВыплатеОрганизаций.Проведен,
ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма)
|ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма(Сумма) КАК Сумма)
Нужно делать второй запрос к табличной части, и связать по регистратору.
logist @ 24.09.16, 19:25
,
Доброго времени суток. В процессе борьбы с СКД столкнулся с похожей на прошлую проблемой - запрос снова работая в СКД в модуле ничего не выдает, точнее пустые значения.
Процедура Кнопка1Нажатие(Элемент)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КодыОрганизации.Организация.Наименование,
| КодыОрганизации.КодПоЕДРПОУ
|ИЗ
| РегистрСведений.КодыОрганизации КАК КодыОрганизации";
КодЗапрос = Запрос.Выполнить().Выбрать();
Код = КодЗапрос.КодПоЕДРПОУ;
Предупреждение(Код);
КонецПроцедуры
sanytch @ Сегодня, 22:17
,
Вопрос снят. После
ЗапросКода = Запрос.Выполнить().Выбрать();
добавил ЗапросКода.Следующий();
и заработало. Чёт завтыкал...
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua