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

Неправильное имя внешнего источника в запросе

Автор ferrari314, 10 фев 2015, 10:47

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

ferrari314

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

Вот бага:
ЦитироватьОшибка при вызове метода контекста (Выполнить)
          РезультатЗапроса = Запрос.Выполнить();
по причине:
Неправильное имя внешнего источника "Объект.Ос"
<<?>>Объект.Ос ИЗ
в чем трабл? Объект.Ос - табличная часть документа. пробовал обращаться просто Ос - не канает.

has

В имени временной таблицы точки быть не должно

Запрос = Новый Запрос(
            "ВЫБРАТЬ
            |   ТЗ.ОсновноеСредство.Ссылка,
            |   ТЗ.ОсновноеСредство.Код
            |ПОМЕСТИТЬ
            |   ОбъектОс ИЗ
            |   &ТЗ КАК ТЗ;
            |ВЫБРАТЬ
            |   ОС.ОсновноеСредство.Ссылка,
            |   ОС.ОсновноеСредство.Код
            |   ИЗ
            |   ОбъектОс КАК ОС
            |   ИТОГИ ПО
            |   ОС.ОсновноеСредство.Код" );

ferrari314

Временная это ТЗ. А из объект.ос мы как-раз беремм данные

vitasw

:D:D:D
е-мое, лечить гланды через жопу.
Т.е. данные нужно достать из табличной части и поместить в ТЗ - я правильно понимаю?

has

Вот эта конструкция

ПОМЕСТИТЬ
|   ОбъектОс

создает временную таблицу. А вообще в чем суть задачи?

ferrari314

Суть в том чтобы в ТабличнойЧасти(объект.Ос) документа отсортировать ссылочные данные по полю код.
Сделать это методом сортировки не получится (тк данные ссылочные) приходится выгружать во временную таблицу(ТЗ), сортировать и помещать обратно.

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

    КонецЕсли;

Пишет - поле не найдено ТЗ.ОсновноеСредство.Ссылка

has

Зачем временная таблица тогда? Если уж так сильно хочется, то укажите в качестве параметра ссылку на документ и в запросе вытаскивайте данные какие надо и сортируйте их как надо.

Теги:

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

Рейтинг@Mail.ru

Поиск