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

Опубликовал Олег Никоноров (nikolega) в раздел Программирование - Инструментарий

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

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

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

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

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


 

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

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

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

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

---------------------------------------------------------------------------------------------------------------

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

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

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

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

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

---------------------------------------------

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

 

См. также

Комментарии
1. Spektr Тунда (Spektr) 373 20.03.13 23:04 Сейчас в теме
После прочтения публикации у меня возникло много вопросов, например:
Многие программисты берут за основу один отчет(шаблон), копируют его средствами Windows и дорабатывают копию под необходимые требования.

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

Как может быть одинаковый UID у двух отчетов, даже если второй создан копированием?
Открываем в конфигураторе отчет (обработку) и сохраняем только через пункт меню "Файл - Сохранить копию ...".

Пункт меню "Файл - Сохранить копию ..." доступен только для копирования модуля отчета (формы отчета).
2. Вова Вишин (Tahallus) 420 21.03.13 01:03 Сейчас в теме
(1) Spektr,
Как копируют средствами Windows отчет?

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

оказывается бывает, все зависит от метода копирования
Пункт меню "Файл - Сохранить копию ..." доступен только для копирования модуля отчета (формы отчета).
а перед тем как писать вы пробовали это воспроизвести? у меня все доступно как и у автора. Что я делаю не так?
3. Гость 21.03.13 04:35 Сейчас в теме
Пользовался для борьбы с этой проблемой переименованием. Не знал, что проблема в UID. Спасибо.
4. Андрей А. (Amras) 49 21.03.13 08:35 Сейчас в теме
Всегда так работал :) Открытия не увидел, но может кому-то поможет.

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

(1) Spektr,
Пункт меню "Файл - Сохранить копию ..." доступен только для копирования модуля отчета (формы отчета).

А это полный бред.
5. Spektr Тунда (Spektr) 373 21.03.13 08:41 Сейчас в теме
(2) Tahallus,
1. В публикаци нигде не встречается ссылки на "внешние" отчеты. Поэтому я считаю, что разговор идет о отчетах внутренних (в Конфигураторе).
2. По подробнее о методе копирования в контексте публикации можно?
3. Если это внешний отчет, то пункт меню "Файл - Сохранить копию ..." для отчета дотупен. А если встроенный?

Суть публикаци о строчке кода типа :"ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВнешняяОбработка_АктСписания"", который необходимо изменить при копировании?!
6. Spektr Тунда (Spektr) 373 21.03.13 08:54 Сейчас в теме
(4) Amras, А попробуйте. Откройте встроенный отчет. Пункт меню "Файл - Сохранить копию ..." будет доступен?
7. Олег Никоноров (nikolega) 142 21.03.13 12:12 Сейчас в теме
(5) Spektr, Внес изменения в статью.

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

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

Суть публикации - о том, почему в разных внешних отчетах (обработках) используются одни и те же сохраненные пользователем значения (в форме), и как этого избежать.
Flyerink; +1 Ответить
8. Андрей А. (Amras) 49 23.03.13 00:34 Сейчас в теме
(6)
Встроенные отчеты сохраняются путем выгрузки из конфигурации (сохранить как внешний отчет). А разговор тут шел о сохранении внешнего отчета, а не отчета конфигурации.
9. Валерий Буданов (buval) 57 28.03.13 23:40 Сейчас в теме
Спасибо автору. Сам наступал на эти грабли не один раз. Теперь возьму на вооружение
10. Ak Uji (Akuji) 5 22.07.13 11:51 Сейчас в теме
рано плюсанул( что то не проходит... сохранил внешний отчет по команде сохранить копию, но оба отчета (оригинал и копия) все равно не открываются одновременно
11. Sibiryak (Sibiryak) 25.07.13 06:45 Сейчас в теме
(10) Аналогично.
Спас код в разделе основной программы:
ЭтаФорма.КлючУникальности = Новый УникальныйИдентификатор; - формы стали открываться в разных окнах.
Настройки все равно применялись в обоим отчетам.
В копии отчета скопировал форму, сделал ее основной. Настройки стали сохраняться отдельно для основного отчета и его копии.
12. Марина Чирина (chmv) 25.07.13 08:55 Сейчас в теме
13. Владимир Кузнецов (mr.Kot) 30.11.13 15:51 Сейчас в теме
Статья нормальная. Сейчас столкнулся с этой проблемой, по первой же ссылке в яндексе вышел на статью и за минуту понял в чём дело, поэтому автору спасибо.
14. Владимир Кузнецов (mr.Kot) 30.11.13 19:01 Сейчас в теме
(10) Блин, я тоже рано плюсанул :)
15. Владимир Кузнецов (mr.Kot) 30.11.13 20:03 Сейчас в теме
(11) Воспользовался тем же приёмом.
16. Олег Никоноров (nikolega) 142 04.12.13 09:19 Сейчас в теме
(14)(10) Дописал статью.
Прикрепленные файлы:
17. 12e3 1sd (mymyka) 04.12.13 09:24 Сейчас в теме
(0)Все делается проще. Копируем обработку и модуле формы в первой попавшейся процедуре пишем а = "041220130922"(Текущая дата и время). Все, у обработки уникальный ид. Вряд ли у вас будут 2 идентичные обработки, созданные с разницей менее, чем в 1 мин.
18. Олег Никоноров (nikolega) 142 04.12.13 09:34 Сейчас в теме
(17) mymyka, проблема еще в том, что у формы ид останется старый и сохраненные значения восстановятся или запишутся для ид формы.
19. Алекс Ю (AlexO) 115 29.10.14 15:40 Сейчас в теме
(0)
Для того, чтобы открывались разные формы для однотипных отчетов (созданных копированием)
нужно в копии отчета (обработки) скопировать основную форму и вставить в этот же отчет (обработку).

Вот именно. А каким образом - через "копию" или сохранить как.. - уже без разницы.
Главное - сменить ID (программно) или заменой формы.
20. Алекс Ю (AlexO) 115 29.10.14 15:42 Сейчас в теме
(16)
Дописал статью.

у вас не статью нужно дописывать, а вооще статья не дает ответа на поставленный вопрос - как отсоединить один отчет от другого.
Т.е. варианты (11) - не "UPD", а единственно возможные, начиная с 8.2 какого-то релиза.
21. Алекс Ю (AlexO) 115 29.10.14 15:44 Сейчас в теме
(17)
Все, у обработки уникальный ид

с чего бы это? Каикм образом переменая "a" меняет ключ уникальности, заменяя команды:
ЭтаФорма.КлючУникальности = Новый УникальныйИдентификатор; 
22. Serg Goncharik (gsvserg) 10.03.15 12:16 Сейчас в теме
Спасибо. Копирование формы помогает.
23. Филипп Иванов (Flyerink) 20.10.15 14:55 Сейчас в теме
Спасибо и респект автору, что не поленился и описал решение!
У меня есть шаблон СКД- шного отчета, в котором в основном меняю запрос и настройку, а все остальное (параметры отборы) уже реализованы на форме...
Теперь его клонирую без проблем ))
24. Илья Едовин (e-ilyich) 6 22.10.15 13:22 Сейчас в теме
а если внешние отчеты сделаны на СКД как решить проблему тоже не открываются одновременно копии ? При этом основной формы нет вообще.
Решилось так: создал форму )))
25. Алекс Ю (AlexO) 115 22.10.15 15:03 Сейчас в теме
(23) Flyerink,
Теперь его клонирую без проблем
Именно что клонируете. А теперь попробуйте в одной базе запустить оба клона.
26. Денис (din107) 4 13.12.15 14:59 Сейчас в теме
Добрый день!

Столкнулся точно с такой же проблемой.
Попробовал сейчас реализовать вышеуказанные советы (пробовал сохранить форму через "Сохранить копию...", создавал копированием форму и назначал её основной, вставлял внутрь конфигурации и пытался выгрузить) и ничего не помогло. Подскажите, есть ли на данный момент какие-нибудь ещё решения?
27. Виктория Дорохина (vikad) 13.12.15 20:44 Сейчас в теме
(26) din107, как вариант, для отчетов на СКД необходимо выгрузить схему компоновки данных в xml, и выполнить обратную загрузку. Идентификатор схемы обновится.
28. Денис (din107) 4 13.12.15 22:15 Сейчас в теме
Для схемы СКД я с Вами соглашусь, только вот вопрос остается повисшим, что делать с формами отчетов, неужели их вручную необходимо только копировать (в плане переносить реквизиты и заново перезаполнять события)?
29. Джамал Абдусаламов (j3d) 30 19.04.16 09:29 Сейчас в теме
Спасибо!
Если почитать желтую книжку то конечно найдешь где собачка порылась.
Но вот так в гугле одним запросом удобнее гораздо.
Плюсую
30. Сергей Михайленко (svm_post) 31.08.16 08:48 Сейчас в теме
Все значительно проще.
В обработчике формы ПередОткрытием надо задать отличающийся Ключ Уникальности
Например:
КлючУникальности = ИспользуемоеИмяФайла + Метаданные().Синоним + Метаданные().Комментарий;

В это случае можно даже одну и туже обработку/отчет из разных каталогов запустить.
К сожалению запустить из одного каталога тот же файл не получится. Даже при задании совсем уникального ключа.
Например:
КлючУникальности = ИспользуемоеИмяФайла + ТекущаяДата();