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

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

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

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