Имя: Пароль:
1C
1С v8
Запись документа программно
0 SnikRu
 
06.10.15
08:49
Доброго дня.
Не получается записать данные в документ из открытой формы упр. приложение? Ну не совсем не получается. Документ создается новый и данные пишутся хорошо. А мне нужно в текущий записать. Не могу найти как задействовать ссылку на документ? Код:

ДокументОбъект = РеквизитФормыВЗначение("Объект");
    
ДокументОбъект.НомерЧека = ЭТНомерЧека;
ДокументОбъект.НомерКарты = ЭТНомерКарты; ДокументОбъект.СсылкаОперации = ЭТНомерСсылкиОперации;
ДокументОбъект.СуммаЧека = ЭТСумма;

ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
1 Fedor-1971
 
06.10.15
08:56
ЭтаФорма.Записать()
ты обновил объект данных, а форму нет. Если уж решил использовать такой путь воспользуйся ЭтаФорма.Прочитать() - иначе получишь ошибку "Даные изменены пользователем <кто нажал кнопку сохранения>", т.е. конфликт себя с собой.
2 SnikRu
 
06.10.15
09:02
Не совсем понял (1) данные и так пишутся, значит и читаются.
Только создается и записывается новый документ?
3 Мимохожий Однако
 
06.10.15
09:03
Не проще открыть форму документа и в ней делать изменения?
4 SnikRu
 
06.10.15
09:05
У документа несколько форм.
А заполняемые реквизиты нужны для истории и не отображаются пользователю.
5 Fedor-1971
 
06.10.15
09:12
Так записывай их в ПередЗаписьюНаСервере,а не сохраняй сам Объект.
Что именно не понял из (1)? Объект в БД и Форма оного  - суть разные сущности, если записал что-то в объект, обнови его представление на форме.
6 SnikRu
 
06.10.15
09:22
Перед записью этих данных еще нет. Это входящие данные с терминала заполняются в процессе проведения документа.

На момент закрытия формы документ проведен. Нужно сохранить несколько временных реквизитов. Надеюсь это возможно.
7 Fedor-1971
 
06.10.15
09:39
(6) Это как происходит? Опиши всю цепочку словами.
8 hhhh
 
06.10.15
09:43
(6) ну так

Объект.НомерЧека = ЭТНомерЧека;
Объект.НомерКарты = ЭТНомерКарты;
Объект.СсылкаОперации = ЭТНомерСсылкиОперации;
Объект.СуммаЧека = ЭТСумма;


причем это на клиенте прям, без перехода на сервер.
9 Fedor-1971
 
06.10.15
09:48
(8) у него замечательная путанка:
- форма уже есть, а данных ещё нет
- код написан для формы, а данные появляются при проведении
- заполнения ссылки на документ в чеке, он меняет сам документ.
10 Fedor-1971
 
06.10.15
09:49
9+ Вместо заполнения ссылки - ошибся.
11 SnikRu
 
06.10.15
09:59
Видимо самый простой путь не есть самый легкий.

А алгоритм следующий. Документ имеет обычную форму из которой и происходит проведение, при выборе терминала открывается управляемая (взятая из БПО и адаптированная к документу) Плюс ни чего не нужно переделывать. Платеж проходит плюс все прочие сервисы (слип чек, возврат и тд) загвоздка в сохранении нескольких реквизитов управляемой формы на случай того же возврата.

Жаль из-за такой ерунды радикально переделывать все.
12 SnikRu
 
06.10.15
10:06
(6) Не работает.
Если добавить ЭтаФорма.Записать(); Создает новый документ и пишет прямо с клиента.
13 Fedor-1971
 
06.10.15
10:16
(12) так ты открыл пустую форму. Передай ей параметр "Ключ" (это уже сам загуглишь).
В общем ты разберись, если данные есть при проведении или после проведения, делай:

Док=Ссылка.ПолучитьОбъект();
Док....
Док.Записать();
[\1C]
только не зацикли сохранение.

на 7 так и не ответил.
Независимо от того, куда вы едете — это в гору и против ветра!