Отмена проведения самописная база 8.2

1. user916115 09.01.19 09:03 Сейчас в теме
Привет ребята! Всех с Новым годом, с новым рабочим годом, желаю всем успехов во всех ваших начинаниях в этом году:)

Я столкнулась с такой ситуацией, у нас есть база 8.2
При создании (при проведении) документа и заполнения ТЧ происходит создание строки в справочнике, нужно чтобы если отменяют проведение и в справочнике удалялась данная строка, делаю так:

Процедура ОбработкаУдаленияПроведения(Отказ)
	Для каждого стр Из ТЧПоступление Цикл
		Если стр.ТипТехники = Перечисления.ТипТехники.Компьютер Тогда
			Спр=Справочники.КарточкаКомпьютера.Выбрать();
			Если не ЗначениеЗаполнено(стр.СерийныйНомер) и стр.СерийныйНомер =спр.Код тогда
				СпрОб = Спр.ПолучитьОбъект();
				СпрОб.Удалить();
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
Показать
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. Boneman 298 09.01.19 09:22 Сейчас в теме
(1) так тебе прямо карточку компьютера физически удалить нужно ?
Так ты ищи нужную карточку по серийному номеру.
вместо
Спр=Справочники.КарточкаКомпьютера.Выбрать();

тебе надо
Спр =Справочники.КарточкаКомпьютера.НайтиПоКоду(Стр.СерийныйНомер); 

найдется то удаляй
+
2. kumi2012 103 09.01.19 09:13 Сейчас в теме
В чем вопрос? Код очень не оптимальный.
+ Непонятно:
Спр=Справочники.КарточкаКомпьютера.Выбрать();
            Если не ЗначениеЗаполнено(стр.СерийныйНомер) и стр.СерийныйНомер =спр.Код тогда
                СпрОб = Спр.ПолучитьОбъект();
                СпрОб.Удалить();
            КонецЕсли;

Открывается выборка по справочнику и стоит условие на одну неспозиционированную запись.
+
3. user916115 09.01.19 09:16 Сейчас в теме
(2) ну имелось ввиду, что если значение серийный номер в тч не заполнено и серийный номер равен серийнику в справочнике при отмене проведения удаляется строка вся,воть...
+
4. kumi2012 103 09.01.19 09:20 Сейчас в теме
Одновременно два условия не логичны - не заполнен серийный номер и этот же не заполненный серийный номер равен серийному номеру в справочнике.
alex-l19041; +1
6. user916115 09.01.19 09:23 Сейчас в теме
(4)так, тогда мне нужно сначала наверное написать
Если Не ЗначениеЗаполнено(стр.СерийныйНомер) тогда
Если стр.СерийныйНомер =спр.Код тогда 

Так?
+
7. starjevschik 09.01.19 09:24 Сейчас в теме
Вообще-то можно и запросец написать, но, похоже, это пока рано.

Тогда как-то так
Процедура ОбработкаУдаленияПроведения(Отказ)
    Для каждого стр Из ТЧПоступление Цикл
        Если стр.ТипТехники = Перечисления.ТипТехники.Компьютер Тогда
            Спр=Справочники.КарточкаКомпьютера.Выбрать();
           НайденоВСправочнике = Справочники.КарточкаКомпьютера.НайтиПо(не знаю по чему найти, автору виднее)
Если НайденоВСправочнике <> Неопределено Тогда
            Если не ЗначениеЗаполнено(стр.СерийныйНомер) и стр.СерийныйНомер =спр.Код тогда
                СпрОб = НайденоВСправочнике.ПолучитьОбъект();
                СпрОб.Удалить();
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
Показать
+
8. kumi2012 103 09.01.19 09:26 Сейчас в теме
Покажите процедуру, где создаются элементы справочника при проведении.
alex-l19041; +1
9. meriferi 09.01.19 11:11 Сейчас в теме
(8)Как правило, в модуле объекта
+
10. killitch 30 09.01.19 11:12 Сейчас в теме
Текст процедуры ОбработкаПроведения из модуля объекта
+
11. theifx 09.01.19 14:03 Сейчас в теме
А почему бы не воспользоватся регистром и забивать ваши строки при проведении в него? Уйдете от кучи вопросов. Не понятен смысл работать тут через справочник.
+
12. Sangre1999 62 09.01.19 19:08 Сейчас в теме
Лучше помечать на удаление и прятать специальную папку, которую сделать можно невидимой при помощи RLS. А то найдутся грамотеи, которые распроведут случайно, а карточка кем-то дозаполнена уже.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот