|
Записать документ без перепроведения | ☑ | ||
---|---|---|---|---|
0
nevskaya
20.03.12
✎
20:11
|
Добрый вечер. Прошу подсказки. Есть документ, который делает движения по регистру накопления. Например, пользователь заходит в уже проведенный документ, меняет значение одного реквизита и нажимает кнопку Записать. В связи с этим требуется модифицировать записи регистра накопления в том случае, если документ уже проведен, но при этом не перепроводя сам документ. Фактически, по нажатию меняется значение реквизита и записи регистра.
Документ, если он уже проведен, при нажатии на Записать перепроводится. Это вроде как нормально. Можно ли как-то это обойти? Пробую писать обработку записи в форме документа. Запись в регистрах изменить удается, реквизит в документе соответственно не меняется. Посоветуйте. Процедура ЗаписатьДокумент(Кнопка) Если Проведен И РазрешеноИзменение Тогда НачатьТранзакцию(); Попытка НаборЗаписей = Движения.ТоварыПереданные; НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество()<>0 Тогда Для каждого Движение Из НаборЗаписей Цикл Движение.ДоговорКонтрагента = ДоговорКонтрагента; КонецЦикла; НаборЗаписей.Записать(); КонецЕсли; ЭтаФорма.Модифицированность = Ложь; Исключение ОтменитьТранзакцию(); КонецПопытки Иначе Записать(); КонецЕсли; КонецПроцедуры |
|||
1
PR
20.03.12
✎
20:12
|
ДокОбъект.ОбменДанными.Загрузка = Истина
|
|||
2
nevskaya
22.03.12
✎
10:09
|
(1) Спасибо, то, что надо.
Теперь возникла следующая проблема - не перезаписываются строки в регистре накопления. Записи меняю в закрытом периоде. Причем в таблице записей в конце данные заменяются. Но в 1с, в регистре - данные остаются старые. С чем это может быть связано? Может ли быть из-за того, что период закрыт? Если мСобытиеПоКнопке Тогда ЭтотОбъект.ОбменДанными.Загрузка = Истина; Записать(РежимЗаписиДокумента.Запись); НачатьТранзакцию(); Попытка НаборЗаписей=РегистрыНакопления.ТоварыПереданные.СоздатьНаборЗаписей(); НаборЗаписей.ОбменДанными.Загрузка = Истина; НаборЗаписей.Отбор.Регистратор.Значение=ЭтотОбъект.Ссылка; НаборЗаписей.Прочитать(); Для каждого Строка из НаборЗаписей Цикл Строка.ДоговорКонтрагента = ДоговорКонтрагента; КонецЦикла; НаборЗаписей.Записать(); Исключение ОтменитьТранзакцию(); КонецПопытки Иначе ПриИзмененииДоговора(); КонецЕсли; ТаблицаЗаписей = НаборЗаписей.Выгрузить(); |
|||
3
Шапокляк
22.03.12
✎
10:11
|
(2) То есть документ надо записать без проведения, но после этого проблема, что проведения нет?
|
|||
4
nevskaya
22.03.12
✎
10:15
|
(3) Почти. После перезаписи нужно сделать только те движения, которые нужно. Другими словами, оставить все как было, лишь изменить одно поле в записи одного регистра.
|
|||
5
Живой Ископаемый
22.03.12
✎
10:16
|
2(4) так нужно делать всегда или только один раз?
|
|||
6
nevskaya
22.03.12
✎
10:17
|
(2) Всегда. В закрытом периоде. Но только одному человеку :)
|
|||
7
lxs
22.03.12
✎
10:18
|
(4) меняйте логику, ибо это брел
|
|||
8
lxs
22.03.12
✎
10:18
|
*бред
|
|||
9
Мыш
22.03.12
✎
10:18
|
(4) НаборЗаписей = РегистрыНакопления.МойРегистр.СоздатьНабор();
НаборЗаписей.Отбор.Регистратор.Установить(МойДокумент); НаборЗаписей.Прочитать(); // редактировать записи НаборЗаписей.Записать(); |
|||
10
nevskaya
22.03.12
✎
10:20
|
(9) А у меня разве не так?
|
|||
11
Мыш
22.03.12
✎
10:21
|
(10) Да всё так. Если не срабатывает - лезь в отладчик и смотри. Может где "Отказ=Истина" срабатывает.
|
|||
12
y22-k
22.03.12
✎
10:22
|
(10) нет
|
|||
13
Мыш
22.03.12
✎
10:23
|
(10) Во, увидел. Нет "ЗавершитьТранзакцию();" Или "Зафиксировать"
|
|||
14
Адинэснег
22.03.12
✎
10:25
|
(0) кури документ "Корректировка записей регистров"
Старые сторнируй, новые добавляй |
|||
15
Aprobator
22.03.12
✎
10:26
|
(14) ага - пользователь это осилит.
|
|||
16
nevskaya
22.03.12
✎
10:28
|
(13) блин, забыла) спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |