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

1. karamazoff 95 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 Сейчас в теме
можно сделать обработку, на форме которой имитировать структуру документа с предварительными данными.
3. karamazoff 95 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 95 06.03.20 13:57 Сейчас в теме
(4)как? Цель открыть юзеру заполненный но не записанный документ ОперацияБух
7. Romeo_1c_programmer 29 06.03.20 14:00 Сейчас в теме
(6)заполняйте данные в поле табличного документа на форме
8. karamazoff 95 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 95 06.03.20 14:19 Сейчас в теме
(9)Это наверно для обычного приложения, надо для управляемого (не сказал сразу), так не заработает, надо получать на клиенте форму нового, заполнять реквизиты формы (там есть ХозрасчетныйНаборЗаписей) и потом открывать
18. AlexO 135 07.03.20 15:37 Сейчас в теме
(10)
Это наверно для обычного приложения, надо для управляемого
Да без разницы, принцип работы отбора по регистру един в ОФ и УФ.
11. karamazoff 95 06.03.20 14:23 Сейчас в теме
вот так получается, но приходится все делать на клиенте
Форма = ПолучитьФорму("Документ.ОперацияБух.ФормаОбъекта");
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
Форма.Открыть();
idjumatov; +1 Ответить
19. AlexO 135 07.03.20 15:39 Сейчас в теме
(11)
вот так получается
Ничего "так" у вас не получается, либо - получается совсем не то, что запросили в (1)
но приходится все делать на клиенте
Вы в любом случае "все" делаете на клиенте. Вы же с формой работаете.
А отбор по регистру - он будет на сервере, но у вас же ничего нет, поэтому и отбор вы сделать не сможете никак.
22. karamazoff 95 10.03.20 10:14 Сейчас в теме
(19)ну здасьте! попробуите или вам видео запостить?
23. R_o_n_n_y 66 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 Ответить
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)