gifts2017

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

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

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

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

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

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

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


 

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

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

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

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

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

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

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

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

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

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

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

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

 

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

Суть публикации - о том, почему в разных внешних отчетах (обработках) используются одни и те же сохраненные пользователем значения (в форме), и как этого избежать.
Flyerink; +1 Ответить
8. Андрей А. (Amras) 23.03.13 00:34
(6)
Встроенные отчеты сохраняются путем выгрузки из конфигурации (сохранить как внешний отчет). А разговор тут шел о сохранении внешнего отчета, а не отчета конфигурации.
9. Валерий Буданов (buval) 28.03.13 23:40
Спасибо автору. Сам наступал на эти грабли не один раз. Теперь возьму на вооружение
10. Ak Uji (Akuji) 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) 04.12.13 09:19
(14)(10) Дописал статью.
Прикрепленные файлы:
17. 12e3 1sd (mymyka) 04.12.13 09:24
(0)Все делается проще. Копируем обработку и модуле формы в первой попавшейся процедуре пишем а = "041220130922"(Текущая дата и время). Все, у обработки уникальный ид. Вряд ли у вас будут 2 идентичные обработки, созданные с разницей менее, чем в 1 мин.
18. Олег Никоноров (nikolega) 04.12.13 09:34
(17) mymyka, проблема еще в том, что у формы ид останется старый и сохраненные значения восстановятся или запишутся для ид формы.
19. Алекс Ю (AlexO) 29.10.14 15:40
(0)
Для того, чтобы открывались разные формы для однотипных отчетов (созданных копированием)
нужно в копии отчета (обработки) скопировать основную форму и вставить в этот же отчет (обработку).

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

у вас не статью нужно дописывать, а вооще статья не дает ответа на поставленный вопрос - как отсоединить один отчет от другого.
Т.е. варианты (11) - не "UPD", а единственно возможные, начиная с 8.2 какого-то релиза.
21. Алекс Ю (AlexO) 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) 22.10.15 13:22
а если внешние отчеты сделаны на СКД как решить проблему тоже не открываются одновременно копии ? При этом основной формы нет вообще.
Решилось так: создал форму )))
25. Алекс Ю (AlexO) 22.10.15 15:03
(23) Flyerink,
Теперь его клонирую без проблем
Именно что клонируете. А теперь попробуйте в одной базе запустить оба клона.
26. Денис (din107) 13.12.15 14:59
Добрый день!

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

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