Многие программисты берут за основу один внешний отчет(шаблон), копируют его средствами Windows и дорабатывают копию под необходимые требования.
Как правильно скопировать отчет, чтобы 1С хранила значения пользователя для каждого отчета.
Во многих компаниях стараются не снимать с поддержки конфигурации 1С, чтобы с минимумом затрат при обновлении поддерживать в актуальном состоянии базы. Программисты стараются решить вопросы внешними обработками и отчетами, которые можно загрузить в справочник «Внешние обработки» и пользователи активно их используют.
При запуске(открытии) внешних отчетов или обработок платформа 1С идентифицирует данный файл и определяет наличие сохраненных значений формы для пользователя, запустившего данный отчет.
Многие программисты берут за основу один внешний отчет (шаблон), копируют его средствами Windows(например используя проводник Windows), открывают скопированный файл в конфигураторе и дорабатывают копию под необходимые требования. При использовании пользователями обеих внешних отчетов (обработок), сохраненные значения используются как в шаблоне так и в копии, потому что у обоих файлов одинаковый UID.
Как правильно скопировать отчет, чтобы 1С хранила отдельно значения пользователя для каждого отчета (обработки)?
Основная тонкость в том, что делать копию внешнего отчета (обработки) нужно правильно средствами 1С, а не средствами Windows.
Открываем в конфигураторе отчет (обработку) и сохраняем только через пункт меню «Файл — Сохранить копию …».
Только в таком случае 1С генерирует уникальный UID для отчета, для которого потом платформа сохраняет информацию о настройках пользователя.
И еще, будьте внимательны, когда вы сохраните копию, у Вас останется в конфигураторе открыт оригинал отчета (обработки), а не копия.
—————————————————————————————————————
P.S. дополнение для пользователей (рано плюсанувших)… (30.11.2013)
Для того, чтобы открывались разные формы для однотипных отчетов (созданных копированием)
нужно в копии отчета (обработки) скопировать основную форму и вставить в этот же отчет (обработку).
Потом в обработке выбрать форму по умолчанию новую вставленную форму (эта форма получит новый идентификатор при вставке).
А старую форму при этом нужно удалить. Вот и все, что нужно сделать для того, чтобы формы нормально открывались в отчетах (обработках) дубликатах.
———————————————
Всем успехов в разработке !
(1) Spektr,
Ну ясно что имелось ввиду что береться внешний отчет и просто копируется как обычный файл.
оказывается бывает, все зависит от метода копирования
а перед тем как писать вы пробовали это воспроизвести? у меня все доступно как и у автора. Что я делаю не так?
Пользовался для борьбы с этой проблемой переименованием. Не знал, что проблема в UID. Спасибо.
Всегда так работал 🙂 Открытия не увидел, но может кому-то поможет.
П.С.
Кстати, я и не задумывался о попытке копирования отчета как файла в среде Windows. Сколько работаю с 8-кой всегда через 1С обработки/отчеты сохраняю.
(1) Spektr,
А это полный бред.
(2) Tahallus,
1. В публикаци нигде не встречается ссылки на «внешние» отчеты. Поэтому я считаю, что разговор идет о отчетах внутренних (в Конфигураторе).
2. По подробнее о методе копирования в контексте публикации можно?
3. Если это внешний отчет, то пункт меню «Файл — Сохранить копию …» для отчета дотупен. А если встроенный?
Суть публикаци о строчке кода типа :»ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_ВнешняяОбработка_АктСписания»», который необходимо изменить при копировании?!
(4) Amras, А попробуйте. Откройте встроенный отчет. Пункт меню «Файл — Сохранить копию …» будет доступен?
(5) Spektr, Внес изменения в статью.
При копировании встроенной обработки 1С автоматически генерирует UID для нового объекта конфигурации.
Сохранение копии для встроенной обработки недоступно.
Встроенную обработку можно сохранить во внешний файл (выбрав пункт контекстного меню «Сохранить как внешнюю обработку, отчет …»).
Суть публикации — о том, почему в разных внешних отчетах (обработках) используются одни и те же сохраненные пользователем значения (в форме), и как этого избежать.
(6)
Встроенные отчеты сохраняются путем выгрузки из конфигурации (сохранить как внешний отчет). А разговор тут шел о сохранении внешнего отчета, а не отчета конфигурации.
Спасибо автору. Сам наступал на эти грабли не один раз. Теперь возьму на вооружение
рано плюсанул( что то не проходит… сохранил внешний отчет по команде сохранить копию, но оба отчета (оригинал и копия) все равно не открываются одновременно
(10) Аналогично.
Спас код в разделе основной программы:
ЭтаФорма.КлючУникальности = Новый УникальныйИдентификатор; — формы стали открываться в разных окнах.
Настройки все равно применялись в обоим отчетам.
В копии отчета скопировал форму, сделал ее основной. Настройки стали сохраняться отдельно для основного отчета и его копии.
Сложно.
Статья нормальная. Сейчас столкнулся с этой проблемой, по первой же ссылке в яндексе вышел на статью и за минуту понял в чём дело, поэтому автору спасибо.
(10) Блин, я тоже рано плюсанул 🙂
(11) Воспользовался тем же приёмом.
(14)(10) Дописал статью.
(0)Все делается проще. Копируем обработку и модуле формы в первой попавшейся процедуре пишем а = «041220130922»(Текущая дата и время). Все, у обработки уникальный ид. Вряд ли у вас будут 2 идентичные обработки, созданные с разницей менее, чем в 1 мин.
(17) mymyka, проблема еще в том, что у формы ид останется старый и сохраненные значения восстановятся или запишутся для ид формы.
(0)
нужно в копии отчета (обработки) скопировать основную форму и вставить в этот же отчет (обработку).
Вот именно. А каким образом — через «копию» или сохранить как.. — уже без разницы.
Главное — сменить ID (программно) или заменой формы.
(16)
у вас не статью нужно дописывать, а вооще статья не дает ответа на поставленный вопрос — как отсоединить один отчет от другого.
Т.е. варианты (11) — не «UPD», а единственно возможные, начиная с 8.2 какого-то релиза.
(17)
с чего бы это? Каикм образом переменая «a» меняет ключ уникальности, заменяя команды:
Спасибо. Копирование формы помогает.
Спасибо и респект автору, что не поленился и описал решение!
У меня есть шаблон СКД- шного отчета, в котором в основном меняю запрос и настройку, а все остальное (параметры отборы) уже реализованы на форме…
Теперь его клонирую без проблем ))
а если внешние отчеты сделаны на СКД как решить проблему тоже не открываются одновременно копии ? При этом основной формы нет вообще.
Решилось так: создал форму )))
(23) Flyerink,
Именно что клонируете. А теперь попробуйте в одной базе запустить оба клона.
Добрый день!
Столкнулся точно с такой же проблемой.
Попробовал сейчас реализовать вышеуказанные советы (пробовал сохранить форму через «Сохранить копию…», создавал копированием форму и назначал её основной, вставлял внутрь конфигурации и пытался выгрузить) и ничего не помогло. Подскажите, есть ли на данный момент какие-нибудь ещё решения?
(26) din107, как вариант, для отчетов на СКД необходимо выгрузить схему компоновки данных в xml, и выполнить обратную загрузку. Идентификатор схемы обновится.
Для схемы СКД я с Вами соглашусь, только вот вопрос остается повисшим, что делать с формами отчетов, неужели их вручную необходимо только копировать (в плане переносить реквизиты и заново перезаполнять события)?
Спасибо!
Если почитать желтую книжку то конечно найдешь где собачка порылась.
Но вот так в гугле одним запросом удобнее гораздо.
Плюсую
Все значительно проще.
В обработчике формы ПередОткрытием надо задать отличающийся Ключ Уникальности
Например:
КлючУникальности = ИспользуемоеИмяФайла + Метаданные().Синоним + Метаданные().Комментарий;
В это случае можно даже одну и туже обработку/отчет из разных каталогов запустить.
К сожалению запустить из одного каталога тот же файл не получится. Даже при задании совсем уникального ключа.
Например:
КлючУникальности = ИспользуемоеИмяФайла + ТекущаяДата();
Попробовала все.
Копирование путем 1С.
выгрузку схемы через Предприятие и в режиме Конфигуратора.
Удалить, вести заново 2 внешних отчета.
создать настройку одному отчету — Основная, второму Основная2 и указать каждому свою настройку при открытии.
Переименовала схему СКД (в одном)»ОсновнаяСхемаКомпоновкиДанных1″
результат один — два разных внешних отчета открываются с той схемой, которая была использована последней.
ЖЕСТЬ!!!
Как победила? Файл — новый — отчет и скопировала в новый скд и схему, сохранить, перенастроить в пользовательском режиме.