|
Перенос подчинённых элементов | ☑ | ||
---|---|---|---|---|
0
Artificial
04.04.16
✎
23:26
|
Есть справочник "Номенклатура", есть подчиненный справочник "Спецификации номенклатуры". Необходимо при копировании элемента справочника "Номенклатура", так же копировать все подчиненные элементы справочника "Спецификации номенклатуры". Опишите алгоритм и принцип решения задачи.
|
|||
1
Злопчинский
04.04.16
✎
23:34
|
Описываю:
При копировании элемента справочника "Номенклатура" копируем элементы подчиненного справочника "Спецификации..." |
|||
2
HawkEye
04.04.16
✎
23:40
|
(0) ты типа решил нас всех тут протестировать?
|
|||
3
birkoFFFF
05.04.16
✎
05:27
|
Если сам не в состоянии сделать, то посмотри как работает в типовой УТ 11, там если мне не изменяет память при копировании номенклатуры программа предлагает скопировать и характеристики. Может и еще где есть, но в УТ точно.
|
|||
4
Рэйв
05.04.16
✎
06:59
|
(0)Если хочется самому пройтись по всем граблм, то у справочника есть в модуле объекта событие ПриКопировании. Вот там и копай
|
|||
5
Artificial
05.04.16
✎
07:53
|
(4) Нашёл только заполнения по умолчанию (склад, валюта и т. д.). А где не по умолчанию?
|
|||
6
Рэйв
05.04.16
✎
07:55
|
(5)А не поумолчанию - это надо писать самому
|
|||
7
Artificial
05.04.16
✎
07:59
|
(6) У меня просто концепцию спрашивают. Я пересмотрел, в УТ нет. Понятно, что самому, только как?
|
|||
8
ДенисЧ
05.04.16
✎
08:18
|
(7) руками, разумеется. Телепатический интерфейс обещают только в 11й платформе
|
|||
9
Artificial
05.04.16
✎
08:21
|
(8) Можете показать пример?
|
|||
10
ДенисЧ
05.04.16
✎
08:36
|
(9) спрСерии.ИспользоватьВладельца(текущийТовар);
спрСерии.выбратьЭлементы(); Пока спрСерии.ПолучитьЭлемент() = 1 Цикл ПеренестиСерию(спрсерии); КонецЦикла; |
|||
11
Artificial
05.04.16
✎
08:41
|
(10) Это где такое? В УТ не вижу.
|
|||
12
ДенисЧ
05.04.16
✎
08:45
|
(11) А почему ты должен это видеть? В типовых такой фигни нет...
|
|||
13
Artificial
05.04.16
✎
08:46
|
(12) Тогда какой код процедуры ПеренестиСерию()?
|
|||
14
ДенисЧ
05.04.16
✎
08:51
|
(13) А вот это уже стоит денег...
|
|||
15
Масянька
05.04.16
✎
08:51
|
(13) - А вы что - и есть за меня будете?
- Ага. (С) |
|||
16
ixijixi
05.04.16
✎
09:44
|
Держи
Функция СкопироватьНоменклатуруСоСпецификацией(Знач ТекущиеДанные) Экспорт Если ТекущиеДанные = Неопределено Тогда Возврат Неопределено; КонецЕсли; Номенклатура = ТекущиеДанные.Ссылка; Если Не ЗначениеЗаполнено(Номенклатура) или Номенклатура.ЭтоГруппа Тогда Возврат Неопределено; КонецЕсли; ЭлементШаблон = Номенклатура; НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(НовыйЭлемент, ЭлементШаблон,, "ОсновнаяСпецификацияНоменклатуры, Наименование, Владелец, Код, ПометкаУдаления"); Для Каждого ТаблЧасть Из Метаданные.Справочники.Номенклатура.ТабличныеЧасти Цикл НовыйЭлемент[ТаблЧасть.Имя].Загрузить(ЭлементШаблон[ТаблЧасть.Имя].Выгрузить()); КонецЦикла; НовыйЭлемент.Наименование = ЭлементШаблон.Наименование + " (КОПИЯ)"; НовыйЭлемент.Записать(); // Заполнить справочник СпецификацииНоменклатуры Запрос = Новый Запрос; Запрос.УстановитьПараметр("Владелец", ЭлементШаблон); Запрос.Текст = "ВЫБРАТЬ | СпецификацииНоменклатуры.Ссылка КАК Спецификация |ИЗ | Справочник.СпецификацииНоменклатуры КАК СпецификацииНоменклатуры |ГДЕ | СпецификацииНоменклатуры.Владелец = &Владелец"; РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл СпецификацияШаблон = Выборка.Спецификация; НоваяСпецификация = Справочники.СпецификацииНоменклатуры.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(НоваяСпецификация, СпецификацияШаблон,, "Владелец, Код"); НоваяСпецификация.Владелец = НовыйЭлемент.Ссылка; Для каждого ТаблЧасть Из Метаданные.Справочники.СпецификацииНоменклатуры.ТабличныеЧасти Цикл НоваяСпецификация[ТаблЧасть.Имя].Загрузить(СпецификацияШаблон[ТаблЧасть.Имя].Выгрузить()); КонецЦикла; НоваяСпецификация.Записать(); НовыйЭлемент.ОсновнаяСпецификацияНоменклатуры = НоваяСпецификация.Ссылка; КонецЦикла; НовыйЭлемент.Записать(); КонецЕсли; // Заполнить регистр Сведений ХимическийСостав Запрос = Новый Запрос; Запрос.УстановитьПараметр("Номенклатура", ЭлементШаблон); Запрос.УстановитьПараметр("НоваяНоменклатура", НовыйЭлемент.Ссылка); Запрос.Текст = "ВЫБРАТЬ | &НоваяНоменклатура КАК Номенклатура, | ХимическийСостав.Белки, | ХимическийСостав.Жиры, | ХимическийСостав.Углеводы, | ХимическийСостав.Калорийность, | ХимическийСостав.Клетчатка, | ХимическийСостав.Холестерин, | ХимическийСостав.ВитаминА, | ХимическийСостав.ВитаминB1, | ХимическийСостав.ВитаминB2, | ХимическийСостав.ВитаминB6, | ХимическийСостав.ВитаминB12, | ХимическийСостав.ВитаминPP, | ХимическийСостав.ВитаминC, | ХимическийСостав.ВитаминD, | ХимическийСостав.ВитаминE, | ХимическийСостав.Фолат, | ХимическийСостав.Натрий, | ХимическийСостав.Калий, | ХимическийСостав.Кальций, | ХимическийСостав.Магний, | ХимическийСостав.Фосфор, | ХимическийСостав.Железо, | ХимическийСостав.Цинк, | ХимическийСостав.Йод |ИЗ | РегистрСведений.ХимическийСостав КАК ХимическийСостав |ГДЕ | ХимическийСостав.Номенклатура = &Номенклатура"; РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Запись = РегистрыСведений.ХимическийСостав.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(Запись, Выборка); Запись.Записать(); КонецЦикла; КонецЕсли; Возврат НовыйЭлемент.Ссылка; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |