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

Удаление фото у проданной номенклатуры

Автор sljusarenko, 24 июл 2015, 07:19

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

sljusarenko

Работаю в фирме, продающей контрактные автозапчасти. В связи с тем, что весь товар б/у, возникла необходимость периодически удалять фотографии проданной номенклатуры из хранилища дополнительной информации, но не у всей, а проданной более 2-х недель назад (в это время может быть возврат).

Написал обработку для этого, вроде нормально все, кроме одного. А именно если мы недавно (не ранее 2-х недель) завели новую номенклатуру и в этот промежуток времени ее продали, то фото такого товара удаляются.
Бьюсь несколько дней, ничего путного на ум не приходит.

Может кто сталкивался с чем то похожим, подскажите как это можно реализовать?
Код моей обработки ниже


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

|УПОРЯДОЧИТЬ ПО
| Ссылка";

Запрос.УстановитьПараметр("ДатаС", ТекущаяДата());
Запрос.УстановитьПараметр("ДатаР", ТекущаяДата() -  14 * 60 * 60 * 24);

    Выборка=Запрос.Выполнить().Выбрать();
Количество = Выборка.Количество();
    Сообщить("Будут помечены на удаление все фотографии у " + Количество + " товаров.");
Пока Выборка.Следующий() Цикл
i = i + 1;
Состояние("Обработано " + i + " из " + Количество);
текТовар = Выборка.Ссылка.ПолучитьОбъект();
текТовар.ОсновноеИзображение = Справочники.ХранилищеДополнительнойИнформации.ПустаяСсылка();
текТовар.Записать();
//Сообщить(текТовар.ОсновноеИзображение);
ТабКартинок= ПолучитьТабКартинок(Выборка.Ссылка);
Для Каждого Стр Из ТабКартинок Цикл
j = j+1;
Об = Стр.Ссылка.ПолучитьОбъект();
    Об.УстановитьПометкуУдаления(Истина);
//Об.Удалить();
    КонецЦикла;
КонецЦикла;
    Предупреждение("Удаление завершено. Помечено фото на удаление: " + j);

КонецПроцедуры


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

     
     Запрос.УстановитьПараметр("Объект",вхНом);
     Запрос.УстановитьПараметр("ВидДанных",Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение);
     
     ТЗ=Запрос.Выполнить().Выгрузить();
     Если Запрос.Выполнить().Пустой() Тогда
         Возврат Новый ТаблицаЗначений;
     Иначе
         Возврат ТЗ;
         
    КонецЕсли;     

КонецФункции;


Eugeneer

В типовых уже есть готовые процедуры удаления.
SubSystems.Ru - Автоматическая загрузка прайсов в 1С из Excel

sljusarenko

Цитата: Eugeneer от 25 июл 2015, 13:07
В типовых уже есть готовые процедуры удаления.

Забыл сказать,1С 8.3 конфигурация УТ 10.3 порядком измененная.
Я не понял, где в типовых? Напомню, что надо удалять фото не у всей проданной номенклатуры, а только если она продана 2 недели назад или более.

Теги:

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

Рейтинг@Mail.ru

Поиск