Копирование внешних отчетов (обработок)

При запуске(открытии) внешних отчетов или обработок платформа 1С идентифицирует данный файл и определяет наличие сохраненных настроек для пользователя.
Многие программисты берут за основу один внешний отчет(шаблон),  копируют его средствами Windows и дорабатывают копию под необходимые требования.
Как правильно скопировать отчет, чтобы 1С хранила значения пользователя для каждого отчета.

Во многих компаниях стараются не снимать с поддержки конфигурации 1С, чтобы с минимумом затрат при обновлении поддерживать в актуальном состоянии базы. Программисты стараются решить вопросы внешними обработками и отчетами, которые можно загрузить в справочник «Внешние обработки» и пользователи активно их используют.

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

Многие программисты берут за основу один внешний отчет (шаблон), копируют его средствами Windows(например используя проводник Windows), открывают скопированный файл в конфигураторе и дорабатывают копию под необходимые требования. При использовании пользователями обеих внешних отчетов (обработок), сохраненные значения используются как в шаблоне так и в копии, потому что у обоих файлов одинаковый UID.

Как правильно скопировать отчет, чтобы 1С хранила отдельно значения пользователя для каждого отчета (обработки)?


 

Основная тонкость в том, что делать копию внешнего отчета (обработки) нужно правильно средствами 1С, а не средствами Windows.

Открываем в конфигураторе отчет (обработку) и сохраняем только через пункт меню «Файл — Сохранить копию …».

Только в таком случае 1С генерирует уникальный UID для отчета, для которого потом платформа сохраняет информацию о настройках пользователя.

И еще, будьте внимательны, когда вы сохраните копию, у Вас останется в конфигураторе открыт оригинал отчета (обработки), а не копия.

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

P.S. дополнение для пользователей (рано плюсанувших)… (30.11.2013)

Для того, чтобы открывались  разные формы для однотипных отчетов (созданных копированием)

нужно в копии отчета (обработки) скопировать основную форму и вставить в этот же отчет (обработку).

Потом в обработке выбрать форму по умолчанию новую вставленную форму (эта форма получит новый идентификатор при вставке).

А старую форму при этом нужно удалить. Вот и все, что нужно сделать для того, чтобы формы нормально открывались в отчетах  (обработках) дубликатах.

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

Всем успехов в разработке !

 

31 Comments

  1. Tahallus

    (1) Spektr,

    Как копируют средствами Windows отчет?

    Ну ясно что имелось ввиду что береться внешний отчет и просто копируется как обычный файл.

    Как может быть одинаковый UID у двух отчетов, даже если второй создан копированием?

    оказывается бывает, все зависит от метода копирования

    Пункт меню «Файл — Сохранить копию …» доступен только для копирования модуля отчета (формы отчета).

    а перед тем как писать вы пробовали это воспроизвести? у меня все доступно как и у автора. Что я делаю не так?

    Reply
  2. Гость

    Пользовался для борьбы с этой проблемой переименованием. Не знал, что проблема в UID. Спасибо.

    Reply
  3. Amras

    Всегда так работал 🙂 Открытия не увидел, но может кому-то поможет.

    П.С.

    Кстати, я и не задумывался о попытке копирования отчета как файла в среде Windows. Сколько работаю с 8-кой всегда через 1С обработки/отчеты сохраняю.

    (1) Spektr,

    Пункт меню «Файл — Сохранить копию …» доступен только для копирования модуля отчета (формы отчета).

    А это полный бред.

    Reply
  4. Spektr

    (2) Tahallus,

    1. В публикаци нигде не встречается ссылки на «внешние» отчеты. Поэтому я считаю, что разговор идет о отчетах внутренних (в Конфигураторе).

    2. По подробнее о методе копирования в контексте публикации можно?

    3. Если это внешний отчет, то пункт меню «Файл — Сохранить копию …» для отчета дотупен. А если встроенный?

    Суть публикаци о строчке кода типа :»ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_ВнешняяОбработка_АктСписания»», который необходимо изменить при копировании?!

    Reply
  5. Spektr

    (4) Amras, А попробуйте. Откройте встроенный отчет. Пункт меню «Файл — Сохранить копию …» будет доступен?

    Reply
  6. nikolega

    (5) Spektr, Внес изменения в статью.

    При копировании встроенной обработки 1С автоматически генерирует UID для нового объекта конфигурации.

    Сохранение копии для встроенной обработки недоступно.

    Встроенную обработку можно сохранить во внешний файл (выбрав пункт контекстного меню «Сохранить как внешнюю обработку, отчет …»).

    Суть публикации — о том, почему в разных внешних отчетах (обработках) используются одни и те же сохраненные пользователем значения (в форме), и как этого избежать.

    Reply
  7. Amras

    (6)

    Встроенные отчеты сохраняются путем выгрузки из конфигурации (сохранить как внешний отчет). А разговор тут шел о сохранении внешнего отчета, а не отчета конфигурации.

    Reply
  8. buval

    Спасибо автору. Сам наступал на эти грабли не один раз. Теперь возьму на вооружение

    Reply
  9. Akuji

    рано плюсанул( что то не проходит… сохранил внешний отчет по команде сохранить копию, но оба отчета (оригинал и копия) все равно не открываются одновременно

    Reply
  10. Sibiryak

    (10) Аналогично.

    Спас код в разделе основной программы:

    ЭтаФорма.КлючУникальности = Новый УникальныйИдентификатор; — формы стали открываться в разных окнах.

    Настройки все равно применялись в обоим отчетам.

    В копии отчета скопировал форму, сделал ее основной. Настройки стали сохраняться отдельно для основного отчета и его копии.

    Reply
  11. chmv

    Сложно.

    Reply
  12. mr.Kot

    Статья нормальная. Сейчас столкнулся с этой проблемой, по первой же ссылке в яндексе вышел на статью и за минуту понял в чём дело, поэтому автору спасибо.

    Reply
  13. mr.Kot

    (10) Блин, я тоже рано плюсанул 🙂

    Reply
  14. mr.Kot

    (11) Воспользовался тем же приёмом.

    Reply
  15. nikolega

    (14)(10) Дописал статью.

    Reply
  16. mymyka

    (0)Все делается проще. Копируем обработку и модуле формы в первой попавшейся процедуре пишем а = «041220130922»(Текущая дата и время). Все, у обработки уникальный ид. Вряд ли у вас будут 2 идентичные обработки, созданные с разницей менее, чем в 1 мин.

    Reply
  17. nikolega

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

    Reply
  18. AlexO

    (0)

    Для того, чтобы открывались разные формы для однотипных отчетов (созданных копированием)

    нужно в копии отчета (обработки) скопировать основную форму и вставить в этот же отчет (обработку).

    Вот именно. А каким образом — через «копию» или сохранить как.. — уже без разницы.

    Главное — сменить ID (программно) или заменой формы.

    Reply
  19. AlexO

    (16)

    Дописал статью.

    у вас не статью нужно дописывать, а вооще статья не дает ответа на поставленный вопрос — как отсоединить один отчет от другого.

    Т.е. варианты (11) — не «UPD», а единственно возможные, начиная с 8.2 какого-то релиза.

    Reply
  20. AlexO

    (17)

    Все, у обработки уникальный ид

    с чего бы это? Каикм образом переменая «a» меняет ключ уникальности, заменяя команды:

    ЭтаФорма.КлючУникальности = Новый УникальныйИдентификатор; 
    Reply
  21. gsvserg

    Спасибо. Копирование формы помогает.

    Reply
  22. Flyerink

    Спасибо и респект автору, что не поленился и описал решение!

    У меня есть шаблон СКД- шного отчета, в котором в основном меняю запрос и настройку, а все остальное (параметры отборы) уже реализованы на форме…

    Теперь его клонирую без проблем ))

    Reply
  23. e-ilyich

    а если внешние отчеты сделаны на СКД как решить проблему тоже не открываются одновременно копии ? При этом основной формы нет вообще.

    Решилось так: создал форму )))

    Reply
  24. AlexO

    (23) Flyerink,

    Теперь его клонирую без проблем

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

    Reply
  25. din107

    Добрый день!

    Столкнулся точно с такой же проблемой.

    Попробовал сейчас реализовать вышеуказанные советы (пробовал сохранить форму через «Сохранить копию…», создавал копированием форму и назначал её основной, вставлял внутрь конфигурации и пытался выгрузить) и ничего не помогло. Подскажите, есть ли на данный момент какие-нибудь ещё решения?

    Reply
  26. vikad

    (26) din107, как вариант, для отчетов на СКД необходимо выгрузить схему компоновки данных в xml, и выполнить обратную загрузку. Идентификатор схемы обновится.

    Reply
  27. din107

    Для схемы СКД я с Вами соглашусь, только вот вопрос остается повисшим, что делать с формами отчетов, неужели их вручную необходимо только копировать (в плане переносить реквизиты и заново перезаполнять события)?

    Reply
  28. j3d

    Спасибо!

    Если почитать желтую книжку то конечно найдешь где собачка порылась.

    Но вот так в гугле одним запросом удобнее гораздо.

    Плюсую

    Reply
  29. svm_post

    Все значительно проще.

    В обработчике формы ПередОткрытием надо задать отличающийся Ключ Уникальности

    Например:

    КлючУникальности = ИспользуемоеИмяФайла + Метаданные().Синоним + Метаданные().Комментарий;

    В это случае можно даже одну и туже обработку/отчет из разных каталогов запустить.

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

    Например:

    КлючУникальности = ИспользуемоеИмяФайла + ТекущаяДата();

    Reply
  30. XelOla

    Попробовала все.

    Копирование путем 1С.

    выгрузку схемы через Предприятие и в режиме Конфигуратора.

    Удалить, вести заново 2 внешних отчета.

    создать настройку одному отчету — Основная, второму Основная2 и указать каждому свою настройку при открытии.

    Переименовала схему СКД (в одном)»ОсновнаяСхемаКомпоновкиДанных1″

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

    ЖЕСТЬ!!!

    Reply
  31. XelOla

    Как победила? Файл — новый — отчет и скопировала в новый скд и схему, сохранить, перенастроить в пользовательском режиме.

    Reply

Leave a Comment

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