Имя: Пароль:
1C
1С v8
Форма документа во внешней обработке
,
0 Интрудер
 
31.10.12
06:40
Возможно большинству коллег этот прием знаком, однако встречал и не знающих. Пользуюсь им обычно при разработке новых документов/макетов или значительной модификации существующих. Итак, нужно значительно изменить документ ЗаказПокупателя. Создаем внешнюю обработку, скажем "ЗаказПокупателя.epf". Форму Заказа в конфигураторе копируем в буфер, вставляем в состав форм обработки, назначаем основной. В той, что в конфигурации, в документе в "ПередОткрытием" пишем примерно следующее:

   ИмяФайла = "D:\Bases\Обработки\ЗаказПокупателя.epf";
   Обработка = ВнешниеОбработки.Создать(ИмяФайла);
   Форма = Обработка.ПолучитьФорму();
   Форма.ДокументОбъект = ЭтотОбъект;
   Форма.Открыть();
   Отказ = Истина;
   Возврат;

Все. Для вступления любых изменений в силу, в коде или в элементах управления после редактирования формы в обработке и её сохранения, достаточно переоткрыть документ. Когда Вы довольны результатом, заменяете форму документа обратно. Экономит массу времени. А если ночью накосячили и приходится утром всех юзверей выгонять?... Не ограничивается описанным, легко сделать "санки" для функций любых модулей через Экспорт директиву. Но добавить к примеру новый реквизит придется все же в конфигурации, добавляйте несколько резервных, потом переименуете.
1 IamAlexy
 
31.10.12
06:48
и смысл?
2 Интрудер
 
31.10.12
06:49
Да просто не перезапускать эску постоянно при мизерных изменениях
3 IamAlexy
 
31.10.12
06:51
(2) а если модуль объекта правишь? мизерно так.. или общий модуль?

зы: я бы кстати добавил в код из (0) проверку файла на наличие и в ситуации отсутствия оного открывал штатную форму :)
4 Интрудер
 
31.10.12
06:58
(3) В модуле перенаправляю вызов в экспортную функцию внешней формы. ): Дык и написано - "примерно следующее", зачем тривиальные вещи писать. Понятно, что в рабочем коде все универсальней и с проверками. У меня к примеру вообще функция в общем модуле, принимает докОбъект или докСписок, или еще что, по нему вычисляет имя файла, при нахождении выполняет вышеописанное...
5 Интрудер
 
31.10.12
07:07
По сути, код выглядит так:
   Если ОбщийМодуль.ПолучитьВнешнююФорму(ЭтотОбъект, Отказ) Тогда
       Возврат;
   КонецЕсли;
6 Живой Ископаемый
 
31.10.12
07:20
на хабрахабре такое любят... тут без пользы
7 IamAlexy
 
31.10.12
07:21
(4) ну и накуя сей гомнокод?

часто меняешь по живой базе?

зы: с содроганием вспоминаю адскую самописку в 7ке где каждый модуль был вынесен в текстовой файл.. вообще каждый

в ТИСе..


тот еще звиздец был
8 Интрудер
 
31.10.12
07:26
(7) Я просто поделился... не нравится, но заказчик требует конфу править - правь. Сравнивать с текстовыми файлами... Ты в обработке полноценную форму получаешь.
9 Интрудер
 
31.10.12
07:27
(6) Интересно... А с чем связано? Я там не бываю.
Независимо от того, куда вы едете — это в гору и против ветра!