УФ + БСП: копирование строк табличных частей (даже между разными инфобазами)



Внешняя обработка для конфигураций на БСП, работает на управляемых формах (включая Такси) в толстом клиенте, тонком клиенте и веб-клиенте

Общее описание

Внешняя обработка для передачи (копирования и вставки) строк табличных частей между формами как в пределах одной инфобазы, так и между разными инфобазами.

Для передачи используется буфер обмена той операционной системы, в которой запущен клиент 1С.

Внешние компоненты (ВК) не используются. Для работы с буфером обмена используется обращение к COM-объекту из свойства поля HTML-документа ParentWindow (методы SetData и GetData свойства ClipboardData).

Подключение обработки к инфобазе

Обработка регистрируется в инфобазе как дополнительная обработка.

Чтобы добавить внешнюю обработку в инфобазу, нужно открыть раздел "Администрирование" и перейти к пункту "Печатные формы, отчеты и обработки":

 

При необходимости установить флажок "Дополнительные отчеты и обработки" и нажать рядом с флажком гиперссылку "Дополнительные отчеты и обработки".

В открывшейся форме вызвать команду "Создать" и указать файл обработки. Галку "Показывать в списках" можно снять.

Использование обработки

Чтобы скопировать строки ТЧ в буфер обмена, нужно их выделить и вызвать команду "Скопировать":

Обратите внимание, что в разных версиях подсистемы БСП расположение команд дополнительных обработок может быть как в командной панели табличной части формы, так и в командной панели самой формы (т.е. в шапке).

Чтобы вставить строки ТЧ из буфера обмена, необходимо поставить фокус (щелкнуть мышкой) в желаемую табичную часть и вызвать команду "Вставить":

Особенности и ограничения

Ссылочные объекты ищутся по GUID’ам.

При вставке новые строки добавляются в конец таблицы (старые не затираются).

Таблица формы должна находиться в фокусе при вызове команд копирования и вставки.

Объект перед копированием или вставкой строк ТЧ должен быть записан в информационной базе (если это не так, то пользователю задается соответствующий вопрос).

Обработка работает только с теми таблицами на формах:

  • которые связаны с реквизитом управляемой формы "Объект.<ИмяТабличнойЧасти>" или "<ИмяТабличнойЧасти>"
  • у которых свойство "Имя" равно имени табличной части объекта

Вместо заключения

Если инструмент привлечет достаточно внимания, то он будет дорабатываться и развиваться. Пишите в комментариях ваши предложения по его улучшению.

При обнаружении ошибок в работе инструмента просьба писать в комментариях, указывая:

  • операционную систему
  • версию платформы 1С
  • версию конфигурации инфобазы
  • версию БСП (смотреть в общем модуле ОбновлениеИнформационнойБазыБСП в процедуре ПриДобавленииПодсистемы())

30 Comments

  1. retif

    Ошибка в документе ЗаказПоставщику

    25.03.2016 12:03:32

    {Форма.Форма.Форма(137)}: Значение не является значением объектного типа (ИмяТипа)

    ИмяТипа = XMLТипЗнч(ЗначениеКолонки).ИмяТипа;

    ———————————————————————————

    Управление торговлей, редакция 11.1 (11.1.9.51)1С:Предприятие 8.3 (8.3.7.1949)

    Причем в заказе Клиента и Поступление Товаров- все работает

    Reply
  2. retif

    🙁 в заказе поставщика не копирует «назначение«,

    Подразделение получатель, списать на раходы и аналитика расходов — заполняются не так как были в оригинале.

    Две первые строчки скопировал и вставил четвертой и пятой строками

    Скриншот прилагается

    Reply
  3. AKV77

    Удобный механизм. Спасибо, работает.

    Один для меня существенный нюанс — при копировании и затем вставке не правильно переносится информация о характеристике номенклатуры в случае ее использования — Пример копирую в буфер строку содержащую номенклатуру с характеристикой, вставляется только номенклатура, а характеристика — нет (якобы не используется хар-ка). УТ 11.1 проверял на нескольких версиях.

    Reply
  4. tormozit

    Автор забыл указать еще одно требование «копируются только значения полей, имена которых соответствуют шаблону <ИмяТЧ><ИмяРеквизитаТЧ>». Думаю в (6) именно поэтому не копируется.

    Reply
  5. AKV77

    (8) СПАСИБО. Проверил — характеристики переносятся корректно.

    Reply
  6. retif

    (5) большое спасибо!!!

    Reply
  7. vlastapov

    Да, между разными базами очень впечатляет, спасибо.

    Reply
  8. retif

    (1) просьба доработать для документа «Установка цен Номенклатуры»

    мне нужно скопировать из одного документа в другой,

    При копировании ошибка- «Поле объекта не обнаружено (ДеревоЦен)»

    Reply
  9. Cyberhawk

    (12) Обработка предназначена только для работы с табличными частями объектов .

    Доработка текущей обработки под работу с деревьями значений не планируется.

    Reply
  10. wig8

    Добрый день!

    Конфигурация БП 3.0 (3.0.43.173) и УНФ (1.6.3.11) обработка не работает. Выводит сообщения при переносе из БП в УНФ «Поле объекта не обнаружено (Хозрасчетный)», из УНФ в БП «Поле объекта не обнаружено (ХарактеристикиНоменклатуры)».

    Reply
  11. Cyberhawk

    (15) wig8, исправлено в 1.0.0.5

    Reply
  12. German_Tagil

    у меня не много по другому был реализован вариант копирования строк — http://infostart.ru/public/460032/

    при этом писал если между документами то писал во временное хранилище

    если между системами — то в файл

    но никому не показалось интересным .

    Делали инвентаризацию шибко пригодилась гонять туда сюда номенклатуру

    Reply
  13. Zexes

    Просто красавец, дико спас.

    Reply
  14. Zexes

    Такой вопрос, на двух терминальных серверах не работает, не пойму почему. Просто ничего не копирует, может быть связанно из-за каких-то настроек ie?

    Reply
  15. Cyberhawk

    (19) возможно, буфер обмена в терминале запрещен — проверь

    Reply
  16. Zexes

    (20),первым делом проверил, все копирует без проблем =( server 2012 r2

    Reply
  17. Cyberhawk

    (21) Тогда да — дело может быть в определенных настройках политики безопасности. Попробую реализовать альтернативный вариант работы с буфером обмена.

    Reply
  18. alexfolk

    Ошибка при копировании между разными базами, не переносится номенклатура <Объект не найден> (81:969a00235453ced911e71f5b94452f75).

    ОС Windows 10 Home

    1С:Предприятие 8.3 (8.3.9.2170)

    Розница, редакция 2.2 (2.2.5.27)

    версия БСП 2.3.4.45

    Reply
  19. Cyberhawk

    (23) Почему считаешь, что номнеклатура в твоем случае должна переноситься?

    Рекомендую внимательно ознакомиться с текстом публикации.

    Reply
  20. alexfolk

    А что не так с моим случаем? Где написано в тексте публикации, что в Рознице 2.2 в документе списание товаров НОМЕНКЛАТУРА не будет переноситься?

    Reply
  21. Cyberhawk

    (25) Весьма странный вопрос. Вроде очевидно, что конкретно про какую-то конфигурацию и/или ее документ нигде в тексте не написано.

    Рекомендую ознакомиться с текстом публикации на предмет ограничений в реализованной функциональности.

    Reply
  22. anton448

    Спасибо, отличная обработка! 🙂

    Reply
  23. klaus38

    Серию перенесет? Штатный механизм этого не делает.

    Reply
  24. Cyberhawk

    (28) У меня в, например, ЗУПе никаких серий нет, так что, видимо, тебе придется проверить это самостоятельно

    Reply
  25. German_Tagil

    Благодарю!!! Надо было из табличной части Материалы в эксплуатации Спецодежда

    перенести в Спецоснастку

    добавил в Спецоснастку физлицо в расширении

    и ву а ля один к одному все скопировалось

    Reply
  26. klaus38

    Все переносит и серии и колонки с доп.реквизитами. УТ11.7. Спасибо.

    Reply
  27. ProkopyukIN

    на платформе 8.3.15 перестало работать. выдает ошибку «Значение не является значением объектного типа (ClipboardData)»

    Reply
  28. Cyberhawk

    (32) Скорее всего перестало работать, начиная с 8.3.14.1565, в связи с переориентированием платформы с Internet Explorer на WebKit.

    Посмотрю, что можно сделать, и отпишусь отдельным комментарием.

    Reply
  29. ProkopyukIN

    я просто с 13 сразу на 15 прыгнул. 14 даже ни разу не ставил.

    Reply
  30. Cyberhawk

    (34) Ошибка исправлена в версии 1.0.0.6, файл обновлен.

    Тебе доступно его повторное скачивание (без повторной траты стартмани)?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *