Добрейшего времени суток! Как перепровести документ?
Пробовал так:
Пробовал сначала отменять, потом опять проводить
Не помогает, пока не залезешь в него и не нажмёшь "провести", в таблице остаются висеть данные до изменения. ОбновитьИнтерфейс() не помогает.
Пробовал так:
КакойтоДокумент.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Пробовал сначала отменять, потом опять проводить
Не помогает, пока не залезешь в него и не нажмёшь "провести", в таблице остаются висеть данные до изменения. ОбновитьИнтерфейс() не помогает.
По теме из базы знаний
- Обработки "Заменить упаковку товара" и "Заполнение упаковок документов"
- Перепроведение документов в БП 2.0 по отбору Период + Организация + Контрагент
- Перенос данных из УТ 11.4 / УТ 11.5 / КА 2.4 / ERP 2.4 в КА 2.5 / ERP 2.5. Переносятся документы и справочная информация
- Колонка НДФЛ в журнале документа Ведомость
- Гарантированное проведение документов (подключаемое расширение)
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Меняется документ, но запись остаётся висеть в реестре
Код процедуры:
Код процедуры:
Процедура Удалить()
Для каждого Строка Из Объект.Список Цикл
ПолучитьДокумент = Строка.Ссылка;
Объект.ДокументСсылка = ПолучитьДок;
Д = Объект.ДокументСсылка.ПолучитьОбъект();
ПолучитьДокТовары = Д.Товары;
Для каждого СтрокаНоменклатура Из ПолучитьДокТовары Цикл
Если Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура).УникальныйИдентификатор() = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура).УникальныйИдентификатор() Тогда
ПолучитьДокТовары.Удалить(СтрокаНоменклатура);
Д.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Показать
(9)Я бы не удалял строки номенклатуры на прямую. Сделал бы ТЗ с номерами строк и те строки которые надо удалить занес бы в тз а затем перезаполнил исходную таблицу в документе без тех строк что будут удалены.
Сейчас Вы в табличной части обходите по циклу строки, но после первого удаления состав ТЧ уже другой, а цикл об этом ничего не знает.
Сейчас Вы в табличной части обходите по циклу строки, но после первого удаления состав ТЧ уже другой, а цикл об этом ничего не знает.
(16) Так я сначала то, что нужно отправляю в таблицу, а потом уже согласно этой выборке удаляю. Но удаление это временно, на самом деле там другие операции. Я просто ещё не доделал.
А если создать таблицу под выгрузку содержимого документа, а потом её обрабатывать, то это не увеличит скорость обработки. А поскольку по плану код должен лопатить большое количество регистров, то я считаю, не стоит
А если создать таблицу под выгрузку содержимого документа, а потом её обрабатывать, то это не увеличит скорость обработки. А поскольку по плану код должен лопатить большое количество регистров, то я считаю, не стоит
(18)ПолучитьДокТовары - это у Вас ТЧ документа и вы непосредственно в ней удаляете строки по условию. Так вот как только удалите одну строку, цикл не получит нужного количества строк.
И вы тут же в цикле сохраняете док с удаленной строкой, и продолжаете цикл, но документ у Вас уже другой.
Логику работы вы сами разрабатываете, я вижу код, который с моей точки зрения не логичен, и показываю вам где не логичность. А как будет у вас работать это вам виднее.
И вы тут же в цикле сохраняете док с удаленной строкой, и продолжаете цикл, но документ у Вас уже другой.
Логику работы вы сами разрабатываете, я вижу код, который с моей точки зрения не логичен, и показываю вам где не логичность. А как будет у вас работать это вам виднее.
(1) кроме обновить интерфейс есть еще отдельные команды для обновления динамического списка. Если после программного проведения, команда списка Еще - Обновить показывает документ с галочкой типа проведен - ищите нужную команду обновления списка.
нет никаких хитростей. если правильно понял, то дело в оповещении.
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_КакойТоДокумент", ПараметрыЗаписи, Объект.Ссылка);
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_КакойТоДокумент", ПараметрыЗаписи, Объект.Ссылка);
Всё, всем спасибо за отклик! Повторно перебрал ссылки
С принципом:
КакойтоДокумент.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
И всё получилось. Почему так, не знаю. Но, главное получилось
С принципом:
КакойтоДокумент.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
И всё получилось. Почему так, не знаю. Но, главное получилось
Если Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура).УникальныйИдентификатор() = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура).УникальныйИдентификатор() Тогда
Это вас кто такому научил?
(22) вы понимаете, что
и
тождественны? если вы неправильно нашли ссылку, что даст получение ГУИДа от этой ссылки?
Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура).УникальныйИдентификатор() = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура).УникальныйИдентификатор()
и
Справочники.Номенклатура.НайтиПоНаименованию(СтрокаНоменклатура.Номенклатура) = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура)
тождественны? если вы неправильно нашли ссылку, что даст получение ГУИДа от этой ссылки?
(23)Первое, я бы так никогда не написал, второе у НайтиПоНаименованию есть параметр Родитель, вот если Родитель разный а наименование одинаковое, то условие НИКОГДА не сработает.
Гуид позволил бы не проверять родителя. Поэтому если бы выполнялся контроль на наименование - запрет дублей, то условие бы работало.
Гуид позволил бы не проверять родителя. Поэтому если бы выполнялся контроль на наименование - запрет дублей, то условие бы работало.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот