Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Не могу получить из запроса значение , В СКД запрос работает, но в модуле нет          
sanytch Подменю пользователя
сообщение 24.09.16, 12:22
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени всем. Буду признателен за любую помощь и подсказку.
Проблема собственно в следующем. В СКД запрос работает и выдаёт все необходимые данные, но если этот же запрос выполнять в модуле то выдаёт ошибку "Поле объекта не обнаружено (Сумма). Стр.Зарплаты = Результат.ПараметрыОплаты.Сумма;"
Думается мне что это от того что Сумма находится в ПараметрыОплаты

и если СКД воспринимает это нормально, выдавая результат

то модуль ругается.
Перепробовал варианты как и в тексте запроса:
- ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма КАК СуммаЗП)
- ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма) КАК СуммаЗП
так и в модуле:
- Стр.Сумма = Результат.ПараметрыОплаты.СуммаЗП;
- Стр.Сумма = Результат.ПараметрыОплаты.(СуммаЗП);
и кучу других, но...
Пробовал и способом вот таким:
    Выборка = Документы.ЗарплатаКВыплатеОрганизаций.Выбрать(НачалоПериода,КонецПериода);
    Пока Выборка.Следующий() Цикл
        Стр.Дата = Выборка.Дата;
        Стр.Документ = Выборка.Номер;
        Стр.Зарплаты = Выборка.ПараметрыОплаты.Сумма;
    КонецЦикла;

но когда дело доходит до Суммы то и Суммы то нет...


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

    Пока Результат.Следующий() Цикл
        Стр = Таб.Добавить();
        Стр.Дата = Результат.Дата;
        Стр.Документ = Результат.Номер;
        Стр.Сумма = Результат.ПараметрыОплаты.Сумма;
        Сообщить("Док №: "+Стр.Документ+" от "+Стр.Дата+" на сумму "+Стр.Зарплаты);
    КонецЦикла;

Подскажите как правильно обратится к Сумме из запроса?


 ! 

Правила: 3
 


Сообщение отредактировал logist - 24.09.16, 14:31

logist Подменю пользователя
сообщение 24.09.16, 14:40
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

СКД в данном случае делает работу программиста за вас, она понимает, что это табличная часть и берет всю работу на себя. В обычном запросе так не получится, т.к. "ПараметрыОплаты" - Табличная часть, и разумеется у нее нет реквизита Сумма, он есть у Строки табличной части (а вы пытаетесь обратиться к ТЧ как к Строке табличной части).

Если нужен итог по всей колонке таблицы то
|ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма(Сумма) КАК Сумма)

Если нужна каждая строка, то тогда надо использовать в запросе саму табличную часть, а не док.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sanytch Подменю пользователя
сообщение 24.09.16, 14:51
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(logist @ 24.09.16, 15:40) *
Если нужен итог по всей колонке таблицы то
|ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма(Сумма) КАК Сумма)

пробовал и так(мне как раз итог и нужен, я сворачиваю таблицу по дате и Зарплата это только один из немногих запросов которые формируют таблицу), но
Стр.Сумма = Результат.ПараметрыОплаты.Сумма;
все равно выдает туже ошибку...
Благодарен за отзыв, Попоробую
Цитата(logist @ 24.09.16, 15:40) *
использовать в запросе саму табличную часть, а не док.



logist Подменю пользователя
сообщение 24.09.16, 14:57
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(sanytch @ 24.09.16, 15:51) *
все равно выдает туже ошибку...

Вы бы отладчиком посмотрели результирующую таблицу, что бы понять что там вообще, а так занимаетесь тыканьем в никуда. В данном случае ваша сумма (в том примере который я привел) находится в поле "ПараметрыОплаты", т.е.
Стр.Сумма = Результат.ПараметрыОплаты;


Сообщение отредактировал logist - 24.09.16, 15:01


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sanytch Подменю пользователя
сообщение 24.09.16, 17:18
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 15:57 * ,
Попробовал
Стр.Сумма = Результат.ПараметрыОплаты;
- ничего.
В таблице пусто!
попробовал даже
Стр.Зарплаты = Результат.Получить(4)
- пусто... Странно...

logist Подменю пользователя
сообщение 24.09.16, 18:25
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(sanytch @ 24.09.16, 18:18) *
В таблице пусто!

Если бы в таблице было пусто, ваша выборка бы не выполнялась (пустой результат запроса) и ошибка бы не возникала.
"Результат.Получить(4)" это что? Это бред smile.gif

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

СГРУППИРОВАТЬ ПО
    ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Номер,
    ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Дата,
    ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Проведен,
    ЗарплатаКВыплатеОрганизацийПараметрыОплаты.Ссылка.Организация

УПОРЯДОЧИТЬ ПО
    Дата


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: sanytch,

sanytch Подменю пользователя
сообщение 24.09.16, 22:24
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 19:25 * ,
Огромнейшее спасибо за помощь, получилось с небольшими допиливанием. Спасибо что поморочились и наставили на путь истинный)

п.с. кстати
Результат.Получить(5)
выводит по индексу результат запроса (формулировка метода моя и может не совпадать с истинной:), обнаружена методом научного тыка), возвращает отбираемые запросом данные по порядку их выбора, ну т.е. в случае
ВЫБРАТЬ
    ЗарплатаКВыплатеОрганизаций.Организация,
    НАЧАЛОПЕРИОДА(ЗарплатаКВыплатеОрганизаций.Дата, ДЕНЬ) КАК Дата,
    ЗарплатаКВыплатеОрганизаций.Номер,
    ЗарплатаКВыплатеОрганизаций.Проведен,
    ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма)

Индекс 0 соответствует Организации, а 4 признаку Проведен, я выходит опечатался, нужно 5, но это ничего не меняло, все равно было пусто...

Ну да ладно, ещё раз спасибо за помощь, премного благодарствую)

Vofka Подменю пользователя
сообщение 26.09.16, 7:54
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 24.09.16, 15:40) *
|ЗарплатаКВыплатеОрганизаций.ПараметрыОплаты.(Сумма(Сумма) КАК Сумма)

Что это за конструкция?

logist Подменю пользователя
сообщение 26.09.16, 12:13
Сообщение #9

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(sanytch @ 24.09.16, 23:24) *
выводит по индексу результат запроса (формулировка метода моя и может не совпадать с истинной:), обнаружена методом научного тыка), возвращает отбираемые запросом данные по порядку их выбора, ну т.е. в случае

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

Цитата(Vofka @ 26.09.16, 8:54) *
Что это за конструкция?

Получает сумму указанной колонки внутренней табличной части.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Acid Подменю пользователя
сообщение 26.09.16, 13:26
Сообщение #10

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Нужно делать второй запрос к табличной части, и связать по регистратору.

logist Подменю пользователя
сообщение 26.09.16, 13:40
Сообщение #11

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Acid @ 26.09.16, 14:26) *
Нужно делать второй запрос к табличной части, и связать по регистратору.

Регистратору? Это запрос из документа, нужно выбирать табличную часть и всё, выше уже решили.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sava1 Подменю пользователя
сообщение 26.09.16, 14:25
Сообщение #12

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(Acid @ 26.09.16, 14:26) *
Нужно делать второй запрос к табличной части, и связать по регистратору.

Первый ! + внутренне соединение по ИД документа.
Но так, как 1С сама прицепит недостающеее, то -
Цитата(logist @ 26.09.16, 14:40) *
нужно выбирать табличную часть и всё,


sanytch Подменю пользователя
сообщение 27.09.16, 9:06
Сообщение #13

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(logist @ 26.09.16, 13:13) *
В поле "Результат" находится таблица значений, число индекса это номер строки таблицы, а не поля в ней.

Согласен, просто не совсем правильно представлял сам результат - отсюда и не правильная формулировка

Acid @ Вчера, 14:26 * ,
была и такая мысль но нашлось решение и поиски истины прекратил, хотя и Вам спасибо, на досуге попробую и такой способ, уверен он также правильный

sanytch Подменю пользователя
сообщение 27.09.16, 21:17
Сообщение #14

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ 24.09.16, 19:25 * ,
Доброго времени суток. В процессе борьбы с СКД столкнулся с похожей на прошлую проблемой - запрос снова работая в СКД в модуле ничего не выдает, точнее пустые значения.
Процедура Кнопка1Нажатие(Элемент)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    КодыОрганизации.Организация.Наименование,
    |    КодыОрганизации.КодПоЕДРПОУ
    |ИЗ
    |    РегистрСведений.КодыОрганизации КАК КодыОрганизации";
    КодЗапрос = Запрос.Выполнить().Выбрать();
    Код = КодЗапрос.КодПоЕДРПОУ;
    Предупреждение(Код);
КонецПроцедуры

ну и получаю вот такое

Что здесь не так?
П.С. Ну в регистре сведений естесственно данные есть...

sanytch Подменю пользователя
сообщение 27.09.16, 22:22
Сообщение #15

Говорящий
***
Группа: Пользователи
Сообщений: 93
Спасибо сказали: 0 раз
Рейтинг: 0

sanytch @ Сегодня, 22:17 * ,
Вопрос снят. После
ЗапросКода = Запрос.Выполнить().Выбрать();
добавил
ЗапросКода.Следующий();
и заработало. Чёт завтыкал...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 26.04.24, 9:18
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!