Вход | Регистрация

1С:Предприятие ::

Метки: 

Переделка процедуры из модуля формы в модуль документа

Я
   sidalexsandr
 
30.07.18 - 13:16
Есть процедура, которую требуется вызывать при копировании документа.
Изначально процедура была в модуле формы документа. Процедура выполняет запись в регистр сведений.

Вот текст процедуры:
НаборЗаписей = РегистрыСведений.NKE_Спецификация.СоздатьНаборЗаписей();
        НаборЗаписей.Прочитать();
        
        ФормаНаборЗаписей = НаборЗаписей.ПолучитьФорму("ФормаНабораЗаписей",Этаформа);
        
        ФормаНаборЗаписей.ЭлементыФормы.РегистрСведенийНаборЗаписей.ОтборСтрок.Документ.Значение = ЭтотОбъект.Ссылка;
        ФормаНаборЗаписей.ЭлементыФормы.РегистрСведенийНаборЗаписей.ОтборСтрок.Документ.Использование = Истина;
        
        ФормаНаборЗаписей.ЭлементыФормы.РегистрСведенийНаборЗаписей.ОтборСтрок.НомерСтр.Значение = ТекущаяСтрока.КлючСтроки;
        ФормаНаборЗаписей.ЭлементыФормы.РегистрСведенийНаборЗаписей.ОтборСтрок.НомерСтр.Использование = Истина;
        ФормаНаборЗаписей.Номенклатура = ТекущаяСтрока.Номенклатура;
        //Не разделяем конфигурацию по хар-кам

        //ФормаНаборЗаписей.ХарактеристикаНоменклатуры = ТекущаяСтрока.ХарактеристикаНоменклатуры;

        
        ФормаНаборЗаписей.ОткрытьМодально();
        
        СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
        
        ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
        ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

Выдает ошибки: Документ.ЗаказПокупателя.МодульОбъекта(2738,71)}: Переменная не определена (Этаформа)
        ФормаНаборЗаписей = НаборЗаписей.ПолучитьФорму("ФормаНабораЗаписей",<<?>>Этаформа); (Проверка: Толстый клиент (обычное приложение))
{Документ.ЗаказПокупателя.МодульОбъекта(2751,26)}: Переменная не определена (ЭлементыФормы)
        СтрокаТабличнойЧасти = <<?>>ЭлементыФормы.Товары.ТекущиеДанные; (Проверка: Толстый клиент (обычное приложение))
 
 
   sidalexsandr
 
1 - 30.07.18 - 13:17
Я понимаю что в модуле документа не доступны формы, но не знаю как мне исправить приведённую выше процедуру.
   Джинн
 
2 - 30.07.18 - 13:18
(1) Не перенести код из модуля в модуль, а переписать его, сохранив бизнес-логику. Ваш Кэп.
   Asmody
 
3 - 30.07.18 - 13:19
(1) Для начала нужно понять, что этот код делает.
   sidalexsandr
 
4 - 30.07.18 - 13:20
(3) Пишет в регистр сведений, так сказал программист написавший эту процедуру.
   Diman000
 
5 - 30.07.18 - 13:20
Если процедуру перенести в модуль объекта с таким пассажем 
ФормаНаборЗаписей.ОткрытьМодально();

то беда боюсь ожидает вас...
   Джинн
 
6 - 30.07.18 - 13:21
(4) Писать в регистр при копировании - это какое-то очень уж нетрадиционное действие.
   Asmody
 
7 - 30.07.18 - 13:22
(4) Он тебе наврал.
   sidalexsandr
 
8 - 30.07.18 - 13:23
(7) А что тогда делает процедура?
   Asmody
 
9 - 30.07.18 - 13:26
(8) Первые 9 строк открывают форму набора записей с установленным отбором.
Следующие три строки рассчитывают сумму и НДС выделенной строки таб.части Товары
   sidalexsandr
 
10 - 30.07.18 - 13:47
(9) Большущее спасибо.
 
  Рекламное место пустует
   AlexTim03
 
11 - 30.07.18 - 14:40
Асмоди - красавчик
(10) И что тебе дает теперь обладание этим знанием?
   sidalexsandr
 
12 - 30.07.18 - 14:45
(11) Буду теперь искать где происходила запись в регистр сведений
   sidalexsandr
 
13 - 30.07.18 - 14:46
Теперь ещё дали задание: перенести эту процедуру в другой документ. Процедура выдает ошибку: {Документ.ВнутреннийЗаказ.Форма.БП_ФормаДокумента.Форма(236)}: Поле объекта не обнаружено (КлючСтроки)
        ФормаНаборЗаписей.ЭлементыФормы.РегистрСведенийНаборЗаписей.ОтборСтрок.НомерСтр.Значение = ТекущаяСтрока.КлючСтроки;
   sidalexsandr
 
14 - 30.07.18 - 16:08
Подниму
   hhhh
 
15 - 30.07.18 - 16:33
(13) ну проверь, может в другом документе ты забыл добавить этот реквизит КлючСтроки?
   Cyberhawk
 
16 - 30.07.18 - 16:59
Кто дал задание?


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует