Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0
Доброго времени всем. Буду признателен за любую помощь и подсказку. Проблема собственно в следующем. В СКД запрос работает и выдаёт все необходимые данные, но если этот же запрос выполнять в модуле то выдаёт ошибку "Поле объекта не обнаружено (Сумма). Стр.Зарплаты = Результат.ПараметрыОплаты.Сумма;" Думается мне что это от того что Сумма находится в ПараметрыОплаты
и если СКД воспринимает это нормально, выдавая результат
то модуль ругается. Перепробовал варианты как и в тексте запроса: - ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма КАК СуммаЗП) - ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма) КАК СуммаЗП так и в модуле: - Стр.Сумма = Результат.ПараметрыОплаты.СуммаЗП; - Стр.Сумма = Результат.ПараметрыОплаты.(СуммаЗП); и кучу других, но... Пробовал и способом вот таким:
Выборка = Документы.ЗарплатаКВыплатеОрганизаций.Выбрать(НачалоПериода,КонецПериода); Пока Выборка.Следующий() Цикл Стр.Дата = Выборка.Дата; Стр.Документ = Выборка.Номер; Стр.Зарплаты = Выборка.ПараметрыОплаты.Сумма; КонецЦикла;
но когда дело доходит до Суммы то и Суммы то нет...
Ниже привожу отрывок кода из модуля: (Стр - строка табличного поля Таб , в которое выводятся результаты)
Запрос.Текст = "ВЫБРАТЬ | ЗарплатаКВыплатеОрганизаций.Организация, | НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, ДЕНЬ) КАК Дата, | ЗарплатаКВыплатеОрганизаций.Номер, | ЗарплатаКВыплатеОрганизаций.Проведен, | ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма) |ИЗ | Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций |ГДЕ | ЗарплатаКВыплатеОрганизаций.Проведен = ИСТИНА | И ЗарплатаКВыплатеОрганизаций.Дата МЕЖДУ &НачПериода И &КонПериода | |УПОРЯДОЧИТЬ ПО | Дата";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл Стр = Таб.Добавить(); Стр.Дата = Результат.Дата; Стр.Документ = Результат.Номер; Стр.Сумма = Результат.ПараметрыОплаты.Сумма; Сообщить("Док №: "+Стр.Документ+" от "+Стр.Дата+" на сумму "+Стр.Зарплаты); КонецЦикла;
Подскажите как правильно обратится к Сумме из запроса?
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
СКД в данном случае делает работу программиста за вас, она понимает, что это табличная часть и берет всю работу на себя. В обычном запросе так не получится, т.к. "ПараметрыОплаты" - Табличная часть, и разумеется у нее нет реквизита Сумма, он есть у Строки табличной части (а вы пытаетесь обратиться к ТЧ как к Строке табличной части).
Если нужен итог по всей колонке таблицы то
|ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма(Сумма) КАК Сумма)
Если нужна каждая строка, то тогда надо использовать в запросе саму табличную часть, а не док.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(sanytch @ 24.09.16, 15:51)
все равно выдает туже ошибку...
Вы бы отладчиком посмотрели результирующую таблицу, что бы понять что там вообще, а так занимаетесь тыканьем в никуда. В данном случае ваша сумма (в том примере который я привел) находится в поле "ПараметрыОплаты", т.е.
Стр.Сумма = Результат.ПараметрыОплаты;
Сообщение отредактировал logist - 24.09.16, 15:01
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(sanytch @ 24.09.16, 18:18)
В таблице пусто!
Если бы в таблице было пусто, ваша выборка бы не выполнялась (пустой результат запроса) и ошибка бы не возникала. "Результат.Получить(4)" это что? Это бред
Сделайте так и не мучайтесь
ВЫБРАТЬ ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Номер, ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Дата КАК Дата, ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Проведен, ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Организация, СУММА(ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Сумма) КАК Сумма ИЗ Документ.ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты КАК ЗарплатаКВыплатеОрганизацийПараметрыОплаты ГДЕ ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Проведен И ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
СГРУППИРОВАТЬ ПО ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Номер, ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Дата, ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Проведен, ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Организация
УПОРЯДОЧИТЬ ПО Дата
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0
logist @ Сегодня, 19:25
, Огромнейшее спасибо за помощь, получилось с небольшими допиливанием. Спасибо что поморочились и наставили на путь истинный)
п.с. кстати
Результат.Получить(5)
выводит по индексу результат запроса (формулировка метода моя и может не совпадать с истинной:), обнаружена методом научного тыка), возвращает отбираемые запросом данные по порядку их выбора, ну т.е. в случае
ВЫБРАТЬ ЗарплатаКВыплатеОрганизаций.Организация, НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, ДЕНЬ) КАК Дата, ЗарплатаКВыплатеОрганизаций.Номер, ЗарплатаКВыплатеОрганизаций.Проведен, ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма)
Индекс 0 соответствует Организации, а 4 признаку Проведен, я выходит опечатался, нужно 5, но это ничего не меняло, все равно было пусто...
Ну да ладно, ещё раз спасибо за помощь, премного благодарствую)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(sanytch @ 24.09.16, 23:24)
выводит по индексу результат запроса (формулировка метода моя и может не совпадать с истинной:), обнаружена методом научного тыка), возвращает отбираемые запросом данные по порядку их выбора, ну т.е. в случае
В поле "Результат" находится таблица значений, число индекса это номер строки таблицы, а не поля в ней.
Цитата(Vofka @ 26.09.16, 8:54)
Что это за конструкция?
Получает сумму указанной колонки внутренней табличной части.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(logist @ 26.09.16, 13:13)
В поле "Результат" находится таблица значений, число индекса это номер строки таблицы, а не поля в ней.
Согласен, просто не совсем правильно представлял сам результат - отсюда и не правильная формулировка
Acid @ Вчера, 14:26
, была и такая мысль но нашлось решение и поиски истины прекратил, хотя и Вам спасибо, на досуге попробую и такой способ, уверен он также правильный
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0
logist @ 24.09.16, 19:25
, Доброго времени суток. В процессе борьбы с СКД столкнулся с похожей на прошлую проблемой - запрос снова работая в СКД в модуле ничего не выдает, точнее пустые значения.
Процедура Кнопка1Нажатие(Элемент) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КодыОрганизации.Организация.Наименование, | КодыОрганизации.КодПоЕДРПОУ |ИЗ | РегистрСведений.КодыОрганизации КАК КодыОрганизации"; КодЗапрос = Запрос.Выполнить().Выбрать(); Код = КодЗапрос.КодПоЕДРПОУ; Предупреждение(Код); КонецПроцедуры
ну и получаю вот такое
Что здесь не так? П.С. Ну в регистре сведений естесственно данные есть...
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!