gifts2017

Как перенести форму документа (справочника, ...) из одного документа (справочника, ...) в другой похожий документ (справочник, ...)

Опубликовал Роман Анисимов (RomanBor) в раздел Программирование - Практика программирования

При попытке изменить Тип Реквизита «Объект» все элементы формы теряли путь к данным, ладно бы «поля ввода» (можно было выбрать заново «путь к данным»), но с табличными частями вообще труба, при выборе в «Таблице» все колонки в этом элементе банально удалялись.
Можно, конечно, потратить кучу времени и вручную продублировать все то, что есть в форме оригинала, но я нашел другой путь!

Как перенести форму документа (справочника,...) из одного документа (справочника,...) в другой похожий документ (справочник, ...)

(Пробовал на 1С:Предприятие 8.3.5.1248)

 

Имеем:

Переделанная конфигурация Бухгалтерия 3.х

В которую добавлены следующие документы:

АвансовыйОтчет2

АвансовыйОтчет3

ПриходныйКассовыйОрдер2

ПриходныйКассовыйОрдер3

РасходныйКассовыйОрдер2

РасходныйКассовыйОрдер3

 

Эти документы полностью идентичны документам:

АвансовыйОтчет

ПриходныйКассовыйОрдер

РасходныйКассовыйОрдер

 

ЗЫ: Почему так сделано - в другом посте («Как НЕ НАДО Изменять конфигурацию»)

Задача:

Нужно обновить конфигурацию, причем с релиза Бухгалтерии, который был выпущен еще в далеком 2012 году, на актуальный

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

В модуле обновления ИБ добавить обработчики обновлений на созданные документы.

Но я столкнулся с проблемой, после того как я скопировал формы, в частности «ФормуДокумента» и увидел сущую несправедливость: тип Реквизита «Объект» продолжал указывать на старый документ и соответственно при открытии этой формы у меня форма была пустая.

 

При попытке изменить Тип Реквизита «Объект» все элементы формы теряли путь к данным, ладно бы «поля ввода» можно было выбрать заново «путь к данным», но с табличными частями вообще труба, при выборе в «Таблице» все колонки в этом элементе банально удалялись.

Можно, конечно, потратить кучу времени и вручную продублировать все то, что есть в форме оригинала, но я нашел другой путь!

Решение:

В 8.3 есть такая фишка, как выгрузка конфигурации в файлы

Получим кучу файлов, нужно найти нужный нам файл формы документа

И в нем указать другой тип объекта:

Было:

Стало: 

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

После загрузки получаем результат:

Загруженную сохраняем в файл и объединить с обновляемой и вуаля.

См. также

Подписаться Добавить вознаграждение
Комментарии
1. script Мальчинко (script) 26.11.14 12:24
Отлично. Проверю на обычных формах, но думаю результат будет положительным
2. Юрий Муллабакиев (mulla1979) 28.11.14 11:18
Автору +. Возьму на заметку
3. Serg Eli (elizarovs) 03.12.14 12:28
Не понял. А где "+" можно поставить? Или я отстал и плюсы уже не ставим? Поставил звёздочку. Вроде бы счетчик увеличился.
4. lefthander (lefthander) 03.12.14 13:31
5. Галина ГГГ (gigagr) 03.12.14 16:03
Возьму на заметку ... интересное решение
6. Марина Семёнова (SemenovaMarinaV) 04.12.14 10:36
Интересно. Сама не додумалась
7. Дмитрий Глеков (glek) 08.12.14 14:28
Класс. Тоже долго думал. Но времени особо не было, поэтому пошел по пути перепривязывания реквизитов
8. Анатолий Ситников (acsent) 08.12.14 15:57
А как же одинаковые id форм, не заглючит на этом месте?
9. Роман Анисимов (RomanBor) 08.12.14 22:44
(8) acsent, Ну вроде как перенеслось все ок
10. Fomix (fomix) 12.12.14 10:57
(9) RomanBor, Ссыкотно конечно воспользоваться способом, который вы предлагаете, но как говорят: "Кролики кололись и плакали, но продолжали жрать кактус...". Ведь другого способа пока в 1С не придумали.
11. Dmitry Bas (b-dm) 12.12.14 15:10
Я тоже перепривязыванием реквизитов решил проблему. Но этот подход также интересный...
12. Dmitry Chernykh (dim0n_la) 17.12.14 17:42
Раз все так сложно, то почему бы просто не создать новую конфигурацию, в которую скопировать весь объект. Переименовать его как надо, выгрузить и сравнить объединить?
u_n_k_n_o_w_n; alexscamp; +2 Ответить 1
13. sergey_irk sh (sergey_irk) 19.12.14 00:51
Прикольное решение. Попробую
14. Роман Анисимов (RomanBor) 19.12.14 15:39
(12) dim0n_la,
Раз все так сложно, то почему бы просто не создать новую конфигурацию, в которую скопировать весь объект. Переименовать его как надо, выгрузить и сравнить объединить?

возможно сработает кстате
15. Артур Аюханов (artbear) 24.12.14 21:08
Нормальное решение.
ИМХО для обычных сложнее, т.к. 1С обычные формы выгружает в виде бинарников.
Бинарники распаковывать другими средствами либо конфигурацию разбирать/собирать другими средствами, не штатными от 1С,
16. Владимир Клименко (KliMich) 24.12.14 23:49
Спасибо за статью!
Новое всегда интересно!
17. Алексей (alexscamp) 28.12.14 18:47
К сожалению, одна из немногих статей, но к счастью - как раз одна из тех, что абсолютно корректно, методически верно и с понятным практическим применением описывает проблему и ее неординарное решение, которое может многим оказаться полезным. Автор молодец! Возможно, по аналогии с рассматриваемой проблемой, так можно будет решить и какие-то другие.
dim0n_la - тоже правильная идея)