![]() |
![]() |
![]() |
|
Копирование элемента справочника | ☑ | ||
---|---|---|---|---|
0
dragonIMV
30.09.09
✎
14:25
|
Заранее извиняюсь за путанное объяснение, ну не умею я с места мысли складно излагать))))
Есть справочник в 1С 8.1 УПП (свой собственный справочник). Название и смысле его не суть, но для удобство название - "Коллективные договоры". Цель - при копировании элемента справочника надо скопировать не только все реквизиты (что делается по умолчанию, кроме номера и даты), но и скопировать кое какие записи в регистре сведений (тоже свой доработанный). Причем необходимо в регистре записывать ссылку на элемент справочника "Коллективные договоры". Если использовать процедуру "При копировании" в модуле справочника "Коллективные договоры",то на момент копирования ссылки на новый элемент не существует. Т.е. приходится прям в процедуре копирования писать "ЭтотОбъект.Записать()". После этого я могу использовать "ЭтотОбъект.Ссылка" в процедуре копирования. Но при этом происходит ошибка следующая. Он нормально делает записи в регистре сведений и открывает форму (в которой есть "табличная часть" ссылающаяся как раз на наши записи в регистре). И все нормально типо заполнено. Но, форма как будто считает что она открыта от нового документа, а в системе уже есть записанный объект. И соответственно с этой открытой формой я ничего не смогу сделать. Ни сохранить ничего. Приходится выходить из формы не сохраняясь, в списке справочника открывать новый созданный элемент и уже с ним делать что захочешь. Так вот вопрос, как правильно это сделать. Чтобы при копировании элемнта я мог сразу же на него ссылаться в регистре сведений и чтобы форма изначально открывалась нормально. Привожу саму процедуру "При копировании": Режим = РежимДиалогаВопрос.ДаНет; Ответ = Вопрос("Если при копировании коллективного договора необходимо скопировать табличную часть с командой, то нажмите Да. Но необходимо помнить, что в этом случае новый объект будет сразу же сохранен в системе.", Режим, 0); Если Ответ = КодВозвратаДиалога.Да Тогда ЭтотОбъект.Записать(); Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ВИПУчастникиПроектов.АйТиКоллективныеДоговоры, | ВИПУчастникиПроектов.УчастникПроекта, | ВИПУчастникиПроектов.Роль, | ВИПУчастникиПроектов.Процент, | ВИПУчастникиПроектов.Сумма, | ВИПУчастникиПроектов.ДопПроцент, | ВИПУчастникиПроектов.ДопСумма, | ВИПУчастникиПроектов.ВремяУчастия, | ВИПУчастникиПроектов.ВремяУчастия2, | ВИПУчастникиПроектов.Примечание |ИЗ | РегистрСведений.ВИПУчастникиПроектов КАК ВИПУчастникиПроектов |ГДЕ | ВИПУчастникиПроектов.АйТиКоллективныеДоговоры = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ОбъектКопирования.Ссылка); РЗ = Запрос.Выполнить().Выбрать(); Пока РЗ.Следующий() Цикл Рег = РегистрыСведений.ВИПУчастникиПроектов.СоздатьНаборЗаписей(); Рег.Отбор.АйТиКоллективныеДоговоры.Установить(ЭтотОбъект.Ссылка); Рег.Прочитать(); Рег.Записать(); Строка = Рег.Добавить(); Строка.АйТиКоллективныеДоговоры = ЭтотОбъект.Ссылка; Строка.УчастникПроекта = РЗ.УчастникПроекта; Строка.Роль = РЗ.Роль; Строка.Процент = РЗ.Процент; Строка.Сумма = РЗ.Сумма; Строка.ДопПроцент = РЗ.ДопПроцент; Строка.ДопСумма = РЗ.ДопСумма; Строка.ВремяУчастия = РЗ.ВремяУчастия; Строка.ВремяУчастия2 = РЗ.ВремяУчастия2; Рег.Записать(); КонецЦикла; КонецЕсли; |
|||
1
ТелепатБот
гуру
30.09.09
✎
14:25
|
||||
2
dragonIMV
30.09.09
✎
14:28
|
по поводу того что регистр в цикле записывается и открывается не обращайте внимания...потом нормально все сделаю)))
|
|||
3
73
30.09.09
✎
14:31
|
||||
4
dragonIMV
30.09.09
✎
14:33
|
т.е. как мне надо чтобы копировался например элемент Номенклатуры и чтоб в новом объетке создались точто такие же штрих кода как у объекта копирования..
|
|||
5
Andry888
30.09.09
✎
14:36
|
(0) может отказаться от стандартного копирования...программно копируй, записывай, открывай форму ну и т.п.
|
|||
6
dragonIMV
30.09.09
✎
14:41
|
(5) а как отказаться от стандартного копирования?
я что-то не вижу нигде процедуры копирования, в самом модуле например номенклатуры... как мне изначально перехватить нажатие кнопки Копировать? если подпиской на событие, то как отменить стандатное открывание формы? |
|||
7
Andry888
30.09.09
✎
14:45
|
(6) Не делаешь свою кнопку копирования, и в процедуре обработки нажатия используешь метод Копировать() (ЭтотОбъект.Копировать()), который возвращает новый объект... а дальше верти им как хочешь
|
|||
8
dragonIMV
30.09.09
✎
14:53
|
ладно, так и буду делать
|
|||
9
dragonIMV
30.09.09
✎
14:57
|
сеньк за помощь кстати
|
|||
10
toys
30.09.09
✎
15:01
|
(0) смотри ПолучитьСсылкунового() и параметр "СтандартнаяОбработка" события копирования
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |