Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 05:16

Открытие документа отдельной формой или внешней обработкой

Автор Funt432286, 23 мар 2023, 10:39

0 Пользователей и 1 гость просматривают эту тему.

Funt432286

Всем доброго времени суток!
Есть документ со стандартной формой, но есть необходимость создать новую форму документа.

Как можно открыть документ в новой форме из списка документа по определенному условию и чтобы форма была заполнена данными этого документа, после редактирования необходимо сохранить измененные данные!

И второе: можно ли так же открыть документ с загрузкой данных на форму внешней обработки (чтобы можно было вносить исправления в форму не выгоняя никого из программы) и так же их редактировать и потом СОХРАНЯТЬ в тот же документ.

Afinogen

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

нажимая ее получал данные текущей строки - ссылку на документ
в форме документа сделал бы реквизит - объект

ну и при создании этой формы загружал бы в этот реквизит данные строки

примерно так

для формы списка
&НаКлиенте
Процедура ОткрытьНовуюФорму()
ТекДанные = Элементы.Список.ТекущиеДанные;
ПараметрыФормы = Новый Структура("СсылкаНаДокумент",ТекущиеДанные.Ссылка);
ОткрытьФорму("Документ.ваш.документ.форма.новаяФорма",ПараметрыФормы);
КонецПроцедуры

для новой формы

&НаСервере
Процедура ПриСозданииНаСервере()
Докобъект = Параметры.СсылкаНаДокумент.ПолучитьОбъект();
ЗначениеВРеквизитФормы(ДокОбъект,"Объект");
КонецПроцедуры

Afinogen

Цитата: Funt432286 от 23 мар 2023, 10:39И второе: можно ли так же открыть документ с загрузкой данных на форму внешней обработки (чтобы можно было вносить исправления в форму не выгоняя никого из программы) и так же их редактировать и потом СОХРАНЯТЬ в тот же документ.
вообще не понятно о чем речь

antoneus

Ну или

&НаКЛиенте
Процедура ПриОткрытии(Отказ)

    Если Условие Тогда
        Отказ = Истина;
        ОткрытьФорму("Документ.ЭтотДокумент.Форма.ДругаяФорма", Новый Структура("Ключ", Объект.Ссылка))
    КонецЕсли;

КонецПроцедуры

Afinogen


Funt432286

Цитата: Afinogen от 23 мар 2023, 10:50если речь идет об управляемых  формах то я бы не заморачивался,  сделал на форме списка кнопку - открыть форму по такому то условию

нажимая ее получал данные текущей строки - ссылку на документ
в форме документа сделал бы реквизит - объект

ну и при создании этой формы загружал бы в этот реквизит данные строки

примерно так

для формы списка
&НаКлиенте
Процедура ОткрытьНовуюФорму()
ТекДанные = Элементы.Список.ТекущиеДанные;
ПараметрыФормы = Новый Структура("СсылкаНаДокумент",ТекущиеДанные.Ссылка);
ОткрытьФорму("Документ.ваш.документ.форма.новаяФорма",ПараметрыФормы);
КонецПроцедуры

для новой формы

&НаСервере
Процедура ПриСозданииНаСервере()
Докобъект = Параметры.СсылкаНаДокумент.ПолучитьОбъект();
ЗначениеВРеквизитФормы(ДокОбъект,"Объект");
КонецПроцедуры


У меня обычное приложение, не управляемые формы

Funt432286

Цитата: Afinogen от 23 мар 2023, 10:52
Цитата: Funt432286 от 23 мар 2023, 10:39И второе: можно ли так же открыть документ с загрузкой данных на форму внешней обработки (чтобы можно было вносить исправления в форму не выгоняя никого из программы) и так же их редактировать и потом СОХРАНЯТЬ в тот же документ.
вообще не понятно о чем речь

Я всё новые формы делаю как внешние обработки, чтобы можно было вносить изменения днём (если вносить в документ можно только в не рабочее время и то после 24-00), поэтому хочу редактировать и сохранять документ через внешнюю обработку.

Kvark5d

Funt432286, возможно примерно так
на форме списка документа на табличное поле ДокументСписок для события выбор создаем процедуру, примерно так:
Процедура ДокументСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    Если ВыбраннаяСтрока.НачалоПериода=Дата(2022,1,1,0,0,0) Тогда
        СтандартнаяОбработка=ложь;
        ОткрытьВнешнийОтчетОбработку(ВыбраннаяСтрока.Ссылка);           
    КонецЕсли;
КонецПроцедуры
Описываем необходимые условия

создаем внешнюю обработку копируя в нее все реквизиты документа, копируем в нее ФормаДокумента из нашего документа

в модуль формы списка документа добавляем процедуру:
Процедура ОткрытьВнешнийОтчетОбработку(ОбъектСсылка)
    ИмяФайла = "С:\Проверка\Пров.epf"; // путь к обработке
    ВнешнийОтчет=ВнешниеОбработки.Создать(ИмяФайла);
    Форма = ВнешнийОтчет.ПолучитьФорму("ФормаДокумента");
    Форма.ДокументОбъект = ОбъектСсылка.ПолучитьОбъект();
    Форма.Открыть();
КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск