v7: Копирование всех реквизитов из старого документа во вновьсозданный #772502


#0 by Enlighted
Добрый вечер волшебники. Вопрос собственно такой: Программно Создаётся документ, надо в него скопировать абсолютно все реквизиты включая табличные из (текущего/другого) документа того же типа. Есть ли способ сделать это автоматом, или обязательно надо приравнивать каждый реквизит нового документа к аналогичному реквизиту старого документа?
#1 by Jaap Vduul
Реквизиты шапки можно через метаданные перечислить и скопировать через ПолучитьАтрибут/УстановитьАтрибут. Табличную часть проще всего через Выгрузить/ЗагрузитьТабличнуюЧасть.
#2 by Enlighted
Если я верно понял, то получить атрибут работает только с одним конкретным атрибутом, то-есть все равно придётся перечислять все атрибуты по одному.
#3 by Вуглускр1991
Сериализуй объект в джейсон и поменяй там УИД, потом получи объект обратно.
#4 by Злопчинский
не сношай мозг Открой типовую тис и найди в ней процедуру СкопироватьРеквизитыШапки А тч копируется тремя операторами
#5 by Bigbro
зачем перечислять можно обойти циклом через метаданные - будет работать универсально.
#6 by Enlighted
К сожалению это не типовая тис, такой процедуры не значится. Конфигурация судя по всему банковская или ломбардная. С ампутированными ногами и велосипедом вместо одной из них и костылём вместо другой. Посему решение вижу только в использовании родных методов платформы а не конфигурации. А вот как тч скопировать тремя операторами это уже интересно, сейчас поищу.
#7 by Enlighted
Нашёл такое решение для ТЧ НовыйЗБ.ТабличнаяЧасть.Загрузить(ТекущийЗБ.ТабличнаяЧасть.Выгрузить) однако ошибка: Поле агрегатного объекта не обнаружено (ТабличнаяЧасть)
#8 by Mikeware
Открой для себя Синтакс-помощник....
#9 by 73с
а кто не даёт позаимствовать идею из типовой?
#10 by Mikeware
отсутсвие типовой :-)
#11 by Enlighted
Типовую надо искать/качать/покупать вот в чем бида.
#12 by Enlighted
Хорошо решение для ТЧ с помощью тычков прикладом в спину с вашей стороны нашёл: Теперь подобное решение для остальных реквизитов было бы просто замечато.
#13 by Bigbro
вот тут справка по работе с метаданными в 77
#14 by Bigbro
перебор циклом через общие реквизиты, затем через реквизиты шапки документа. не забыть про тип и вид для неопределенных типов.
#15 by HawkEye
способ есть! два цикла + загрузить/выгрузить ТЧ
#16 by Enlighted
так назрел вопрос: "общие реквизиты документа" чем отличаются от "реквизитов шапки"?
#17 by Mikeware
Тем, что они общие для всех документов. в дереве метаданных они находятся в другом месте. физически общие реквизиты без отбора почти ничем.  Общие реквизиты с отбором сидят в тапблице 1сджорн.
#18 by 73с
общие относятся ко ВСЕМ документам и их не будет в переборе реквизитов шапки конкретного вида документа через метаданные
#19 by HawkEye
для этого и нужен второй цикл...
#20 by los_hooliganos
Document newDoc = oldDoc.clone
#21 by FIXXXL
а в 7-ке нет у документа метода Скопировать?
#22 by Enlighted
{Документ.ВозвратСсуды.Форма.Модуль}: Поле агрегатного объекта не обнаружено (clone) Не нашел такого
#23 by HawkEye
советую прислушаться к ...
#24 by HawkEye
Скопировать - нет.
#25 by Enlighted
в синтаксис помощнике как раз таки и не нашел метод Скопировать, clone в синтаксис помощьнике как метод документа тоже отсутствует.
#26 by HawkEye
если ты их там не нашел, зачем тогда рожал ?
#27 by aka AMIGO
Вот тебе процедура из типовой ТиС, если поможет: Процедура СкопироватьРеквизитыШапки(ДокОткуда, ДокКуда)
#28 by aka AMIGO
+27, а да! забыл про старт! типа так:
#29 by Enlighted
Ну это не тонкий намёк уже и даже не толстый :). Однако благодарю сейчас буду мастырить.
#30 by Enlighted
Блин вроде с реквизитами разобрался, теперь ТЧ. при тесте этого: 1с вылетает с ошибкой. Если закомментить последнюю строчку то не вылетает.
#31 by aka AMIGO
реквизиты все совпадают?
#32 by Enlighted
Почему бы документы одного типа, НовыйЗБ вообще пустой.
#34 by aka AMIGO
ммм.. отбой моему вопросу..
#35 by vladko
а как хоть вылетает? по-подробнее чуть...
#36 by Enlighted
Прекращена работа программы "1С:V7 starter program (for SQL)" Windows может произвести поиск способа устранения этой ошибки в интернете... Сигнатура проблемы:   Имя события проблемы:    APPCRASH   Версия приложения:    7.70.0.18   Отметка времени приложения:    3ba747d9   Имя модуля с ошибкой:    BkEnd.dll   Версия модуля с ошибкой:    7.70.0.27   Отметка времени модуля с ошибкой:    4573f811   Дополнительные сведения 1:    0a9e   Дополнительные сведения 2:    0a9e372d3b4ad19135b953a78882e789   Дополнительные сведения 3:    0a9e   Дополнительные сведения 4:    0a9e372d3b4ad19135b953a78882e789 Ознакомьтесь с заявлением о конфиденциальности в Интернете:    Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:   C:Windowssystem32 u-RUerofflps.txt
#37 by Mikeware
хосспадя. ну сделай через обход метаданных. Там добавить-то три строчки...
#38 by aleks_default
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>) Скопировать (Copy) Синтаксис: Скопировать Возвращаемое значение: Тип: ДокументОбъект. Описание: Создает новый документ копированием существующего. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Использование метода не приводит к записи созданного объекта в базу данных. Пример: См. также: ДокументОбъект, событие ПриКопировании
#39 by Mikeware
Это 7.7 причем чистая.
#40 by aleks_default
А че, там такого нет? Как так? Восьмерка же сырая еще, а семерка уже обкатанная.
#41 by Mikeware
ну, у меня в семерке такого можно сделать, не проблема. а вот у него нельзя. да и ненужно... Хватает имеющихся методов
#42 by Enlighted
НовыйЗБ = ТекущийЗБ.Скопировать; {Документ.ВозвратСсуды.Форма.Модуль}: Поле агрегатного объекта не обнаружено (Скопировать)
#43 by aka AMIGO
у тебя не установлен openconf? Если нет - рекомендую, в нём после точки выскакивает список допустимых параметров/аргументов, по крайней мере увидишь, можно или нет подставлять твоё ..Скопировать
#44 by aleks_default
А народ жалуется, что в восьмерке кода писать больше приходится...   Переходи в нашу веру, чувак.
#45 by aka AMIGO
+  "XBASE.Методы.Скопировать" - в синтакспомощнике. Никак этот метод не подходит для копирования документов или еще чего.
#46 by aleks_default
Во имя СКД, Клиента и Сервера!
#47 by Builder
18 релиз ???? Ну вы блин даете.... (с)
#48 by Mikeware
зато у него установлен 18 релиз...
#49 by aka AMIGO
Да, грустно это всё..
#50 by Builder
И эта, поставь 27 релиз обязательно!
#51 by Builder
+ к Реквизиты там попутал. ТекущийЗБ.ВыгрузитьТабличнуюЧасть(ТабличнаяЧастьНаЭкспорт); заменить на И вот этот код твой лишний, можно работать прямо с реквизитом "Основание", если ты его не меняешь: ТекущийЗБ = СоздатьОбъект("Документ.ЗалоговыйБилет");   ТекущийЗБ.НайтиДокумент(Основание);
#52 by Enlighted
сейчас качну 27 релиз платформы, попробую.
#53 by aka AMIGO
Загляни в свою почту.
#54 by Злопчинский
тупой, да? читать не умеешь? я про ТВОЮ нетиповую конфигурацию не говорил. еще раз: не сношай мозг Открой типовую тис и найди в ней процедуру СкопироватьРеквизитыШапки
#55 by aka AMIGO
Друже, у него, похоже нет типовой
#56 by aka AMIGO
+ в личке "Бишкек, Кыргызстан", есть там франчайзи, или нет - не знаю, но, думаю точно есть. Кто-то поставил 1С на комп, и сказал: "работайте, другого ничего нет"
#57 by Злопчинский
оказываю услуги по семерке. удаленно. народ не жаловался. оказывал в тч и с среднеазиатские. лишь бы коннект был. ихние типовые похожи на россиняские либо с изменениячми либо на основе старых релизов/редакций.
#58 by Злопчинский
#59 by Enlighted
Всех благодарю за участие, процедура помогла даже слишком, оказалось всех полей более чем нужно. Всеравно перенос данных пришлось организовывать простым присвоением. Но с ТЧ всё отлично, на релизе 27 работает без ошибок. Процедурку изучил, приму к сведению в следующий раз.
#60 by breezee
Почему "СоздатьОбъект", а не "тз = Новый Таблица значений". Есть же специальные функции...
#61 by ДенисЧ
Потому что 77
#62 by Enlighted
Потому что бюджет ограничен :)
#63 by Enlighted
На 1с-ника.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям