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

1С 8.3. Ошибка в запросе по табл.части обработки и регистру остатков.

Автор ToryFree, 22 авг 2020, 16:11

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

ToryFree

Я новичок в 8.3.

Нужно выбрать товары из табличной части обработки Товары и выбрать те из них, по которым остатки в регистре ОстаткиТоваров на нужном складе меньше требуемого количества. Пытаюсь сделать запрос с использованием временной таблицы, но знаний не хватает. Пока написала что-то, но есть ошибки. Заранее благодарна за подсказки!)
   
   
    НашМагазин = Справочники.Магазины.НайтиПоНаименованию("Магазин");
    ТекСклад = НашМагазин.СкладПродажи;

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

Запрос.УстановитьПараметр("ВнешняяТаблНоменклатуры", ТЗ);
Запрос.УстановитьПараметр("ТекСклад", ТекСклад);

РезультатЗапроса = Запрос.Выполнить();

        Отказ = ЛОЖЬ;

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл

Стр =ТЗ.Найти(Выборка.Номенклатура);
Если Выборка.КоличествоОстаток < Стр.Количество Тогда
Сообщить("Номенклатура " + СокрЛП(Стр.НаименованиеПолное) + "|Превышен остаток на складе магазина на " +
Строка(Стр.Количество - Выборка.КоличествоОстаток) + " " + Строка(Выборка.ЕдиницаИзмерения));
Отказ = Истина;
КонецЕсли;

КонецЦикла;

Если Отказ Тогда
Возврат;
КонецЕсли;


Брала информацию по кускам из внешних источников). Естественно, запрос не узнает ТаблНоменклатуры)... Как правильно подключить внешнюю таблицу?)

antoneus

Внешняя таблица тут и не нужна.

Запрос.Текст = "
    |ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    |    ТоварыНаСкладахОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    |    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки(,, Склад = &ТекСклад и Номенклатура В (&Номенклатура)) КАК ТоварыНаСкладахОстатки";
    Запрос.УстановитьПараметр("Номенклатура", ТЗ.Выгрузить().ВыгрузитьКолонку("Номенклатура"));

Добавлено: 24 авг 2020, 09:49


Упс, если ТЗ - табличная часть, можно сразу

Запрос.УстановитьПараметр("Номенклатура", ТЗ.ВыгрузитьКолонку("Номенклатура"));

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

Рейтинг@Mail.ru

Поиск