Программное создание документа и показ формы без записи
Всем доброго дня! Проблема такая:
Программно создать форму документа, заполнить ее и показать пользователю без записи объекта - это делается для большинства документов, но вот есть в БП документ ОперацияБух, которая не имеет табличной части а напрямую показывает записи регистров. Чтобы программно создать ОперациюБух надо его создать, записать, чтобы была ссылка, затем создать набор записи регистров, где указать, что регистратор наша ссылка. Ни у кого нет идей как все-таки можно организовать без записи документа?
Программно создать форму документа, заполнить ее и показать пользователю без записи объекта - это делается для большинства документов, но вот есть в БП документ ОперацияБух, которая не имеет табличной части а напрямую показывает записи регистров. Чтобы программно создать ОперациюБух надо его создать, записать, чтобы была ссылка, затем создать набор записи регистров, где указать, что регистратор наша ссылка. Ни у кого нет идей как все-таки можно организовать без записи документа?
По теме из базы знаний
- Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример
- Программный интерфейс для доработки форм
- Программное создание и расчет документов начисления зарплаты в конфигурации ЗУП 3.1 и ERP (по подразделениям)
- Приемы работы с СКД: выгрузка данных справочников и документов в линейном виде в табличный документ
- Программное создание элементов в форме при использовании расширения
Найденные решения
Без проблем, вы для примера откройте уже заполненную бухОперацию, посмотрите какие на форме создались реквизиты и по аналогии сделайте. Вкратце, когда вы отмечаете нужный вам регистр, на форме создается таблица с структурой этого регистра, вот вам нужно сделать тоже самое. Сам такое проделывал, ничего сложного
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)это сложно и не то, хочется понять можно-ли стандартно, по идее надо повесить движения на несуществующий регистратор, а при записи подставлять реальный, но как? В интерактивном режиме мы же можем без сохранения док-та вбивать в него строки, они-же где-то храняться?
(3)
И какой-то "реальный" (т.е. другой) подменять вместо уже сохраненного - это как без удаления записи и восстановления с другим регистратором?
В 1С вы работаете, прежде всего, с БД, а не с монитором. Поэтому все, что вам нужно для операций/изменений - должно храниться в базе, в том или ином виде. Хотите менять РН - дайте ему регистратор.
Хотите видеть только "на мониторе" - делайте имитацию "типа записи из РН, но на самом деле - это просто "картинки" с закосом под "как-будто они в РН". Только это уже будет не документ БухОперация, а сформированная вами картинка "как-будто". И "настоящий" РН ничего об этом "знать", конечно же, не будет.
хочется понять можно-ли стандартно
"Стандартные" лукавства не предусмотрены. Если нужен регистратор - он должен быть.
по идее надо повесить движения на несуществующий регистратор, а при записи подставлять реальный, но как?
По какой такой идее у вас образуется "несуществующий" регистратор? Если он в поле - он имеет ссылку, если есть ссылка - он записан, и существует. Или вы хотите с РН договориться "по-братски", чтобы он "ну закрой глаза, что тут нет регистратора, а, что тебе стоит"?
И какой-то "реальный" (т.е. другой) подменять вместо уже сохраненного - это как без удаления записи и восстановления с другим регистратором?
В интерактивном режиме мы же можем без сохранения док-та вбивать в него строки, они-же где-то храняться?
Они нигде не хранятся в привычном вам понимании. Закройте форму, и вы эти строки нигде больше не увидите. На мониторе тоже вы много чего видите, но вся эта информация нигде не "хранится".
В 1С вы работаете, прежде всего, с БД, а не с монитором. Поэтому все, что вам нужно для операций/изменений - должно храниться в базе, в том или ином виде. Хотите менять РН - дайте ему регистратор.
Хотите видеть только "на мониторе" - делайте имитацию "типа записи из РН, но на самом деле - это просто "картинки" с закосом под "как-будто они в РН". Только это уже будет не документ БухОперация, а сформированная вами картинка "как-будто". И "настоящий" РН ничего об этом "знать", конечно же, не будет.
Примерно вот так должно выглядеть
Код |
---|
БухОперация = Документы.ОперацияБух.СоздатьДокумент();
БухОперация.Организация = Организация();
БухОперация.Дата = ТекущаяДата();
БухОперацияСсылка = БухОперация.Ссылка;
Проводка = БухОперация.ЭтотОбъект.Движения.Хозрасчетный.Добавить();
БухОперация.ПолучитьФорму().Открыть();
Показать полностью |
вот так получается, но приходится все делать на клиенте
Форма = ПолучитьФорму("Документ.ОперацияБух.ФормаОбъекта");
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
Форма.Открыть();
Форма = ПолучитьФорму("Документ.ОперацияБух.ФормаОбъекта");
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
проводка = Форма.ХозрасчетныйНаборЗаписей.Добавить();
//заполняем
Форма.Открыть();
(11)
А отбор по регистру - он будет на сервере, но у вас же ничего нет, поэтому и отбор вы сделать не сможете никак.
вот так получается
Ничего "так" у вас не получается, либо - получается совсем не то, что запросили в (1)
но приходится все делать на клиенте
Вы в любом случае "все" делаете на клиенте. Вы же с формой работаете.
А отбор по регистру - он будет на сервере, но у вас же ничего нет, поэтому и отбор вы сделать не сможете никак.
(11)
А для других регистров можно воспользоваться Экспортной процедурой Формы Операции - НастроитьСоставРегистровЗавершение
И закинуть туда Нужное, например%
При этом форма создаст нужные и Элементы и реквизит (табличную часть регистра) с Именем "НДСПредъявленныйНаборЗаписей"
А для других регистров можно воспользоваться Экспортной процедурой Формы Операции - НастроитьСоставРегистровЗавершение
И закинуть туда Нужное, например%
Фрм = ПолучитьФорму("Документ.ОперацияБух.Форма.ФормаДокумента");
Фрм.Открыть();
СписокИзменений = Новый СписокЗначений;
СписокИзменений.Добавить("НДСПредъявленный", "НДС предъявленный", Истина);
Фрм.НастроитьСоставРегистровЗавершение(СписокИзменений, Неопределено);
При этом форма создаст нужные и Элементы и реквизит (табличную часть регистра) с Именем "НДСПредъявленныйНаборЗаписей"
Без проблем, вы для примера откройте уже заполненную бухОперацию, посмотрите какие на форме создались реквизиты и по аналогии сделайте. Вкратце, когда вы отмечаете нужный вам регистр, на форме создается таблица с структурой этого регистра, вот вам нужно сделать тоже самое. Сам такое проделывал, ничего сложного
(12)
Как вы собираетесь показать на незаписанном доке (соответственно, нет ссылки) как хочет автор:
"Программно создать форму документа, заполнить ее и показать пользователю без записи объекта"?
Если нет ничего - ничего и не покажет. А набор регистров согласно движениям - это только набор регистров, и ничего больше.
А не заполнение.
Без проблем, вы для примера откройте уже заполненную бухОперацию, посмотрите какие на форме создались реквизиты и по аналогии сделайте.
А ничего, что у вас БО уже заполнена и сохранена?
Как вы собираетесь показать на незаписанном доке (соответственно, нет ссылки) как хочет автор:
"Программно создать форму документа, заполнить ее и показать пользователю без записи объекта"?
Если нет ничего - ничего и не покажет. А набор регистров согласно движениям - это только набор регистров, и ничего больше.
А не заполнение.
(13)
Как раз я про заполненную и сказал, что бы посмотреть как там данные хранятся
(13)
Очень просто, заполнить данные формы и показать ее пользователю, ему только останется нажать "записать и закрыть"
А ничего, что у вас БО уже заполнена и сохранена?
Как раз я про заполненную и сказал, что бы посмотреть как там данные хранятся
(13)
Как вы собираетесь показать на незаписанном доке (соответственно, нет ссылки) как хочет автор
Очень просто, заполнить данные формы и показать ее пользователю, ему только останется нажать "записать и закрыть"
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот