Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/263: Рейтинг темы: голосов - 263, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
1

Вопрос: О копировании элемента справочника

22.08.2008, 21:05. Показов 50282. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть необходимость, чтобы при копировании элемента справочника "Номенклатура" (конфа ТиС), копировались свойства товара.
На закладке "свойства" есть таблица значений "СписокСвойств".
Собственно сам вопрос: как получить таблицу значений "СписокСвойств" из элемента, с которого был скопирован новый элемент?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2008, 21:05
Ответы с готовыми решениями:

При копировании элемента справочника
Всем привет! конфа БГУ 1.0. Есть справочник ГруппыПоУслугамДетскогоУчреждения. В его форме имеется...

Обновление ссылки на документ в реквизите справочника и заполнение реквизитов элемента справочника по новой ссылке
Здравствуйте. В собственной конфигурации есть документ "Объектныйграфик" с реквизитами: ШифрОбъекта...

Запись элемента справочника из модуля объекта другого справочника
Добрый день. 1С:Предприятие 8.3. Управляемые формы. К внутреннему документу...

Вопрос по форме справочника
Привет Всем!! Помогите пожалуйста разобраться. Как програмно реализовать условие. Дан справочник...

22
0 / 0 / 0
Регистрация: 22.04.2010
Сообщений: 38
24.08.2008, 05:35 2
Надо смотреть справочник СвойстваНоменклатуры
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 08:55 3
это понятно. в таблице значений хранятся ссылки на справочник "свойства номеклатура", вот вся проблема получить эти ссылки
0
0 / 0 / 0
Регистрация: 22.04.2010
Сообщений: 38
24.08.2008, 09:07 4
Спр1 - элемент с которого копируем
Спр2 - в который
СпрСН1 - свойства ном
СпрСН2

СпрСН1.ИспользоватьВладельца(Спр1);
СпрСН2.ИспользоватьВладельца(Спр2);
СпрСН1.ВыбратьЭлементы();
Пока СпрСН1.ПолучитьЭлемент()=1 Цикл
СпрСН2.Новый();
СпрСН2.ВидСвойства = СпрСН1.ВидСвойства;
СпрСН2.ЗначениеСвойства = СпрСН1.ЗначениеСвойства;
СпрСН2.Записать();
КонецЦикла;
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 09:10 5
с этим тоже более или менее понятно. спасибо. но мне нужно чтобы свойства копировались автоматически при обычном копировании элемента справочника номенклатура
0
0 / 0 / 0
Регистрация: 22.04.2010
Сообщений: 38
24.08.2008, 09:34 6
ВводНового(ПризнакКоприрования,ОбъектКопирования)
и прописывай
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 09:36 7
понял, спасибо. все было так просто, а я заптормозился на поиске элемента, с которого происходило копирование
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 12:49 8
Не все так гладко.


Код
Процедура ВводНового(Признак,Родитель)
Если Признак=1 Тогда
СпрРодитель=СоздатьОбъект("Справочник.СвойстваНоменклатуры");
СпрКопирование=СоздатьОбъект("Справочник.СвойстваНоменклатуры");
СпрРодитель.ИспользоватьВладельца(Родитель);
СпрКопирование.ИспользоватьВладельца(ТекущийЭлемент());
СпрРодитель.ВыбратьЭлементы();
Пока СпрРодитель.ПолучитьЭлемент()=1 Цикл
СпрКопирование.Новый();
СпрКопирование.ВидСвойства=СпрРодитель.ВидСвойства;
СпрКопирование.ЗначениеСвойства=СпрРодитель.ЗначениеСвойства;
СпрКопирование.Записать();
КонецЦикла;
КонецЕсли;
Конец Процедуры
И вот такая ошибка:


СпрКопирование.Записать();
{Справочник.Номенклатура.Форма.Модуль(1444)}: Не выбран элемент справочника-хозяина! Элемент не может быть записан!
0
1 / 1 / 0
Регистрация: 24.07.2008
Сообщений: 658
24.08.2008, 12:59 9
Попробуй
СпрКопирование.Владелец = ТекущийЭлемент();

написать после
СпрКопирование.Новый();
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 13:02 10
Цитата Сообщение от Hryv
Попробуй
СпрКопирование.ИспользоватьВладельца(ТекущийЭлемент());

написать после
СпрКопирование.Новый();
нет проблема не в этом.
чуть ниже в цикле есть СпрКопирование.Новый();

проблема в том, что ТекущийЭлемент() возвращает пустое значение
0
1 / 1 / 0
Регистрация: 24.07.2008
Сообщений: 658
24.08.2008, 13:19 11
проблема в том, что ТекущийЭлемент() возвращает пустое значение
Ну да, новый элемент основного справочника еще не записан
Можно его предварительно записать, но тут возникает туча нюансов
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 13:21 12
Цитата Сообщение от Hryv
Ну да, новый элемент основного справочника еще не записан
Можно его предварительно записать, но тут возникает туча нюансов
В процедуре вводНового он не дает записать
0
1 / 1 / 0
Регистрация: 24.07.2008
Сообщений: 658
24.08.2008, 13:31 13
А таблица значений на форме заполняется непосредственно элементами подчиненного справочника?
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 13:54 14
Цитата Сообщение от Hryv
А таблица значений на форме заполняется непосредственно элементами подчиненного справочника?
Да.

Все проблема решена
Вот решение


Код
Перем Родит

Процедура ВводНового(Признак,Родитель)
Если Признак=1 Тогда
Родит=Родитель;
КонецЕсли;
КонецПроцедуры

Процедура ПриЗакрытии()
Если ПустоеЗначение(Родит)=0 Тогда
СпрЭлемент=СоздатьОбъект("Справочник.Номенклатура");
СпрЭлемент=ТекущийЭлемент();
СпрРодитель=СоздатьОбъект("Справочник.СвойстваНоменклатуры");
СпрКопирование=СоздатьОбъект("Справочник.СвойстваНоменклатуры");
СпрРодитель.ИспользоватьВладельца(Родит);
СпрКопирование.ИспользоватьВладельца(СпрЭлемент);
СпрРодитель.ВыбратьЭлементы();
Пока СпрРодитель.ПолучитьЭлемент()=1 Цикл
СпрКопирование.Новый();
СпрКопирование.ВидСвойства=СпрРодитель.ВидСвойства;
СпрКопирование.ЗначениеСвойства=СпрРодитель.ЗначениеСвойства;
СпрКопирование.Записать();
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Может немножко коряво, но работает
Один нюанс, свойства записываются при первом закрытии скопированного элемента
0
1 / 1 / 0
Регистрация: 24.07.2008
Сообщений: 658
24.08.2008, 15:06 15
Один нюанс, свойства записываются при первом закрытии скопированного элемента
Может тогда лучше это делать в ПриОткрытии()
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 15:08 16
Цитата Сообщение от Hryv
Может тогда лучше это делать в ПриОткрытии()
Так при первом вызове ПриОткрытии элемент еще не записан.
А при провторном открытии теряется связь с элементом, с которого копировали.
0
1 / 1 / 0
Регистрация: 24.07.2008
Сообщений: 658
24.08.2008, 15:16 17
Понял, фишка в том, что ПриЗакрытии() вызывается после ПриЗаписи() и запись остается на совести юзера
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 278
24.08.2008, 15:35 18
так если юзер не запишет новый элемент, то он не сохранится вообще. так что защита от дураков включена

еще вопрос. пытаюсь таким же образом скопировать список цен, и мне выдает следующее


Код
СпрРодительЦена=СоздатьОбъект("Справочник.Цены");
СпрКопированиеЦена=СоздатьОбъект("Справочник.Цены");
СпрРодительЦена.ИспользоватьДату(РабочаяДата());
СпрРодительЦена.ИспользоватьВладельца(Родит);
СпрКопированиеЦена=ИспользоватьВладельца(ТекущийЭлемент());
СпрРодительЦена.ВыбратьЭлементы();
Пока СпрРодительЦена.ПолучитьЭлемент()=1 Цикл
СпрКопированиеЦена.Новый();
СпрКопированиеЦена.Наименование=СпрРодительЦена.Наименование;
СпрКопированиеЦена.Записать();
КонецЦикла;
ошибка:


СпрКопированиеЦена.Новый();
{Справочник.Номенклатура.Форма.Модуль(1822)}: Не задан вид.
0
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
24.08.2008, 15:39 19
НовыйЭлемент() ?

Мда -что от не то...
0
1 / 1 / 0
Регистрация: 24.07.2008
Сообщений: 658
24.08.2008, 15:40 20
так если юзер не запишет новый элемент, то он не сохранится вообще. так что защита от дураков включена
Но что будет, если юзер не зная про копирование подчиненных элементов начнет их руками вносить?
0
24.08.2008, 15:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2008, 15:40
Помогаю со студенческими работами здесь

Запись элемента справочника
Всем привет! Есть типовой справочник номенклатура на обычных формах.Я добавил в него еще 1...

7.7 Изменение Элемента Справочника
Добрый день. Суть проблемы такова: при проведении приходного документа в справочник "ПартииТовара"...

КА 8,Не уникальный порядок элемента справочника
Добрый вечер, у меня возникла такая проблема, что не могу редактировать и удалять элементы...

Запись элемента справочника в MySQL
1с v7 нужно чтобы при записи элемента справочника он записывался в sql сама база файловая....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru