день добрый. нужно удалить помеченную номенклатуру , а перед этим и записи в РС (штрихкод, характеристика и т.д все связи которые только есть у этой номенклатуры)
есть такой код на отображение помеченных товаров и удаление. но дело в том что не понимаю почему не работает. нажимаю на кнопку "удалить" ничего не происходит
&НаКлиенте
Процедура УдалитьНоменклатуру(Команда)
УдалитьНоменклатуруНаСервере();
КонецПроцедуры
&НаСервере
процедура УдалитьНоменклатуруНаСервере()
Объект.Товары.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СправочникНоменклатура.Ссылка КАК Номенклатура,
| СправочникНоменклатура.Наименование КАК Наименование,
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
| ШтрихкодыНоменклатуры.Характеристика КАК Характеристика,
| ШтрихкодыНоменклатуры.Характеристика.Наименование КАК ХарактеристикаНаименование,
| СправочникНоменклатура.Весовой КАК Весовой,
| ШтрихкодыНоменклатуры.Партия КАК Партия,
| ШтрихкодыНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения
|ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО СправочникНоменклатура.Ссылка = ШтрихкодыНоменклатуры.Номенклатура
|ГДЕ
| СправочникНоменклатура.ПометкаУдаления = ИСТИНА";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Строка = Объект.Товары.Добавить();
Строка.Номенклатура = Выборка.Наименование;
Строка.Штрихкод = Выборка.Штрихкод;
Строка.Характеристика = Выборка.ХарактеристикаНаименование;
Строка.Весовой = Выборка.Весовой;
Строка.Партия = Выборка.Партия;
Строка.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Удалить(Команда)
УдалитьНаСервере();
//для каждого строка из объект.товары цикл
// УдалитьНаСервере();
// отбор = новый структура;
// отбор.Вставить("Номенклатура", истина);
// отбор.Вставить("Характеристика", истина);
// отбор.Вставить("Штрихкод", истина);
// отбор.Вставить("Партия", истина);
// отбор.Вставить("ЕдиницаИзмерения", истина);
// СтрокиУдалить = Объект.Товары.НайтиСтроки(Отбор);
// Пока СтрокиУдалить.Количество() > 0 цикл
// объект.товары.Удалить(СтрокиУдалить[0]);
// СтрокиУдалить = объект.товары.НайтиСтроки(Отбор);
// КонецЦикла;
//конеццикла;
КонецПроцедуры
&НаСервере
Процедура УдалитьНаСервере()
//Товар = Объект.Товары;
//выборка = справочники.НоменклатураПрисоединенныеФайлы.выбрать();
//пока выборка.Следующий() цикл
// выборка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина);
//конеццикла;
для каждого строка из Объект.Товары цикл
ЗаписьРС = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
ЗаписьРС.Номенклатура = Строка.Номенклатура;
ЗаписьРС.Штрихкод = Строка.Штрихкод;
ЗаписьРС.Характеристика = Строка.Характеристика;
ЗаписьРС.Партия = Строка.Партия;
ЗаписьРС.ЕдиницаИзмерения = Строка.ЕдиницаИзмерения;
ЗаписьРС.Прочитать();
ЗаписьРС.Удалить();
конеццикла;
Номенклатура = Справочники.Номенклатура.Выбрать();
Если Номенклатура.ПометкаУдаления = Истина Тогда
НоменклатураОбъект = Номенклатура.ПолучитьОбъект();
НоменклатураОбъект.Удалить();
КонецЕсли;
КонецПроцедуры
Показатьесть такой код на отображение помеченных товаров и удаление. но дело в том что не понимаю почему не работает. нажимаю на кнопку "удалить" ничего не происходит
По теме из базы знаний
- 1С:Бухгалтерия государственного учреждения 8
- Интеграция между Atlassian Jira и 1С:Предприятие 8.3 используя Jira REST API (выборка, создание и изменение запросов, чтение, создание и удаление записей о работах, чтение комментариев и другие возможности)
- Удаление записей регистра сведений "Начальные остатки отпусков" с отбором
- Версионирование объектов VS История данных
- Программное открытие формы истории данных для регистра сведений
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Я так понимаю, у тебя какая-то обработка есть для удаления номенклатуры, помеченной на удаления, а в этой обработке есть табличная часть? Тогда раздели нормально процедуры для заполнения табличной части и для удаления номенклатуры:
&НаСервере
Процедура ЗаполнитьТаблицуПомеченнойНоменклатурой()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СправочникНоменклатура.Ссылка КАК Номенклатура,
| СправочникНоменклатура.Наименование КАК Наименование,
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
| ШтрихкодыНоменклатуры.Характеристика.Наименование КАК Характеристика,
| СправочникНоменклатура.Весовой КАК Весовой,
| ШтрихкодыНоменклатуры.Партия КАК Партия,
| ШтрихкодыНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения
|ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО СправочникНоменклатура.Ссылка = ШтрихкодыНоменклатуры.Номенклатура
|ГДЕ
| СправочникНоменклатура.ПометкаУдаления";
Объект.Товары.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
&НаСервере
Процедура УдалитьНоменклатуруИШтрихкоды()
Для Каждого СтрокаНоменклатураКУдалению Из Объект.Товары Цикл
НоменклатураКУдалению = СтрокаНоменклатураКУдалению.Номенклатура;
// Удаляем все записи из регистра с этой номенклатурой, не обращая внимания на другие измерения
НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Номенклатура.Установить(НоменклатураКУдалению);
НаборЗаписей.Записать();
// Удаляем саму номенклатуру из справочника
НоменклатураКУдалению.ПолучитьОбъект().Удалить();
КонецЦикла;
Объект.Товары.Очистить(); // Очищаем таблицу, т.к там останутся ломаные ссылки
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот