1. j.r.r 23 05.12.18 11:37 Сейчас в теме

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

Добрейшего времени суток! Как перепровести документ?

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


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

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

С принципом:

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

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

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

Процедура Удалить()
	Для каждого Строка Из Объект.Список Цикл
	ПолучитьДокумент = Строка.Ссылка;
	Объект.ДокументСсылка = ПолучитьДок;
	Д = Объект.ДокументСсылка.ПолучитьОбъект();
	ПолучитьДокТовары = Д.Товары;
	
Для каждого	СтрокаНоменклатура Из ПолучитьДокТовары Цикл	
	Если Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура).УникальныйИдентификатор() = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура).УникальныйИдентификатор() Тогда
		
ПолучитьДокТовары.Удалить(СтрокаНоменклатура);		
Д.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
	КонецЕсли;	
КонецЦикла;
	
	КонецЦикла;	
КонецПроцедуры
Показать
16. lefthander 05.12.18 15:23 Сейчас в теме
(9)Я бы не удалял строки номенклатуры на прямую. Сделал бы ТЗ с номерами строк и те строки которые надо удалить занес бы в тз а затем перезаполнил исходную таблицу в документе без тех строк что будут удалены.
Сейчас Вы в табличной части обходите по циклу строки, но после первого удаления состав ТЧ уже другой, а цикл об этом ничего не знает.
18. j.r.r 23 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 23 05.12.18 13:32 Сейчас в теме
(6) При удалении записи из документа, она остаётся висеть в регистре. Я думаю тут Обновить не поможет
7. herfis 270 05.12.18 13:12 Сейчас в теме
(1) Значит, интерактивное проведение чем-то отличается от стандартного. Смотри в модуле формы обработчики кнопки проведения (если есть) и обработчики событий записи. Какая-то хитрость там должна присутствовать.
13. j.r.r 23 05.12.18 13:33 Сейчас в теме
(7) Должна, пробовал по разному, но запись в регистре все равно висит, до тех пор, пока ручками не нажмёшь "Провести"
3. user834357 9 05.12.18 12:34 Сейчас в теме
В какой таблице? Может стоит таблицу обновить?)
Данным методом всё должно проводиться
8. EVKash 05.12.18 13:15 Сейчас в теме
нет никаких хитростей. если правильно понял, то дело в оповещении.
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_КакойТоДокумент", ПараметрыЗаписи, Объект.Ссылка);
10. j.r.r 23 05.12.18 13:23 Сейчас в теме
(8) Нет, не удаляется соответствующая запись в регистре
14. user705522_constantin_h 10 05.12.18 13:48 Сейчас в теме
(10)Поставьте в отладчике остановку после нажатия кнопки Провести и посмотрите какая процедура и с какими параметрами запускается. Сделайте то же самое.
15. j.r.r 23 05.12.18 13:48 Сейчас в теме
Всё, всем спасибо за отклик! Повторно перебрал ссылки

С принципом:

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

И всё получилось. Почему так, не знаю. Но, главное получилось
17. lefthander 05.12.18 15:26 Сейчас в теме
(15)Поделитесь с сообществом - как вам это удалось???
19. j.r.r 23 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 23 05.12.18 17:39 Сейчас в теме
(23) Нет не одно!

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

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

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

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

Вакансии

Разработчик 1С
Москва
зарплата от 100 000 руб. до 160 000 руб.
Полный день

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

Консультант-аналитик 1С
Санкт-Петербург
Полный день

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

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день