Имя: Пароль:
1C
1С v8
Открытие не записанного документа в УФ
,
0 mik_mihka
 
05.03.19
17:36
Здравствуйте, с управляемыми формами работать начал недавно, по этому прошу не судить.
Бухгалтерия 3.0
Делаю обработку внешнюю, которая делает выборку из базы, создает документ "ОперацияБух".
Документ открывается но не заполненный, если я его предварительно записываю - от так же открывается не заполненным,но... если его закрыть и снова открыть в журнале документов - он заполнен как надо.
Как мне открыть уже заполненный но НЕ ЗАПИСАННЫЙ документ?

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


&НаСервере
Процедура пересчет(ОбъектФормы,Организация,Склад,Счет,Дата)  

// Здесь выборка данных в запросе.....

        Результат = Запрос.Выполнить().Выбрать();
        //НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент();
        Док = ДанныеФормыВЗначение(ОбъектФормы, Тип("ДокументОбъект.ОперацияБух"));
        Док.Дата = КонецДня(Дата-1);
        Док.Организация = Организация;
        Док.Ответственный = ПараметрыСеанса.ТекущийПользователь;
        Док.Комментарий = "Обработка партий_суммы   ";
        НомерСтр = 0;
        Сумма = 0;
    
        Пока Результат.Следующий() Цикл
            НовоеДвижение = Док.Движения.Хозрасчетный.Добавить();
            НовоеДвижение.СчетДт = Счет_себест.Ссылка;
            НовоеДвижение.СчетКт = Счет;
            НовоеДвижение.СубконтоДт.НоменклатурныеГруппы = Результат.ГруппаНом.Ссылка;
            НовоеДвижение.СубконтоКт.Номенклатура = Результат.Номенкл;
            НовоеДвижение.СубконтоКт.Склады = Результат.Субконто2;
            НовоеДвижение.СубконтоКт.Партии = Результат.Субконто3;
            НовоеДвижение.Сумма = Результат.суммаОстаток;
            НовоеДвижение.СуммаНУДт =Результат.суммаОстаток;
            НовоеДвижение.СуммаНУКт =Результат.суммаОстаток;
            СчетчикСтрок = НомерСтр+1;
            Сумма = Сумма + Результат.суммаОстаток;
        КонецЦикла;
            Док.Движения.Хозрасчетный.Записывать = Истина;
            Док.СуммаОперации = Сумма;
            Док.Записать();
            Сообщить(Док);
            ЗначениеВДанныеФормы(Док,ОбъектФормы);            

КонецПроцедуры
1 OldCondom
 
05.03.19
17:42
Движение без регистратора хочешь?
2 OldCondom
 
05.03.19
17:43
А не в УФ получалось, да?
3 DrWatson
 
05.03.19
17:51
(0) А что за КопироватьДанныеФормы? Объект сам в себя копируется?
Остальные реквизиты при открытии заполнены?
4 d4rkmesa
 
05.03.19
18:39
(0) Хе-хе, ну посмотрите что там из методов формы вызывается в ПриСозданииНаСервере. Может обойдется малой кровью. В новых конфах зачастую приходится колхозить расширение с процедурой, где вызываются все доп. функции, заполняющие реквизиты формы.
5 singlych
 
05.03.19
18:43
ФормаПодчиненного = ПолучитьФорму("Документ.ОперацияБух.ФормаОбъекта");
    ...
    ФормаПодчиненного.Открыть();

В общем случае это все фуфло, потому что много чего делается в ПриСозданииНаСервере, которое срабатывает при ПолучитьФорму, а в это время объект еще пустой. А что-то вообще при чтении, которое сработает только если объект не новый.
6 Мимохожий Однако
 
05.03.19
18:46
7 Бертыш
 
05.03.19
18:53
(4) Это ты просто данный документ не знаешь, вот и говоришь. Там тч тупо отображение движений данного отдельного регистратора. Нет регистратора нет и движений.
(0) Наваяй свою форму или свою тч в существующую форму куда будешь складывать будущие движения для отображения и будет тебе счастье
8 Сияющий в темноте
 
05.03.19
21:29
Очень хорошая идея-хранить записи корректировки регистров в самих регистрах,а документ нужен только для того,чтобы был регистратор.
но,табличные части же где то живут,значит,можно попробовать просто их заполнить,как будто данные в них прочитались из регистра.
9 mik_mihka
 
06.03.19
07:04
(3) Да, остальные реквизиты заполнены, только нет движений в ТЧ.
(6) - мне нужно до записи документа - его открыть заполненным (ссылки ещё нет)
(7) - так данные есть в "Док.Движения.Хозрасчетный",после цикла а потом они не копируются в переданную с клиента форму (хотя другие реквизиты копируются), если их только сразу после цикла не записать.
10 sqr4
 
06.03.19
09:08
(9) Предлагаю в расширение запилить алгоритм заполнения. А в обработке открывать форму передавая параметр заполнения. Тогда сначала будет заполнены все реквизиты объекта, а затем при открытии формы отработают служебные процедуры по заполнению остальных реквизитов
11 mik_mihka
 
06.03.19
09:51
(10) Есть пример?
12 RomanYS
 
06.03.19
09:57
В типовой БП3 есть код
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
....    
    Если Параметры.Ключ.Пустая() Тогда
.....
        ЗаполнитьДвижения(Параметры.ЗначенияЗаполнения);
    КонецЕсли;
...
КонецПроцедуры

Никаких расширений не надо, просто разобраться с параметрами