1. user916115 09.01.19 09:03 Сейчас в теме

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

Привет ребята! Всех с Новым годом, с новым рабочим годом, желаю всем успехов во всех ваших начинаниях в этом году:)

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

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

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

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

Открывается выборка по справочнику и стоит условие на одну неспозиционированную запись.
3. user916115 09.01.19 09:16 Сейчас в теме
(2) ну имелось ввиду, что если значение серийный номер в тч не заполнено и серийный номер равен серийнику в справочнике при отмене проведения удаляется строка вся,воть...
4. kumi2012 2 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 2 09.01.19 09:26 Сейчас в теме
Покажите процедуру, где создаются элементы справочника при проведении.
alex-l19041; +1 Ответить
9. meriferi 09.01.19 11:11 Сейчас в теме
(8)Как правило, в модуле объекта
10. killitch 29 09.01.19 11:12 Сейчас в теме
Текст процедуры ОбработкаПроведения из модуля объекта
11. theifx 09.01.19 14:03 Сейчас в теме
А почему бы не воспользоватся регистром и забивать ваши строки при проведении в него? Уйдете от кучи вопросов. Не понятен смысл работать тут через справочник.
12. Sangre1999 12 09.01.19 19:08 Сейчас в теме
Лучше помечать на удаление и прятать специальную папку, которую сделать можно невидимой при помощи RLS. А то найдутся грамотеи, которые распроведут случайно, а карточка кем-то дозаполнена уже.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 120 000 руб.
Полный день

Аналитик 1С
Санкт-Петербург
зарплата от 80 000 руб.
Полный день

Программист 1С
Самара
зарплата от 50 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день