Доброго времени суток! Помогите разобраться с проблемой. Пишу обработку, которая должна выбрать товар по которому не было продаж за определенный период времени.
Ниже приведена часть кода, которая должна выбрать всю номенклатуру из справочника, после отобрать ту по которой были реализации и исключить ее из общего списка номенклатуры. Далее, в качестве проверки, выводится количество оставшейся номенклатуры, производится выборка реализаций в которых присутствуют эти позиции и они есть, хотя, если я все правильно понимаю, их быть не должно.
Ниже приведена часть кода, которая должна выбрать всю номенклатуру из справочника, после отобрать ту по которой были реализации и исключить ее из общего списка номенклатуры. Далее, в качестве проверки, выводится количество оставшейся номенклатуры, производится выборка реализаций в которых присутствуют эти позиции и они есть, хотя, если я все правильно понимаю, их быть не должно.
НоменклатураВся=Новый ТаблицаЗначений;
Запрос = новый запрос;
Запрос.Текст="ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Номенклатура.ПометкаУдаления = ЛОЖЬ
| И Номенклатура.Услуга = ЛОЖЬ";
НоменклатураВся = Запрос.Выполнить().Выгрузить();
Запрос = Новый Запрос;
запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугТовары.Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Номенклатура.Ссылка В(&НоменклатураВся)";
Запрос.УстановитьПараметр("НоменклатураВся",НоменклатураВся);
НоменклатураПервыйОтбор = новый ТаблицаЗначений;
НоменклатураПервыйОтбор = Запрос.Выполнить().Выгрузить();
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтчетОРозничныхПродажахТовары.Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
|ГДЕ
| ОтчетОРозничныхПродажахТовары.Номенклатура.Ссылка В(&НоменклатураПервыйОтбор)";
Запрос.УстановитьПараметр("НоменклатураПервыйОтбор",НоменклатураПервыйОтбор);
НоменклатураРезультат = новый ТаблицаЗначений;
НоменклатураРезультат = Запрос.Выполнить().Выгрузить();
массив = новый Массив;
массив = НоменклатураРезультат.ВыгрузитьКолонку("ссылка");
для Каждого стр из массив цикл
элемент=НоменклатураВся.Найти(стр);
НоменклатураВся.Удалить(Элемент);
КонецЦикла;
сообщить(НоменклатураВся.Количество());
///////проверка/////
запрос = новый запрос;
запрос.Текст="ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Товары.Номенклатура.Ссылка В(&НоменклатураВся)";
запрос.УстановитьПараметр("НоменклатураВся",НоменклатураВся);
рез = Запрос.Выполнить().Выбрать();
Сообщить(рез.Количество());
ПоказатьПо теме из базы знаний
- Загрузка данных из ОФД в 1С:Бухгалтерию 3.0, 1С:КА 2.4, 2.5, УНФ 1.6/3.0 о денежных поступлениях (чеках)
- Расчет премий/удержаний менеджерам за период для УТ 11
- Механизмы расчета резервов по товарам организаций
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
- Инвентаризация кодов маркировки системы "Честный знак", запрос, сравнение с остатками 1С, списание, ОСУ
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Очень неоптимальный алгоритм.
Зачем выгружать данные в таблицу значений, если все уже можно получить в запросе?
1. Формируете запрос по номенклатуре
2. Объединяете два других запроса (по ТЧ реализаций и отчетов о розн. продажах)
3. Через левое соединение объединяете эти запросы и накладываете условие (если null, значит нет номенклатуры в отчетах и реализациях).
Как-то так...
И параметры в запросы не забудьте поставить...
Зачем выгружать данные в таблицу значений, если все уже можно получить в запросе?
1. Формируете запрос по номенклатуре
ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Номенклатура.ПометкаУдаления = ЛОЖЬ
| И Номенклатура.Услуга = ЛОЖЬ";
2. Объединяете два других запроса (по ТЧ реализаций и отчетов о розн. продажах)
ВЫБРАТЬ
Т.Ссылка
ИЗ
(
ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугТовары.Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Номенклатура.Ссылка В(&НоменклатураВся)";
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтчетОРозничныхПродажахТовары.Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
) КАК Т
Сгруппировать....
Показать3. Через левое соединение объединяете эти запросы и накладываете условие (если null, значит нет номенклатуры в отчетах и реализациях).
Как-то так...
И параметры в запросы не забудьте поставить...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот