Программное создание документа и показ формы без записи

1. karamazoff 96 06.03.20 13:37 Сейчас в теме
Всем доброго дня! Проблема такая:
Программно создать форму документа, заполнить ее и показать пользователю без записи объекта - это делается для большинства документов, но вот есть в БП документ ОперацияБух, которая не имеет табличной части а напрямую показывает записи регистров. Чтобы программно создать ОперациюБух надо его создать, записать, чтобы была ссылка, затем создать набор записи регистров, где указать, что регистратор наша ссылка. Ни у кого нет идей как все-таки можно организовать без записи документа?
+
По теме из базы знаний
Найденные решения
12. bad_wag 48 06.03.20 16:01 Сейчас в теме
Без проблем, вы для примера откройте уже заполненную бухОперацию, посмотрите какие на форме создались реквизиты и по аналогии сделайте. Вкратце, когда вы отмечаете нужный вам регистр, на форме создается таблица с структурой этого регистра, вот вам нужно сделать тоже самое. Сам такое проделывал, ничего сложного
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. AlexO 135 07.03.20 15:21 Сейчас в теме
(1)Т.е. ссылки - нет, документа - нет, а записи в регистрах с обязательным регистратором - хочу? И что же вы хотите получить от регистров в таком случае? Чтобы они съимитировали вам "как-будто у нас есть регистратор"?
+
2. Romeo_1c_programmer 29 06.03.20 13:41 Сейчас в теме
можно сделать обработку, на форме которой имитировать структуру документа с предварительными данными.
mushdaj; +1
3. karamazoff 96 06.03.20 13:50 Сейчас в теме
(2)это сложно и не то, хочется понять можно-ли стандартно, по идее надо повесить движения на несуществующий регистратор, а при записи подставлять реальный, но как? В интерактивном режиме мы же можем без сохранения док-та вбивать в него строки, они-же где-то храняться?
+
5. Romeo_1c_programmer 29 06.03.20 13:56 Сейчас в теме
(3)данные в табличном поле хранятся
+
16. AlexO 135 07.03.20 15:34 Сейчас в теме
(5)
данные в табличном поле хранятся
Там нет обычного ТП. Там ТП привязан жестко к регистрам, отбор по регистру (регистрам), и вывод результата отбора в ТП.
Хотите в ТП хранить подобное условию топика - сделайте имитацию "вывод отбора по РН в ТП".
+
15. AlexO 135 07.03.20 15:31 Сейчас в теме
(3)
хочется понять можно-ли стандартно
"Стандартные" лукавства не предусмотрены. Если нужен регистратор - он должен быть.
по идее надо повесить движения на несуществующий регистратор, а при записи подставлять реальный, но как?
По какой такой идее у вас образуется "несуществующий" регистратор? Если он в поле - он имеет ссылку, если есть ссылка - он записан, и существует. Или вы хотите с РН договориться "по-братски", чтобы он "ну закрой глаза, что тут нет регистратора, а, что тебе стоит"?
И какой-то "реальный" (т.е. другой) подменять вместо уже сохраненного - это как без удаления записи и восстановления с другим регистратором?
В интерактивном режиме мы же можем без сохранения док-та вбивать в него строки, они-же где-то храняться?
Они нигде не хранятся в привычном вам понимании. Закройте форму, и вы эти строки нигде больше не увидите. На мониторе тоже вы много чего видите, но вся эта информация нигде не "хранится".
В 1С вы работаете, прежде всего, с БД, а не с монитором. Поэтому все, что вам нужно для операций/изменений - должно храниться в базе, в том или ином виде. Хотите менять РН - дайте ему регистратор.
Хотите видеть только "на мониторе" - делайте имитацию "типа записи из РН, но на самом деле - это просто "картинки" с закосом под "как-будто они в РН". Только это уже будет не документ БухОперация, а сформированная вами картинка "как-будто". И "настоящий" РН ничего об этом "знать", конечно же, не будет.
+
20. AlexO 135 07.03.20 15:41 Сейчас в теме
(2)
можно сделать обработку
А чем сам документ не устраивает? Имитируйте хоть документ, хоть что хотите, не записывая.
+
4. Romeo_1c_programmer 29 06.03.20 13:54 Сейчас в теме
Можно и в документе, только признак активности снять
+
6. karamazoff 96 06.03.20 13:57 Сейчас в теме
(4)как? Цель открыть юзеру заполненный но не записанный документ ОперацияБух
+
7. Romeo_1c_programmer 29 06.03.20 14:00 Сейчас в теме
(6)заполняйте данные в поле табличного документа на форме
+
8. karamazoff 96 06.03.20 14:01 Сейчас в теме
17. AlexO 135 07.03.20 15:36 Сейчас в теме
(7)
заполняйте данные в поле табличного документа на форме
НаборЗаписей кто будет заполнять - Пупкин? Без регистратора?
+
9. Romeo_1c_programmer 29 06.03.20 14:09 Сейчас в теме
Примерно вот так должно выглядеть
Код
   БухОперация = Документы.ОперацияБух.СоздатьДокумент();
   БухОперация.Организация = Организация();
   БухОперация.Дата = ТекущаяДата();
   
   БухОперацияСсылка = БухОперация.Ссылка;
   Проводка = БухОперация.ЭтотОбъект.Движения.Хозрасчетный.Добавить();
   
   БухОперация.ПолучитьФорму().Открыть();
Показать полностью
+
10. karamazoff 96 06.03.20 14:19 Сейчас в теме
(9)Это наверно для обычного приложения, надо для управляемого (не сказал сразу), так не заработает, надо получать на клиенте форму нового, заполнять реквизиты формы (там есть ХозрасчетныйНаборЗаписей) и потом открывать
+
18. AlexO 135 07.03.20 15:37 Сейчас в теме
(10)
Это наверно для обычного приложения, надо для управляемого
Да без разницы, принцип работы отбора по регистру един в ОФ и УФ.
+
11. karamazoff 96 06.03.20 14:23 Сейчас в теме
вот так получается, но приходится все делать на клиенте
Форма = ПолучитьФорму("Документ.ОперацияБух.ФормаОбъекта");
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
Форма.Открыть();
idjumatov; +1
19. AlexO 135 07.03.20 15:39 Сейчас в теме
(11)
вот так получается
Ничего "так" у вас не получается, либо - получается совсем не то, что запросили в (1)
но приходится все делать на клиенте
Вы в любом случае "все" делаете на клиенте. Вы же с формой работаете.
А отбор по регистру - он будет на сервере, но у вас же ничего нет, поэтому и отбор вы сделать не сможете никак.
+
22. karamazoff 96 10.03.20 10:14 Сейчас в теме
(19)ну здасьте! попробуите или вам видео запостить?
+
23. R_o_n_n_y 67 04.01.23 18:55 Сейчас в теме
(11)
А для других регистров можно воспользоваться Экспортной процедурой Формы Операции - НастроитьСоставРегистровЗавершение

И закинуть туда Нужное, например%
Фрм = ПолучитьФорму("Документ.ОперацияБух.Форма.ФормаДокумента");
Фрм.Открыть();
СписокИзменений   = Новый СписокЗначений;
СписокИзменений.Добавить("НДСПредъявленный", "НДС предъявленный", Истина);
Фрм.НастроитьСоставРегистровЗавершение(СписокИзменений, Неопределено);

При этом форма создаст нужные и Элементы и реквизит (табличную часть регистра) с Именем "НДСПредъявленныйНаборЗаписей"
+
12. bad_wag 48 06.03.20 16:01 Сейчас в теме
Без проблем, вы для примера откройте уже заполненную бухОперацию, посмотрите какие на форме создались реквизиты и по аналогии сделайте. Вкратце, когда вы отмечаете нужный вам регистр, на форме создается таблица с структурой этого регистра, вот вам нужно сделать тоже самое. Сам такое проделывал, ничего сложного
+
13. AlexO 135 07.03.20 15:19 Сейчас в теме
(12)
Без проблем, вы для примера откройте уже заполненную бухОперацию, посмотрите какие на форме создались реквизиты и по аналогии сделайте.
А ничего, что у вас БО уже заполнена и сохранена?
Как вы собираетесь показать на незаписанном доке (соответственно, нет ссылки) как хочет автор:
"Программно создать форму документа, заполнить ее и показать пользователю без записи объекта"?
Если нет ничего - ничего и не покажет. А набор регистров согласно движениям - это только набор регистров, и ничего больше.
А не заполнение.
+
21. bad_wag 48 07.03.20 23:01 Сейчас в теме
(13)
А ничего, что у вас БО уже заполнена и сохранена?

Как раз я про заполненную и сказал, что бы посмотреть как там данные хранятся

(13)
Как вы собираетесь показать на незаписанном доке (соответственно, нет ссылки) как хочет автор

Очень просто, заполнить данные формы и показать ее пользователю, ему только останется нажать "записать и закрыть"
karamazoff; +1
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот