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

Вопрос по Запросу

Автор Игорь_M, 25 апр 2015, 00:02

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

Игорь_M

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

ТЗСоставСчета = Объект.СоставСчета.Выгрузить();
Запрос.УстановитьПараметр("Таб",ТЧЗаявка);
Запрос.УстановитьПараметр("СоставСчета",ТЗСоставСчета);
ТЧ = Запрос.Выполнить().Выгрузить();

Игорь_M

Таки жизненный вопрос :) подскажите кто знает плз

Дмитрий@

Просто непонятен сам вопрос, и конечная цель.

Игорь_M

Цель:  при создании документа СчетОтПоставщика сделал кнопочку, по нажатию которой открывается ФормаВыбораСписка Документ.ЗаявкаПоставщику, где пользователь выбирает ЗаявкуПоставщику, на основании которой заполняется таб.часть СчетаОтПоставщика. Проблема в том чтобы после того как выбрал одну Заявку и она попала в табчасть, выбрать еще одну Заявку и суммировать ее с тем, что уже есть. Получается, что данные в таб.части на этом этапе еще не записаны и присутствуют только в Форме, соответственно, как я понимаю, 1С ругается именно на то что запрос обращается к Объекту, а что делать? как еще обратиться к этим данным? Вроде как я выгружаю их сначала в ТЗ (ТЗ же уже не Объект?!), но нет ... с..ин сын таки все равно считает что эта ТЗ - это Объект!! Как так?

vitasw

Мы вам не мешаем самому с собой разговаривать? То что запрос рабоатет по записанным объектам, никак не относится к заполнению вашего документа. Метод найти() никто не отменял, выгрузить/свернуть - тоже.

Дмитрий@

У вас где хранятся список заявок которых выбрали.

Игорь_M

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

Дмитрий@

Что такое "ТЧЗаявка"?
На сколько я понял проблема в том как передать табличную часть в запрос?

Игорь_M

Это таблица значений выгруженная из ЗаявкиОтПоставщика. Проблема в том как табличную часть непроведенного/незаписанного документа   сложить с другой табличной частью (другого документа). Ладно уже,  сделаю без запроса, поэлементно. Не парьтесь.
Вопрос у меня больше даже чтобы понять логику системы: почему если в запрос я передаю Таблицу с выгруженными в нее данными из Объекта, 1С все равно считает ее Объектом? Сообщение об ошибке же "При выборе данных из объекта в запросе не могут присутствовать соединения и объединения " - где в запросе я выбираю данные из объекта? вот это я не пойму

Дмитрий@

Просто надо сначала выбрать таблицу во временную таблицу, а потом ее объединять.
Добавлено: 28 апр 2015, 11:57



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

Теги:

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

Рейтинг@Mail.ru

Поиск