Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:00

Обеспечение возможности ручной корректировки в самописном документе

Автор lighthead9288, 10 фев 2014, 22:42

0 Пользователей и 1 гость просматривают эту тему.

lighthead9288

Доброго времени суток, уважаемые эксперты. Стоит задача: обеспечить возможность ручной корректировки проводок созданного документа ПриходТовара(имеющего соответствующий реквизит РучнаяКорректировка).
Для этого на кнопку ДтКт на форме документа подцеплена стандартная обработка КорректировкаДвижений.

Содержание модуля объекта следующее:
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
Если РучнаяКорректировка Тогда             
Возврат;
КонецЕсли;

 
// регистр ПРОБА_движения_товаров Приход
Движения.ПРОБА_движения_товаров.Записывать = Истина;
Для Каждого ТекСтрокаПриходТовара Из ПриходТовара Цикл
Движение = Движения.ПРОБА_движения_товаров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Дата = Дата;
Движение.Партия = Ссылка;
Движение.Товар = ТекСтрокаПриходТовара.Товар;
Движение.Склад = Склад;
Движение.Организация = Организация;
Движение.Количество = ТекСтрокаПриходТовара.Количество;
Движение.Стоимость = ТекСтрокаПриходТовара.Сумма;
КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
                                 

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
       
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

// Посчитать суммы документа и записать ее в соответствующий реквизит шапки для показа в журналах
//СуммаДокумента = Товары.Итог("Сумма");

КонецПроцедуры



Запустил отладку, установил флажок "Корректировка движений", попробовал провести - вылезла ошибка
"Данные были изменены или удалены другим пользователем".
Решил данную проблему обновлением формы документа:
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ЭтаФорма.Прочитать();

КонецПроцедуры


Всё чудесно проводится,но появилась новая проблема - при изменении значений табличной части или реквизитов формы и последующем проведении сохраняются старые значения.(К примеру, был приход на Склад1 5 единиц Товара1;  изменяешь 5 единиц на 4 - всё равно остаётся 5).
Очевидно, что это связано с этим:
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ЭтаФорма.Прочитать();

КонецПроцедуры



Возникает вопрос: как правильно обновить форму? В правильном ли месте(на клиенте) я это делаю?
Заранее спасибо.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск