Финт ушами над выгрузкой МОД.
22-12-2005 13:40
к комментариям - к полной версии
- понравилось!
Давеча пришлось поработать над выгрузкой MOD в режиме изменений.
Дело в том, что скотина выгружает только сами объекты, а значения реквизитов выгружает просто в виде IDD, а нам нужно чтобы при выгрузке изменений выгружались и эти реквизиты, как объекты. Например, если в документе указана фирма, то нужно чтобы выгружался не только документ и фирма в виде ее IDD, но чтобы еще и фирма попала в файл выгрузки, как элемент справочника.
Изощрялся я над кодом, изощрялся, никак не могу найти простого решения.
А потом смотрю, там есть функция - ПолучитьПредставлениеОбъекта - которая практически вызывается для каждого реквизита документа или справочника.
Ну я туда воткнул затычку, которая накапливает значения всех реквизитов типа "Справочник" при выгрузке (при этом обеспечил контроль уникальности в этом списке - защита от зацикливания).
В самом конце выгрузки в процедуре ВыгрузитьТело я еще раз вставляю довыгрузку тех справочников, что успели накопиться:
Если РежимВыгрузки=1 Тогда
Для Инд=1 По п_СписокСправочников.РазмерСписка() Цикл
Спр=п_СписокСправочников.ПолучитьЗначение(Инд);
Вид=Спр.Вид();
ИДД=Спр.IDD;
Если ЕстьСправочники=1 Тогда
Для А=1 По 100 Цикл
Рез=ПолучитьПравилаВыгрузки(СправочникиПравила,Вид,А);
Если Рез=1 Тогда
ВыгрузитьСправочник(Справочники,Вид,ИДД,ТекущаяДата(),ТекущаяДата());
ИначеЕсли Рез=-1 Тогда
Прервать;
КонецЕсли;//иначе если Рез=0 - продолжить
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
При этом происходит забавная ситуация: по ходу этой довыгрузки список справочников пополняется и в конечном итоге выгружаются все элементы, на которые есть ссылки из измененных объектов, чего нам и хотелось.
Обратите внимание - я делаю такой режим только в режиме выгрузки изменений (РежимВыгрузки=1), можно вообще повесить все это на флажок. Стоит флажок - добавляем элементы, нет - идет все стандартно. Вот так вот!
вверх^
к полной версии
понравилось!
в evernote