|
Интерактивное копирование элемента справочника с подчиненными. Не копируется... | ☑ | ||
---|---|---|---|---|
0
andryuhin
24.06.14
✎
12:30
|
Всем привет. Задачка следующая. Есть справочник блюд. Ему подчинен справочник ингридиентов. На форме элемента справочника блюд есть табличное поле, отображающее подчиненный справочник ингридиентов. Необходимо, чтобы при интерактивном копировании (по F9) открывалась форма скопированного элемента с заполненным табличным полем.
Не получается, блин. Делаю так: В модуле объекта: Процедура ПриКопировании(ОбъектКопирования) Наименование = Наименование+" <КОПИЯ>"; ЭтотОбъект.Записать(); выб_Рецептура =Справочники.Рецептура.Выбрать(,ОбъектКопирования.Ссылка); Пока выб_Рецептура.Следующий() Цикл ИнгрдиентИзРецептуры = Справочники.Рецептура.СоздатьЭлемент(); ИнгрдиентИзРецептуры.Владелец = Ссылка; Для Каждого Рекв_метаданные из Метаданные.Справочники.Рецептура.Реквизиты Цикл ИнгрдиентИзРецептуры[Рекв_метаданные.Имя] = выб_Рецептура[Рекв_метаданные.Имя]; КонецЦикла; ИнгрдиентИзРецептуры.Записать(); КонецЦикла; КонецПроцедуры Причем чего происходит. Объект в базе на самом деле нормально копируется, но вот открывается форма создания нового элемента, естественно с пустым табличным полем. |
|||
1
Рэйв
24.06.14
✎
12:32
|
>>открывалась форма скопированного элемента с заполненным табличным полем
Что курим? Ссылки то еще нет, кому подчинять? |
|||
2
Рэйв
24.06.14
✎
12:34
|
или "подчиненный" - это твоя вольная трактовка?:-)
|
|||
3
andryuhin
24.06.14
✎
12:34
|
(1) Ссылки нет. Именно для этого ПриКопировании объект записываю, чтобы ссылка была. Код посмотри
|
|||
4
Рэйв
24.06.14
✎
12:34
|
а, нет
>>ИнгрдиентИзРецептуры.Владелец тогда (1) актуально |
|||
5
Рэйв
24.06.14
✎
12:36
|
(3)ок, на записать не посмотрел:-)
А таб часть ама собой должна заполниться? |
|||
6
Рэйв
24.06.14
✎
12:36
|
*сама
|
|||
7
Рэйв
24.06.14
✎
12:36
|
блин, что-то к вечеру плохо читать тал:-))
|
|||
8
Рэйв
24.06.14
✎
12:37
|
(0)
Попробуй ЭлементыФормы.ИмяТабПоляподчиненногоСпр.Создатьколонки() |
|||
9
andryuhin
24.06.14
✎
12:38
|
(5) ТабличнаяЧасть имеет тип СправочникСписок.Рецептура, причем Связь по владельцу = Ссылка. Поэтому должна заполниться сама
|
|||
10
Рэйв
24.06.14
✎
12:38
|
(9)Я понял. см.(8)
|
|||
11
Kurbash
24.06.14
✎
12:38
|
ОткрытьФорму("Документ.докум.ФормаОбъекта", Новый Структура("ЗначениеКопирования", Объект.Ссылка));
|
|||
12
Kurbash
24.06.14
✎
12:39
|
иил еще проще посмотреть ВводНаОнсновании
|
|||
13
andryuhin
24.06.14
✎
12:40
|
(8) не прокатило. Поставил в ПриОткрытии
|
|||
14
andryuhin
24.06.14
✎
12:41
|
(11) В каком модуле ОткрытьФорому ?
|
|||
15
Kurbash
24.06.14
✎
12:43
|
можно на отдельную команду повесить
|
|||
16
andryuhin
24.06.14
✎
12:44
|
(15) как?
|
|||
17
hhhh
24.06.14
✎
13:01
|
наименование забыли еще скопировать
|
|||
18
andryuhin
24.06.14
✎
13:09
|
(17) не забыл. Оно приЗаписи рецептуры само туда вскокнет :)
|
|||
19
andryuhin
24.06.14
✎
13:12
|
Блин, проблема так и не решена.
Может еще кто-нибудь идейку подкинет? Очень нужна ваша помощь. |
|||
20
Kurbash
24.06.14
✎
13:18
|
команду заведи в форме и на нее код повесь. Управляемое приложение?
|
|||
21
andryuhin
24.06.14
✎
13:19
|
(20) нет. Обычные формы
|
|||
22
Kurbash
24.06.14
✎
13:26
|
сделай кнопку, на нее код, что то типа
Сп=Справочники.ТвойСправочник.СоздатьЭлемент(); сп.реквизит=Реквизит; сп.реквизит2=Реквизит2; //заполняешь тч для каждого стр из ТЧ.Следующий() цикл т=Док.ТЧ.Добавить(); т.строкаТЧ=стр.СтрокаТЧ; т.строкаТЧ2=стр.СтрокаТЧ2//Заполняешь ТЧ реквизитами конеццикла; ФОрма=Док.ПолучитьФОрму(); ФОрма.Открыть(); как то так... |
|||
23
hhhh
24.06.14
✎
13:29
|
(21) отладчиком воспользуйся
|
|||
24
andryuhin
24.06.14
✎
13:32
|
(22) Имеешь в виду, пользователь чтобы на кнопку на форме давил ?
|
|||
25
Kurbash
24.06.14
✎
13:36
|
как вариант
|
|||
26
andryuhin
24.06.14
✎
13:39
|
(25) совсем не гут
|
|||
27
andryuhin
24.06.14
✎
13:54
|
УРА, решилось.
(22) идея на самом деле правильная. Только нужно не кнопочку кидать на форму. В форме списка я переопределил добавление строки копированием. Вот код: Процедура СправочникСписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа) Если Копирование и не ЭтоГруппа Тогда Отказ=Истина; СкопированноеБлюдо = Элемент.ТекущаяСтрока.Скопировать(); СкопированноеБлюдо.ПолучитьФорму().Открыть(); Элемент.ТекущаяСтрока = СкопированноеБлюдо.Ссылка; КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |