Что делать, если 1С перенесла процедуры из одного модуля в другой?

Иногда наступает такой момент, что 1С переносит часть процедур из одного модуля в другой, а для конфигурации написана сотня внешних отчетов и обработок. Что делать? Открывать каждую и делать замены? Это же сколько времени нужно! О своем методе ускорения этого процесса я попытаюсь рассказать.

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

Я предлагаю свою обработку, которая поможет произвести выгрузку и обратную загрузку внешних отчетов и обработок. Ограничения:

1. Обработка рассчитана на то, что файл внешней обработки хранится не в табличной части элемента, а в шапке. 

Внешняя обработка

2. Обработка рассчитана на то, что в справочнике внешних обработок нет элементов с одинаковым полем «Наименование».

 

А теперь по шагам.

1. Запускаем обработку врежиме 1С:Предприятие и выгружаем все внешние отчеты и обработки в папку:

Обработка выгрузки

Получим что-то типа:

Проводник 

2. Составляем таблицу замен:

Страя функция  Новая функция 
 ОбщегоНазначения.ПолучитьОписаниеТиповДаты  ОбщегоНазначенияЗК.ПолучитьОписаниеТиповДаты
 ОбщегоНазначения.СформироватьСуммуПрописью  ОбщегоНазначенияЗК.СформироватьСуммуПрописью
 ОбщегоНазначения.ГоловнаяОрганизация  ОбщегоНазначенияЗК.ГоловнаяОрганизация
 ОбщегоНазначения.ПолучитьРабочуюДату  ОбщегоНазначенияЗК.ПолучитьРабочуюДату
 ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок  ОбщегоНазначенияЗК.РазложитьСтрокуВМассивПодстрок
 ОбщегоНазначения.ФамилияИнициалыФизЛица  ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица
 ОбщегоНазначения.ВывестиИнформациюОбОшибке  ОбщегоНазначенияЗК.ВывестиИнформациюОбОшибке
 ОбщегоНазначения.ФорматСумм  ОбщегоНазначенияЗК.ФорматСумм
 ОбщегоНазначения.ПустоеЗначениеТипа  ОбщегоНазначенияЗК.ПустоеЗначениеТипа
 ОбщегоНазначения.ПредставлениеРаботника   ОбщегоНазначенияЗК.ПредставлениеРаботника 
 ОбщегоНазначения.СообщитьОбОшибке   ОбщегоНазначенияЗК.СообщитьОбОшибке  

3. В Конфигураторе идем в меню «Правка» — «Глобальная замена…» и заполняем поля диалога следующим образом:

Замена Замена

Путь к выгруженным обработкам указываем на вкладке «Файлы»:

Замена

4. Выполняем замены по таблице во втором пункте.

5. Закрываем все окна через меню «Окна» — «Закрыть все». На каждое предложение о сохранении изменений отвечаем утвердительно.

6. Снова используем обработку для загрузки файлов в базу.

7. PROFIT!!!

34 Comments

  1. Muhin555

    Есть такой «прикол» у 1С, сам вручную менял «ОщегоНазначения» на «ОщегоНазначенияЗК» 😀

    Reply
  2. birk

    Надо было раньше постить ) Правил все вручную

    Reply
  3. B2B

    (2) Ничего, и на нашей улице будет праздник 🙂

    Reply
  4. gr0ck

    Да, отлично, только поздно, уже обновил ЗУП)

    На будущее пригодиться

    Reply
  5. Nad_ya

    Да, столкнулась тоже с таким «приколом» от 1С! обработка очень полезная, пригодится!

    Reply
  6. SpartakM

    (0)точно, особенно с ЗУП такие приколы))

    Reply
  7. BoneD

    Обновлялся поздно в этот раз, так что успел воспользоваться «загрузочной» частью обработки. Т.к. количество внешних отчётов/обработок/печатных форм уже за 200 зашкаливает, время сэкономил, одна идея чего стоила. Спасибо, Василий!

    Reply
  8. B2B

    (7) Да, не за что 😉

    Reply
  9. kapustinag

    Только все-таки зря обработка полагается на уникальность имен. Лучше бы использовала Код элемента справочника внешних обработок или GUID. Потому что справочник иерархический, да и отображается по умолчанию в виде отдельных списков обработок / отчетов / печформ и т.д.

    То есть в обычной жизни неуникальность наименования в глаза не бросается, и придется каждый раз перед использованием этой обработки уникальность проверять/исправлять. Если много информационных баз на поддержке, и если фирма 1С продолжит по-стахановски выдавать на-гора релизы чаще, чем раз в неделю (что она с обновлениями УПП продемонстрировала в этом месяце) — довольно хлопотное дело получится.

    Reply
  10. B2B

    (9) Я рассчитывал на то, что файлы будут иметь вменяемые имена, а не ничего незначащий GUID

    Reply
  11. andrewks

    (10) B2B, GUID — элемента справочника, а не имя файла

    Reply
  12. petrov_al

    спасибо за информацию не знал о такой возможности, хотя работаю не первый год.

    Reply
  13. Vovan1975

    круто.

    А что делать когда в коде есть обращения как к старому переименованному общему модулю так и к новому?

    Reply
  14. AnryMc

    (12) petrov_al,

    А кто вообще вдумчиво прочитал всё, то что 1С называет — технической документацией?

    Reply
  15. andrewks

    (14) AnryMc, на 1С ещё и документация есть? 😉

    Reply
  16. AnryMc

    (15) andrewks,

    то что 1С называет — технической документацией

    Reply
  17. AlX0id

    1С позаботилась.. а еще лучше бы она позаботилась и сразу бы прислала таблицу сопоставления чо куда унесла, блин..

    Reply
  18. AuroraNorilsk

    Складывается ощущение, что они даже не пользуются в конфигураторе проверкой модулей и проверкой конфигурации…

    Reply
  19. Kom-off

    На ИТС была обработка по автоматической конвертации внешних обработок при переходе с платформы 8.1 на 8.2, которая автоматически выгружала внешние обработки, конвертировала и загружала. Мне кажется, проще ее допилить, поскольку там все проблемы с уникальностью наименований разрешены тем, что именами файлов являются ГУИД-ы внешних обработок. Это первое.

    А второе, так меня смущает пункт 2 этой статьи — «Составляем список замен». Это самая трудоемкая часть описанного процесса. Т.е. мало того, что процедуры и функции перенесены, так еще надо знать какие процедуры и функции общих модулей используются во внешних обработках (если их с десяток, то не проблема, а если более сотни?). А если к этому еще прибавить, что процедуры и функции общих модулей меняют список своих параметров критическим для использования способом (такое редко, но случается, обычно в типовых конфигурациях список параметров лишь добавляется с присвоением параметрам начальных значений), то получается, что данная статья как бы не доделана.

    Reply
  20. Петров-Водкин

    (19) Kom-off, присоединяюсь к вопросу.

    При обновлении релиза ЗУП 62.1 я насчитал 17 процедур, которые вызываются в моих доработках (в конфигурации и во внешних) и были перенесены. Может еще я что-то пропустил и их больше на самом деле, просто ошибок пока не выходило.

    Больше всего интересует, как автоматизировать пункт «Составляем список замен».

    Reply
  21. Kom-off

    (20) Я использую (плюс автору этой разработки) вот это: http://infostart.ru/public/77909/. Эта разработка позволяет выявить все изменения во всех процедурах и функциях общих модулей.

    Reply
  22. ejka

    Эх, жаль что уже все вручную перелопатила, но на будущее пригодится, особенно если будет список сопоставления автоматический. Спасибо. 🙂

    Reply
  23. Odin-s

    Спасибо автору.. Наверное, год держал в голове идею этой обработки, но всё никак руки не доходили 🙂

    Reply
  24. Redhatych

    спасибо за обработку!

    а комментарии просто повеселили )))))

    ну, а чтобы каждый раз не вставать на те же грабли, то проще сделать как описано здесь:

    Но осталось несколько десятков внешних обработок и печатных форм. Заново в них исправлять из-за смены модуля, где сидит нужная функция — то ещё удовольствие. Решение было логическим продолжением предыдущих — вызов типовых был перенесен в НашМодуль, а во внешних обработках используется обращение к НашемуМодулю. Таким образом, после обновления достаточно будет проверить НашМодуль и не лазить по всем обработкам

    сам давно собирался это сделать, но «пугала» процедура «перелопачивания» своих обработок и отчётов…

    Reply
  25. B2B

    (11) Мне в файловой системе хотелось оставить вменяемые имена, а не GUID’ы.

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

    Reply
  26. wirg

    прикольные ребята в 1с работают

    Reply
  27. СержТ

    СПАСИБО! Только сел (с содроганием) делать замены во внешних и тут подкатила ваша инфа. 15 мин и все готово.

    Reply
  28. PiccaHut001

    (27) СержТ, защёл в туалет, передёрнул 15 мин и все готово

    Reply
  29. Loader_1C

    Спасибо! Актуально, особенно, после 62(52) обновлений релизов ЗУП (ЗиК БУ).

    Reply
  30. АлексейН
    Спасибо! Актуально, особенно, после 62(52) обновлений релизов ЗУП (ЗиК БУ).

    Неужели так много??? Плодотворно работают ребята,отрабатывают свой хлеб.

    прикольные ребята в 1с работают

    Что верно то верно.

    Перенос процедур делается для того чтоб нам интересней жилось,

    а также для того чтобы лишний раз звали програмистов которые обновляют

    конфигурации, соответственно исправления за отдельное вознаграждение.

    И я думаю скорее всего, там что-то типа таблицы что от куда и куда

    перенесено (имеется ввиду процедуры).

    Reply
  31. B2B

    (30) Нет, они расчищают место под БСП

    Reply
  32. alekseies

    полезная обработка, иногда приходится использовать …………………..

    Reply
  33. gudun_ku

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

    Reply
  34. Sabfir

    Спасибо за обработку.

    А вот это интересное предложение:

    Но осталось несколько десятков внешних обработок и печатных форм. Заново в них исправлять из-за смены модуля, где сидит нужная функция — то ещё удовольствие. Решение было логическим продолжением предыдущих — вызов типовых был перенесен в НашМодуль, а во внешних обработках используется обращение к НашемуМодулю. Таким образом, после обновления достаточно будет проверить НашМодуль и не лазить по всем обработкам
    Reply

Leave a Comment

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