просьба посмотреть свежим взглядом, потому что у меня сейчас чердак поедет.
Есть код запроса (только начало) выборки данных таблицы и помещения их во временную.
Вот вроде как все условия соблюдены, а данные не попадают.
Запрос который меня интересует
// ВтТаблицаСерииТоваров
ВЫБРАТЬ
ТаблицаТовары.Номенклатура,
ТаблицаТовары.Характеристика,
ТаблицаТовары.Помещение,
ТаблицаТовары.Количество,
ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
ТаблицаТовары.Серия КАК Серия
ПОМЕСТИТЬ ВтТаблицаСерииТоваров
ИЗ
Документ.ОтчетОРозничныхПродажах.Товары КАК ТаблицаТовары
ГДЕ
ТаблицаТовары.Номенклатура.ТипНоменклатуры В
(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
И ТаблицаТовары.Ссылка = &Ссылка
И ТаблицаТовары.Количество <> 0
И (НЕ ТаблицаТовары.СтатусУказанияСерий В (4, 6, 8, 10))
Показать
Условия по Кол-во, типу номенклатуры и статусу серии соблюдены. Не понимаю, правда, условие Ссылка (ведь даже реквизита нет в тч такого), но в итоге получаю следующее:
0 СтрокаТаблицыЗначений СтрокаТаблицыЗначений 9 (количество)
1 строка в ТЗ.
9 да, согласен, 9 товаров в таблице. Где остальные данные и что вообще происходит. Изменений в код не вносил.
(29)все условия соблюдены. и в ВТ
сейчас скриншоты сделаю.
Вот есть функция по выгрузке результатов запроса
Функция ВыгрузитьРезультатыЗапроса(Запрос, ТекстыЗапроса, ОбходРезультата = Неопределено, ДобавитьРазделитель = Ложь) Экспорт
Таблицы = Новый Структура;
// Инициализация варианта обхода результата запроса.
Если ОбходРезультата = Неопределено Тогда
ОбходРезультата = ОбходРезультатаЗапроса.Прямой;
КонецЕсли;
// Формирование текст запроса.
Запрос.Текст = "";
Для Каждого ТекстЗапроса из ТекстыЗапроса Цикл
Если ЗначениеЗаполнено(ТекстЗапроса.Представление) Тогда
Запрос.Текст = Запрос.Текст
+ ?(Запрос.Текст <> "", Символы.ПС, "")
+ "// " + ТекстЗапроса.Представление + Символы.ПС;
КонецЕсли;
Запрос.Текст = Запрос.Текст + ТекстЗапроса.Значение;
Если ДобавитьРазделитель Тогда
Запрос.Текст = Запрос.Текст + "
|;
|
|////////////////////////////////////////////////////////////////////////////////
|"
КонецЕсли;
КонецЦикла;
// Выполнение запроса.
Результат = Запрос.ВыполнитьПакет();
// Помещение результатов запроса в таблицы
Для Каждого ТекстЗапроса из ТекстыЗапроса Цикл
ИмяТаблицы = ТекстЗапроса.Представление;
Если Не ПустаяСтрока(ИмяТаблицы) Тогда
Индекс = ТекстыЗапроса.Индекс(ТекстЗапроса);
Таблицы.Вставить(ИмяТаблицы, Результат[Индекс].Выгрузить(ОбходРезультата));
КонецЕсли;
КонецЦикла;
Возврат Таблицы;
////////////////////////////////////////////////////////////////////////////////
КонецФункции
Показать
в которой я смотрю в самом конце Результат[Индекс].Выгрузить(ОбходРезультата) нужные таблицы, попало ли что-либо туда. Вот таблица Товары на складах пустые. А тянет он в Товары на складах из ВТ.
(32)Каким еще образом вам объяснить, что если вы сформировали ВТ, то существует ровно 4 способа увидеть содержимое ВТ:
1. Написать еще один пакет запроса вида "Выбрать * ИЗ ВТ" и выполнить его вместе с запросом, формирующим ВТ
2. Использовать конструкцию вида ВыполнитьПакетСПромежуточнымиДанными, вместо Выполнить/ВыполнитьПакет
3. в случае использования менеджера временных таблиц, написать запрос вида "Выбрать * ИЗ ВТ" после выполнения запроса, формирующего ВТ, выполнить и выгрузить результат в ТЗ
4. в случае использования менеджера временных таблиц, обратиться к его содержимому по имени таблицы
Вы упорно не слушаете советов и делаете по-своему, не выполняя НИ ОДНО из приведенных выше условий, при этом искренне удивляетесь поведению системы.
Что вы еще ждете от обитателей форума?
(31) на скрине здесь
Получаете количество строк в виртуальной таблице. То есть данные есть, но находятся в виртуальной таблице. Какой? которая в тексте запроса находится крайней со строкой "Поместить"
Как пишут выше/ниже/в рамках этого вопроса, если вы хотите увидеть содержимое виртуальной таблицы (та что в запросе "ВТ...") необходимо пользоваться инструкцией, которой на этом сайте и в сети полно.
Но
В чем вопрос? В вашем вопросе ни слова о том, зачем вы хотите увидеть эти данные? вполне возможно, что вам в этот запрос лезть не надо, а все решаете в пользовательском интерфейсе
(11) а давайте обратимся к документации вендора?
К какому вендору в данном случае обращаться?
Это запрос к БД. Если рассматривать вендором разработчика sql-сервера, то там вообще про реквизит ничего не знают. Там field :)
Если к 1С, то смотрим документацию:
https://its.1c.ru/db/metod8dev/content/1798/hdoc
Табличная часть
Каждой табличной части соответствует таблица базы данных (<pref><n>_VT<k>), содержащая следующие поля:
<pref><n>_ID<suff> - ссылка на объект базы данных, которому принадлежит запись табличной части; _KeyField - ключ записи табличной части в рамках одного объекта базы данных
_LineNo<n> - номер записи табличной части
_Fld<n><suff> - реквизит табличной части (для каждого реквизита, определенного в конфигурации). Для реквизита составного типа создается несколько полей с одинаковыми префиксом и номером и различными суффиксами.
_Fld<n> - общие реквизиты
Только не надо говорить, что для выделенной строки нет указания, что это реквизит.
Смотрим дальше:
Справочники
Для каждого справочника создается таблица (_Reference<n>) со следующими полями:
_ID<suff> - идентификатор элемента справочника;
_Version - версия записи (изменяется после каждого обновления данной записи);
_Marked - признак того, что элемент справочника помечен на удаление;
_PredefinedID - ccылка на предопределенное в метаданных значение;
_ParentID<suff> - идентификатор элемента справочника или группы, которому подчинен данный элемент справочника. Поле определяется только для иерархических справочников;
_OwnerID<suff> - идентификатор владельца данного элемента справочника. Поле определено, если в конфигурации для справочника указаны владельцы;
_Folder - признак того, что запись представляет группу. Поле определено, если справочник иерархический и в иерархию входят группы;
_Code - код элемента справочника;
_Description - наименование элемента справочника; _Fld<n><suff> - реквизит справочника (для каждого реквизита, определенного в конфигурации).
_Fld<n> - общие реквизиты
Показать
Для выделенной части так же не указано, что это реквизиты. Однако, открываем в конфигураторе любой справочник и смотрим у него "Стандартные реквизиты". И таки вендор их признает как реквизиты.
(1)Вы выполнили запрос в котором только помещение во временную таблицу и удивляетесь почему там (в результате запроса) только данные помещения во временную таблицу? Я правильно понял?
// // ВтТаблицаСерииТоваров
//ВЫБРАТЬ
// ТаблицаТовары.Номенклатура,
// ТаблицаТовары.Характеристика,
// ТаблицаТовары.Помещение,
// ТаблицаТовары.Количество,
// ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
// ТаблицаТовары.Серия КАК Серия
//ПОМЕСТИТЬ ВтТаблицаСерииТоваров
//ИЗ
// Документ.ОтчетОРозничныхПродажах.Товары КАК ТаблицаТовары
//ГДЕ
// ТаблицаТовары.Номенклатура.ТипНоменклатуры В
// (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
// И ТаблицаТовары.Ссылка = &Ссылка
// И ТаблицаТовары.Количество <> 0
// И (НЕ ТаблицаТовары.СтатусУказанияСерий В (4, 6, 8, 10))
//ОБЪЕДИНИТЬ ВСЕ
//ВЫБРАТЬ
// ТаблицаСерии.Номенклатура,
// ТаблицаСерии.Характеристика,
// ТаблицаСерии.Помещение,
// ВЫБОР КОГДА ТаблицаСерии.ВидВозвратаЧерезКассу = ЗНАЧЕНИЕ(Перечисление.ВидыВозвратовЧерезКассу.ВозвратНеЭтойСмены)
// ТОГДА -ТаблицаСерии.Количество
// ИНАЧЕ ТаблицаСерии.Количество
// КОНЕЦ,
// МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий),
// ТаблицаСерии.Серия
//ИЗ
// Документ.ОтчетОРозничныхПродажах.Серии КАК ТаблицаСерии
// ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах.Товары КАК ТаблицаТовары
// ПО ТаблицаСерии.Ссылка = ТаблицаТовары.Ссылка
// И ТаблицаСерии.Номенклатура = ТаблицаТовары.Номенклатура
// И ТаблицаСерии.Характеристика = ТаблицаТовары.Характеристика
// И ТаблицаСерии.Помещение = ТаблицаТовары.Помещение
//ГДЕ
// ТаблицаТовары.Номенклатура.ТипНоменклатуры В
// (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
// И ТаблицаСерии.Ссылка = &Ссылка
// И ТаблицаТовары.Ссылка = &Ссылка
// И ТаблицаСерии.Количество <> 0
//СГРУППИРОВАТЬ ПО
// ТаблицаСерии.Номенклатура,
// ТаблицаСерии.Характеристика,
// ТаблицаСерии.Помещение,
// ТаблицаСерии.ВидВозвратаЧерезКассу,
// ТаблицаСерии.Серия,
// ТаблицаСерии.Количество,
// ТаблицаСерии.НомерСтроки
//ИМЕЮЩИЕ
// МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) В (4, 6, 8, 10)
//;
Показать
Запрос часть 2 Товар на складах
//// ТоварыНаСкладах
//ВЫБРАТЬ
// ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
// &Период КАК Период,
// &Склад КАК Склад,
// ТаблицаТовары.Помещение КАК Помещение,
// ТаблицаТовары.Номенклатура КАК Номенклатура,
// ТаблицаТовары.Характеристика КАК Характеристика,
// ТаблицаТовары.Серия КАК Серия,
// ТаблицаТовары.Количество КАК ВНаличии
//ИЗ
// ВтТаблицаСерииТоваров КАК ТаблицаТовары
//ГДЕ
// ТаблицаТовары.Количество > 0
// И &ПолноеПроведение
//
//ОБЪЕДИНИТЬ ВСЕ
//
//ВЫБРАТЬ
// ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
// &Период КАК Период,
// &Склад КАК Склад,
// ТаблицаТовары.Помещение КАК Помещение,
// ТаблицаТовары.Номенклатура КАК Номенклатура,
// ТаблицаТовары.Характеристика КАК Характеристика,
// ТаблицаТовары.Серия КАК Серия,
// -ТаблицаТовары.Количество КАК ВНаличии
//ИЗ
// ВтТаблицаСерииТоваров КАК ТаблицаТовары
//ГДЕ
// ТаблицаТовары.Количество < 0
// И &ПолноеПроведение
Показать
Всё это часть одного запроса.
Я после выполнения всего запроса проверяю ВТ на наличие данных, но там пустота. Изначально грешил на СтатусУказанияСерий (в строках товаров был 0, везде проставил 2). Но не помогло, в РН Товары на складах так и не попадает.
Я после выполнения всего запроса проверяю ВТ на наличие данных
Для того, чтобы проверить ВТ на наличие данных, надо написать что-то типа "ВЫБРАТЬ * ИЗ ВТ" (https://infostart.ru/1c/articles/822287/), ну, или как уже грамотные люди сказали чуть выше, - можно получить данные из менеджера временных таблиц, которого у вашего запроса нет (((
(26)ну а что за строка ТЗ, которую вы смотрите? может в этой строке кроме 9 есть еще и таблица с 9 строками? Или там просто тупо одна колонка "количество" и в ней "9"?
(38) смотрю здесь Таблицы.Вставить(ИмяТаблицы, Результат[Индекс].Выгрузить(ОбходРезультата));
после заполнение ВТ ВтТаблицаСерииТоваров в самом начале.есть предположение, что не работает из за пустоты таблицы Серий в принципе. Документ ООРП создается программно и там не заполняется таблица.