Navigation




Как добавить виртуальные объекты в обработку перед выгрузкой

Например необходимо добавить объекты, которых нет в источнике, но они должны загрузиться в получатель на основании определенных запросов.
Настраивать различные правила иногда получается намного сложнее, чем сделать небольшую функцию на коде 1С.
Для этого в модуле обработки ищем слово ДобавитьСвоиВиртуальныеОбъектыПередВыгрузкой,
убираем комментарий и вставяем в конец модуля обработки одноименную функцию из макета ПримерДобавленияВиртуальныхОбъектовПередВыгрузкой.
В примере показано как добавить одну группу и один элемент справочника сотрудники.
Если необходимо добавить виртуальный документ с табличной частью, то смотри макет ПримерВыгрузкиОстатковУТвКА_ОдинСклад

Функция ДобавитьСвоиВиртуальныеОбъектыПередВыгрузкой()
	
	// пример как добавить только одну группу и один элемент

	ТЗВСотрудники = СоздатьТаблицуЗначений("ТипВид,Код,Наименование,ДатаРождения,ЭтоГруппа,Родитель");
	
	СТЗВ1              = ТЗВСотрудники.Добавить();
	СТЗВ1.ТипВид       = "Справочник=Сотрудники";
	СТЗВ1.ЭтоГруппа    = 1;
	СТЗВ1.Код          = "00001";
	СТЗВ1.Наименование = "Менеджеры";
	
	СТЗВ2              = ТЗВСотрудники.Добавить();
	СТЗВ2.ТипВид       = "Справочник=Сотрудники";
	СТЗВ2.Родитель     = СТЗВ1;
	СТЗВ2.Код          = "00002";
	СТЗВ2.Наименование = "Иванов Иван Иваныч";
	СТЗВ2.ДатаРождения = Дата("20011231230000");

	// добавляем виртуальную таблицу ТЗВСотрудники в ВиртуальныеТаблицыОбъектов
	// таблиц может быть много, отдельная на каждый Тип=Вид 
	
	ОпределитьКолонки(ВиртуальныеТаблицыОбъектов,"ТЗ");
	СТЗ = ВиртуальныеТаблицыОбъектов.Добавить(); СТЗ.ТЗ = ТЗВСотрудники;
    
	Возврат 1;
    
КонецФункции

Как запустить обработку на версии ниже 8.3.13

Если необходимо запустить обработку на платформе 8.3.12 и ниже (или в режиме совместимости 8.3.12), надо в модуль обработки добавить две функции (которых не было на старых платформах): СтрРазделить и СтрСоединить

Функция СтрСоединить(М,Разделитель=";") Экспорт
	
	Стр = "";
	Для Каждого ЭМ Из М Цикл
		Стр = Стр + ?(Стр="","",Разделитель) + СокрЛП(ЭМ);
	КонецЦикла;
	Возврат Стр;
	
КонецФункции

Функция СтрРазделить(Источник,Разделитель=";",ВключатьПустые=0) Экспорт
	
	ист    = СокрЛП(Источник);
	Массив = Новый Массив;
	Если (ист<>"") Тогда
		Если (Разделитель="") Тогда
			Массив.Добавить(ист);
		Иначе
			поз = Найти(ист,Разделитель);
			Пока (поз>0) Цикл
				стр = СокрЛП(Лев(ист,поз-1));
				Массив.Добавить(стр);
				ист = СокрЛП(Прав(ист,СтрДлина(ист)-поз));
				поз = Найти(ист,Разделитель);
			КонецЦикла;                           
			Если (СтрДлина(ист)>0) Тогда Массив.Добавить(ист); КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	Возврат Массив;
	
КонецФункции

Как выгрузить обороты для сравнения через виртуальные таблицы

Если необходимо сравнить обороты в получателе с источником, создаем обработку с выполнением на стороне сервера и добавляем такой код:

// сначала надо получить ТЗОбороты запросом по необходимым счетам

ПутьКОбработке       = "D:\MovingObjects.epf";
ОбработкаПереноса    = ВнешниеОбработки.Создать(ПутьКОбработке,Ложь);
ТЗВОборотПоСчету     = ОбработкаПереноса.СоздатьТаблицуЗначений("ТипВид,Код,ДОС,КОС");
ТЗВиртуальныеТаблицы = ОбработкаПереноса.СоздатьТаблицуЗначений("ТЗ");

Для Каждого СТЗ Из ТЗОбороты Цикл
    СТЗВ          = ТЗВОборотПоСчету.Добавить();
    СТЗВ.ТипВид   = "ОборотПоСчету=Хозрасчетный";
    СТЗВ.Код      = СТЗ.Счет.Код;
    СТЗВ.ДОС      = СТЗ.СуммаОборотДт;
    СТЗВ.КОС      = СТЗ.СуммаОборотКт;
КонецЦикла;

СТЗ2    = ТЗВиртуальныеТаблицы.Добавить(); СТЗ2.ТЗ = ТЗВОборотПоСчету;

ОбработкаПереноса.НачДатаВыгрузки = НД;           // начальная дата в ранее созданном запросе по оборотам
ОбработкаПереноса.КонДатаВыгрузки = КонецДня(КД); // конечная дата в ранее созданном запросе по оборотам
ОбработкаПереноса.ПутьКФайлу = "D:\1.sfo";
ОбработкаПереноса.ВиртуальныеТаблицыОбъектов = ТЗВиртуальныеТаблицы;
ОбработкаПереноса.Выгрузить();
Теперь на стороне получателя интерактивно через обработку 'MovingObjects.epf' можно анализировать полученный файл 1.sfo
Для сравнения остатков надо поменять ТипВид на "ОстатокПоСчету=Хозрасчетный" (сравнение остатков делается всегда на НачДатаВыгрузки)

Как выгрузить уникальный идентификатор 1С только для документов

Надо использовать следующих вариант правил выгрузки

[ПараметрыВыгрузки]
ИспользоватьУникальныйИдентификатор=1

[ИсключаемыеСвойства]
Справочник.<Любой>.УникальныйИдентификатор1С

Как переносить большие объемы РС.ДвоичныеДанныеФайлов

   При выгрузке большого объема сведений ДвоичныеДанныеФайлов
   на серверных базах на одном сервере 1С надо:
	1. включить на закладке Опции 'Испрользовать только сервер для файлов'
    2. включить на закладке 'Настройка выгрузки' 'Выгружать хранилище значений'
    3. включить правила выгрузки с исключением свойств
        Справочник.<Любой>.<Реквизит>
        Справочник.<Любой>.<ТабличнаяЧасть>
        Документ.<Любой>.<Реквизит>
        Документ.<Любой>.<ТабличнаяЧасть>

Как перепровести документы определенного вида за период

Выбираем необходимый период и вид документов. Переходим на страницу "Фильтр" и устанавливаем свойство "Проведен=Да"
Faster

Переходим на закладку "Данные" и отмечаем все документы
Faster

Переходим на закладку "Обработка", устанавливаем свойство "Проведен=Да" и нажимаем "обработать"
Faster

Как изменить владельца у нескольких элементов справочника

Выбираем необходимый справочник. Переходим на страницу "Фильтр" и устанавливаем "Владелец=[Старое значение]"
Faster

Переходим на закладку "Данные" и отмечаем необходимые элементы справочника
Faster

Переходим на закладку "Обработка", устанавливаем свойство "Владелец=[Новое значение]" и нажимаем "Обработать"
Faster

Как изменить значение реквизита в определенной строке документа

Выбираем необходимый период и вид документа. На закладке "Данные" отмечаем нужный документ или несколько документов.
Переходим на закладку "Обработка" и указываем конкретный номер строки и новое значение в этой строке.
Faster

Нажимаем "Обработать"

Как выгрузить данные сразу в архив zip с паролем

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

Если обработка перестала открываться из-за большого размера Текста для обмена

Надо в начало процедуры СохрВостЗначение в обычной форме добавить код:
Если (Ид="ПереносОбъектовТекстДляОбмена") Тогда Возврат; КонецЕсли;