Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti →

 
Не секрет, что большая часть наших клиентов заказывает доработки конфигураций уровня ERP, УХ, УПП. Конфигурации большие, в связи с этим возникает ряд особенностей в методике проведения доработок.

Работа на проекте с тормозным сервером в 1С

 

Итак, имеем конфигурацию на базе УПП: 500 справочников, 500 документов, 500 РС, 500 РН. База размером 500+ ГБ. Процесс выйти из режима 1С:Предприятие, обновить конфигурацию базы данных, вновь войти – занимает ~7 минут, другими словами 8 раз внести незначительные изменения в конфигурацию, обновить ее и проверить результат занимает – 1 час! Естественно, на это может не хватить нервов и оценка выполнения задачи будет достаточно высокая или если это не заложить в оценку, то она будет превышена. Таким образом простейшие доработки дизайна форм могут занять продолжительное время. Но есть решение… можно разрабатывать во внешних обработках.

Для того чтобы поправить дизайн формы Документа, Справочника создаю внешнюю обработку:

1. Создаем внешнюю обработку;

2. Переносим в нее форму списка из документа чтобы не рисовать свою, хотя в некоторых сложных случаях проще нарисовать свою форму из одного табличного поля с типом ДокументСписок / СправочникСписок. Делаем эту форму основной – чтобы открывалась именно она при запуске обработки. Переносим в обработку форму документа;

Работа на проекте с тормозным сервером в 1С

3. Все. Теперь работаем только в созданной внешней обработке. В форме списка на вкладке реквизиты создаем новый реквизит «ВнешняяОбработка» с типом наша внешняя обработка.

Работа на проекте с тормозным сервером в 1С

4. В той же форме списка переключаемся на вкладку «Диалог» и в свойствах формы для свойства «Данные» указываем наш реквизит «ВнешняяОбработка». Причем в поле «Данные» имя реквизита лучше вписать вручную, т.к. выбор реквизита с помощью кнопки выбора может занять продолжительное время (в случае с моей конфигурацией было так);

Важно! Имя реквизита необходимы вписывать так как оно указано на вкладке реквизиты, поиск по части имени здесь не работает и если вы ошибетесь – то будет создан новый реквизит формы 🙂

Работа на проекте с тормозным сервером в 1С

5. После этого в той же форме списка для табличного поля, содержащего ДокументСписок создаем события «Выбор» и «ПередНачалоомДобавления»

Работа на проекте с тормозным сервером в 1С

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

Код обработчиков событий будет одинаков от документа к документу(за исключением имени объекта в строке ДокументОбъект = Документы.):

Процедура ДокументСписокПередНачаломДобавления(Элемент, Отказ, Копирование)

    Отказ = Истина;

    ДокументОбъект = Документы.ЗаказПоставщику.СоздатьДокумент();

    ФормаДокумента = ПолучитьФорму("ФормаДокумента");
    ФормаДокумента.ДокументОбъект = ДокументОбъект;
    ФормаДокумента.Открыть();

КонецПроцедуры

Процедура ДокументСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ДокументОбъект = ВыбраннаяСтрока.Ссылка.ПолучитьОбъект();

    ФормаДокумента = ПолучитьФорму("ФормаДокумента");
    ФормаДокумента.ДокументОбъект = ДокументОбъект;
    ФормаДокумента.Открыть();

КонецПроцедуры

6. Теперь можно открыть форму документа из внешней обработки и проводить её доработку – форма выглядит так же, как в конфигурации

Работа на проекте с тормозным сервером в 1С

7. После того как доработки формы произведены, удаляем форму документа из конфигурации и ставим нашу форму из внешней обработки. Остается не забыть сделать ее основной формой документа

8. Обновляем конфигурацию базы данных, проверяем все ли корректно работает с новой формой
Для решения подобной задачи разработал универсальную форму списка для документов и справочников.

Работа на проекте с тормозным сервером в 1С

Нередко заказчик просит дорабатывать формы типовых объектов не в визуальном редакторе форм, а программно, что вполне логично вытекает из Правил доработки типовых конфигураций 1С для дальнейшей поддержки и обновления (https://infostart.ru/public/647048/). Для решения поставленной задачи служат различные декомпиляторы элементов формы, я, например, пользуюсь доработанной версией этой обработки https://infostart.ru/public/99363/. Также существуют варианты для управляемых форм. Моя последовательность доработки внешнего вида формы такова:

  1. Дорабатываем форму во внешней обработки – прямо в визуальном редакторе;
  2. Декомпилируем добавленные элементы на форму внешней обработки;
  3. Убираем с формы добавленные элементы, вставляем в форму программный код, добавляющий, изменяющий элементы формы;
  4. Проверяем как это выглядит во внешней обработке;
  5. Если во внешней обработке все ОК – переносим код в форму объекта в конфигурации;
  6. Обновляем конфигурацию базы данных, проверяем все ли корректно работает.

 

Итоги

Подводя итоги хочу пробежаться по ключевым моментам:

  • Мы рассмотрели методику доработки форм документов и справочников во внешних обработках;
  • Изменения в дизайне форм следует производить программно, а не в визуальном редакторе – это только в том случае, если вы планируете обновляться. Ссылка на один из декомпиляторов форм (https://infostart.ru/public/99363/).