![]() |
|
Обеспечение возможности ручной корректировки проводок в самописном документе | ☑ | ||
---|---|---|---|---|
0
lighthead9288
10.02.14
✎
22:52
|
Доброго времени суток, уважаемые эксперты. Стоит задача: обеспечить возможность ручной корректировки проводок созданного документа ПриходТовара(имеющего соответствующий реквизит РучнаяКорректировка).
Для этого на кнопку ДтКт на форме документа подцеплена стандартная обработка КорректировкаДвижений. Содержание модуля объекта следующее: Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект); Если РучнаяКорректировка Тогда Возврат; КонецЕсли; // регистр ПРОБА_движения_товаров Приход Движения.ПРОБА_движения_товаров.Записывать = Истина; Для Каждого ТекСтрокаПриходТовара Из ПриходТовара Цикл Движение = Движения.ПРОБА_движения_товаров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Дата = Дата; Движение.Партия = Ссылка; Движение.Товар = ТекСтрокаПриходТовара.Товар; Движение.Склад = Склад; Движение.Организация = Организация; Движение.Количество = ТекСтрокаПриходТовара.Количество; Движение.Стоимость = ТекСтрокаПриходТовара.Сумма; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); // Посчитать суммы документа и записать ее в соответствующий реквизит шапки для показа в журналах //СуммаДокумента = Товары.Итог("Сумма"); КонецПроцедуры Запустил отладку, установил флажок "Корректировка движений", попробовал провести - вылезла ошибка "Данные были изменены или удалены другим пользователем". Решил данную проблему обновлением формы документа: Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) ЭтаФорма.Прочитать(); КонецПроцедуры Всё чудесно проводится,но появилась новая проблема - при изменении значений табличной части или реквизитов формы и последующем проведении сохраняются старые значения.(К примеру, был приход на Склад1 5 единиц Товара1; изменяешь 5 единиц на 4 - всё равно остаётся 5). Очевидно, что это связано с этим: Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) ЭтаФорма.Прочитать(); КонецПроцедуры Возникает вопрос: как правильно обновить форму? В правильном ли месте(на клиенте) я это делаю? Заранее спасибо. |
|||
1
Анютик
10.02.14
✎
22:59
|
где сохраняются старые значения? в проводках?
|
|||
2
lighthead9288
10.02.14
✎
23:00
|
И в проводках, и на форме
|
|||
3
Анютик
10.02.14
✎
23:03
|
так, действия на форме , которые передзаписью - бред
посмотрите, как в типовых. |
|||
4
Анютик
10.02.14
✎
23:05
|
чтобы разрешить ручную корректировку проводок
добавляем реквизит РучнаяКорректировка о какой конфигурации идет речь непонятно...потому смотрим БУ:) включаем наш документ в подписку |
|||
5
lighthead9288
10.02.14
✎
23:07
|
Конфигурация Бухгалтерия предприятия, редакция 3.0 (3.0.28.7)
Реквизит РучнаяКорректировка уже добавлен; документ в подписку уже включен |
|||
6
Анютик
10.02.14
✎
23:12
|
в общую команду ПоказатьДвиженияДокумента включен?
|
|||
7
Анютик
10.02.14
✎
23:14
|
отмена проведения как написана?
|
|||
8
Анютик
10.02.14
✎
23:14
|
вообще проще взять любой типовой документ, хоть поступление, хоть реализацию и по ним проверить
|
|||
9
Анютик
10.02.14
✎
23:15
|
и еще, нет ли у вас реквизита "Движение" на форме?:))
|
|||
10
lighthead9288
10.02.14
✎
23:18
|
В общую команду документ включен.
Отмена проведения: Процедура ОтменаПроведенияМО() ЭКСПОРТ ЭтотОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); ПроведениеСервер.ПодготовитьНаборыЗаписейКОтменеПроведения(ЭтотОбъект); Движения.Записать(); КонецПроцедуры Реквизита "Движение" на форме нет=) |
|||
11
lighthead9288
12.02.14
✎
16:37
|
Спасибо большое за ответы! Я разобрался )
Дело вот в чём: в стандартной обработке "КорректировкаДвижений", к которой "подцеплен" документ, есть такой участок: ////-----------------Изменяем значение реквизита формы------- // ЗаписатьЗначениеРучнойКорректировки(); ////--------------------------------------------------------- ЗаписатьДвижения(Отказ); Если НЕ Отказ Тогда Если ИзмененаРучнаяКорректировка Тогда ОповеститьОбИзменении(ДокументСсылка); КонецЕсли; ЭтаФорма.Модифицированность = Ложь; Оповестить("ВыполненаЗаписьДокумента",Новый Структура("ДокументСсылка",ДокументСсылка)); Закрыть(); КонецЕсли; Следовательно, на форме надо было просто обработать это оповещение в событии ОбработкаОповещения: &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) // Вставить содержимое обработчика. Если ИмяСобытия = "ВыполненаЗаписьДокумента" тогда Прочитать(); КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |