Как перепровести документ?

1. j.r.r 57 05.12.18 11:37 Сейчас в теме
Добрейшего времени суток! Как перепровести документ?

Пробовал так:
КакойтоДокумент.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);


Пробовал сначала отменять, потом опять проводить

Не помогает, пока не залезешь в него и не нажмёшь "провести", в таблице остаются висеть данные до изменения. ОбновитьИнтерфейс() не помогает.
+
По теме из базы знаний
Найденные решения
15. j.r.r 57 05.12.18 13:48 Сейчас в теме
Всё, всем спасибо за отклик! Повторно перебрал ссылки

С принципом:

КакойтоДокумент.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

И всё получилось. Почему так, не знаю. Но, главное получилось
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user705522_constantin_h 35 05.12.18 12:02 Сейчас в теме
(1)У меня всё работает. Нужно смотреть процедуру ОбработкаПроведения. Либо команда Провести с каким-то параметром выполняется.
+
11. j.r.r 57 05.12.18 13:24 Сейчас в теме
(2) И у меня, но запись в регистре остаётся висеть
+
4. xelas12345 2 05.12.18 12:46 Сейчас в теме
(1) Полный код процедуры покажите.
+
9. j.r.r 57 05.12.18 13:22 Сейчас в теме
(4) Меняется документ, но запись остаётся висеть в реестре

Код процедуры:

Процедура Удалить()
	Для каждого Строка Из Объект.Список Цикл
	ПолучитьДокумент = Строка.Ссылка;
	Объект.ДокументСсылка = ПолучитьДок;
	Д = Объект.ДокументСсылка.ПолучитьОбъект();
	ПолучитьДокТовары = Д.Товары;
	
Для каждого	СтрокаНоменклатура Из ПолучитьДокТовары Цикл	
	Если Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура).УникальныйИдентификатор() = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура).УникальныйИдентификатор() Тогда
		
ПолучитьДокТовары.Удалить(СтрокаНоменклатура);		
Д.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
	КонецЕсли;	
КонецЦикла;
	
	КонецЦикла;	
КонецПроцедуры
Показать
+
16. lefthander 05.12.18 15:23 Сейчас в теме
(9)Я бы не удалял строки номенклатуры на прямую. Сделал бы ТЗ с номерами строк и те строки которые надо удалить занес бы в тз а затем перезаполнил исходную таблицу в документе без тех строк что будут удалены.
Сейчас Вы в табличной части обходите по циклу строки, но после первого удаления состав ТЧ уже другой, а цикл об этом ничего не знает.
+
18. j.r.r 57 05.12.18 15:31 Сейчас в теме
(16) Так я сначала то, что нужно отправляю в таблицу, а потом уже согласно этой выборке удаляю. Но удаление это временно, на самом деле там другие операции. Я просто ещё не доделал.

А если создать таблицу под выгрузку содержимого документа, а потом её обрабатывать, то это не увеличит скорость обработки. А поскольку по плану код должен лопатить большое количество регистров, то я считаю, не стоит
+
21. lefthander 05.12.18 17:13 Сейчас в теме
(18)ПолучитьДокТовары - это у Вас ТЧ документа и вы непосредственно в ней удаляете строки по условию. Так вот как только удалите одну строку, цикл не получит нужного количества строк.
И вы тут же в цикле сохраняете док с удаленной строкой, и продолжаете цикл, но документ у Вас уже другой.
Логику работы вы сами разрабатываете, я вижу код, который с моей точки зрения не логичен, и показываю вам где не логичность. А как будет у вас работать это вам виднее.
+
5. lefthander 05.12.18 12:56 Сейчас в теме
(1)Кто создавал и писал модуль документа?
+
6. user623969_dusa 05.12.18 13:05 Сейчас в теме
(1) кроме обновить интерфейс есть еще отдельные команды для обновления динамического списка. Если после программного проведения, команда списка Еще - Обновить показывает документ с галочкой типа проведен - ищите нужную команду обновления списка.
+
12. j.r.r 57 05.12.18 13:32 Сейчас в теме
(6) При удалении записи из документа, она остаётся висеть в регистре. Я думаю тут Обновить не поможет
+
7. herfis 498 05.12.18 13:12 Сейчас в теме
(1) Значит, интерактивное проведение чем-то отличается от стандартного. Смотри в модуле формы обработчики кнопки проведения (если есть) и обработчики событий записи. Какая-то хитрость там должна присутствовать.
+
13. j.r.r 57 05.12.18 13:33 Сейчас в теме
(7) Должна, пробовал по разному, но запись в регистре все равно висит, до тех пор, пока ручками не нажмёшь "Провести"
+
3. Alexei_Siva 182 05.12.18 12:34 Сейчас в теме
В какой таблице? Может стоит таблицу обновить?)
Данным методом всё должно проводиться
+
8. EVKash 14 05.12.18 13:15 Сейчас в теме
нет никаких хитростей. если правильно понял, то дело в оповещении.
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_КакойТоДокумент", ПараметрыЗаписи, Объект.Ссылка);
+
10. j.r.r 57 05.12.18 13:23 Сейчас в теме
(8) Нет, не удаляется соответствующая запись в регистре
+
14. user705522_constantin_h 35 05.12.18 13:48 Сейчас в теме
(10)Поставьте в отладчике остановку после нажатия кнопки Провести и посмотрите какая процедура и с какими параметрами запускается. Сделайте то же самое.
+
15. j.r.r 57 05.12.18 13:48 Сейчас в теме
Всё, всем спасибо за отклик! Повторно перебрал ссылки

С принципом:

КакойтоДокумент.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

И всё получилось. Почему так, не знаю. Но, главное получилось
+
17. lefthander 05.12.18 15:26 Сейчас в теме
(15)Поделитесь с сообществом - как вам это удалось???
+
19. j.r.r 57 05.12.18 15:40 Сейчас в теме
(17) Так я же написал:

Для каждого Строка из Объект.Список

Д.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

КонецЦикла;
+
20. user774630 05.12.18 16:54 Сейчас в теме
Если Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура).УникальныйИдентификатор() = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура).УникальныйИдентификатор() Тогда

Это вас кто такому научил?
+
22. lefthander 05.12.18 17:16 Сейчас в теме
(20)Это могло бы срабатывать всегда если бы в справочнике не было одинаковых наименований :)
+
23. user774630 05.12.18 17:23 Сейчас в теме
(22) вы понимаете, что
Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура).УникальныйИдентификатор() = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура).УникальныйИдентификатор()

и
Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура) = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура)

тождественны? если вы неправильно нашли ссылку, что даст получение ГУИДа от этой ссылки?
+
24. j.r.r 57 05.12.18 17:39 Сейчас в теме
(23) Нет не одно!

СтрокаНоменклатура.Номенклатура - строка из таблицы, куда заранее попадает список ссылок

Строка.Номенклатура - строка товаров из выбранного документа

Чем они похожи?
+
27. lefthander 05.12.18 17:49 Сейчас в теме
(23)Первое, я бы так никогда не написал, второе у НайтиПоНаименованию есть параметр Родитель, вот если Родитель разный а наименование одинаковое, то условие НИКОГДА не сработает.
Гуид позволил бы не проверять родителя. Поэтому если бы выполнялся контроль на наименование - запрет дублей, то условие бы работало.
+
29. j.r.r 57 05.12.18 18:02 Сейчас в теме
(27) Гуид не для поиска нужного)

А родитель и наименование может быть одинаковым. Лучше по коду
+
26. j.r.r 57 05.12.18 17:41 Сейчас в теме
(22) Да, я в таких случаях по коду ищу :)
+
25. j.r.r 57 05.12.18 17:41 Сейчас в теме
(20) Я ж у вас это не спрашивал! Вы не видели откуда это идёт и почему, но при этом пытаетесь меня поправлять?
+
28. пользователь 05.12.18 17:54
Сообщение было скрыто модератором.
...
Внимание! Тема сдана в архив

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