Что делать, если 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 не будет опубликован. Обязательные поля помечены *