Имя: Пароль:
1C
1С v8
РегистрНакопленияНаборЗаписей - подмена документов
,
0 TVA_11
 
28.03.13
17:20
НаборДвиженийВзаиморасчеты = ДокументОбъект.Движения.ВзаиморасчетыСКонтрагентами; //Этот ДокументОбъект взят из Возврата покупателям.

       НаборДвиженийВзаиморасчеты.Отбор.Регистратор.Установить(ЭтотОбъект11.Ссылка); //А ЭтотОбъект11 корректировка реализации

Тоесть хочу движения одного документа, использовать от имени другого.
Однако при проведении все равно проводит от имени Возврата покупателю.

Значит, где-то еще храниться ссылка на него в этом наборе. Но где?

Подскажите, идея реализуема?
1 НафНаф
 
28.03.13
17:21
сделай два набора, из одного выгрузи в ТЗ, в другой загрузи
2 TVA_11
 
28.03.13
17:30
Предлагаешь выгрузить второй набор из Корректировки реализации.
А потом, заполнить по аналогии?
3 zladenuw
 
28.03.13
17:31
НаборДвиженийВзаиморасчеты.ЗаполнитьЗначения(ЭтотОбъект11.Ссылка).
4 TVA_11
 
28.03.13
17:31
Кстати, у меня в Корректировке такого движения нет.
Поэтому выгружается пустой место, всего с двумя полями.
5 zladenuw
 
28.03.13
17:32
(3) только колонку установи.
6 TVA_11
 
28.03.13
17:32
Гениально, большое спасибо!
7 TVA_11
 
28.03.13
17:53
Такого метода нету (.
8 TVA_11
 
28.03.13
18:31
НаборДвиженийВзаиморасчеты = ДокументОбъект.Движения.ВзаиморасчетыСКонтрагентами;
ТаблицаДвижений = НаборДвиженийВзаиморасчеты.Выгрузить();
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоВзаиморасчетам, ТаблицаДвижений);


НаборДвиженийВзаиморасчеты = ЭтотОбъект11.Движения.ВзаиморасчетыСКонтрагентами; //Подмена

НаборДвиженийВзаиморасчеты.мПериод = СтруктураШапкиДокумента.Дата;
НаборДвиженийВзаиморасчеты.мТаблицаДвижений = ТаблицаДвижений;


Однако документ не провелся, или провелся но его не видно в самой КорректировкеРеализации.
9 TVA_11
 
28.03.13
18:31
Не провелся.
10 hhhh
 
28.03.13
19:39
а

ТаблицаДвижений.ЗаполнитьЗначения(ЭтотОбъект11.ссылка, "Регистратор");


точно-точно делал?
11 TVA_11
 
29.03.13
11:15
Да, счас дам полный текст
12 TVA_11
 
29.03.13
11:17
// По регистру ВзаиморасчетыСКонтрагентами
   
   Если ТаблицаПоВзаиморасчетам.Количество() > 0 Тогда
       
       НаборДвиженийВзаиморасчеты = ДокументОбъект.Движения.ВзаиморасчетыСКонтрагентами;
       ТаблицаДвижений = НаборДвиженийВзаиморасчеты.Выгрузить();
       ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоВзаиморасчетам, ТаблицаДвижений);
       
       ТаблицаДвижений.ЗаполнитьЗначения(СтруктураШапкиДокумента.Организация, "Организация");
       ТаблицаДвижений.ЗаполнитьЗначения(СтруктураШапкиДокумента.Контрагент, "Контрагент");
       ТаблицаДвижений.ЗаполнитьЗначения(СтруктураШапкиДокумента.ДоговорКонтрагента, "ДоговорКонтрагента");
       ТаблицаДвижений.ЗаполнитьЗначения(СтруктураШапкиДокумента.Ссылка, "Регистратор");
       
       
       НаборДвиженийВзаиморасчеты = ЭтотОбъект11.Движения.ВзаиморасчетыСКонтрагентами;
       
       НаборДвиженийВзаиморасчеты.мПериод          = СтруктураШапкиДокумента.Дата;
       НаборДвиженийВзаиморасчеты.мТаблицаДвижений = ТаблицаДвижений;
       
       
       

       
       // Проверка остатков
       ОтключитьКонтрольВзаиморасчетов = СтруктураШапкиДокумента.Свойство("ОтключитьКонтрольВзаиморасчетов")
                                       И СтруктураШапкиДокумента.ОтключитьКонтрольВзаиморасчетов;
       Если НЕ ОтключитьКонтрольВзаиморасчетов Тогда
           НаборДвиженийВзаиморасчеты.КонтрольОстатков(ДокументОбъект, "ДокументыРасчетовСКонтрагентом", СтруктураШапкиДокумента, СтруктураПараметров, Отказ, Заголовок, СтруктураШапкиДокумента.РежимПроведения, "СуммаВзаиморасчетов");
       КонецЕсли;
       
       Если Не Отказ Тогда
           ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(НаборДвиженийВзаиморасчеты, ВидДвижения);
       КонецЕсли;
       
   КонецЕсли;
13 TVA_11
 
29.03.13
11:18
Только документ проводится в оригинале без этого заполнения.

// По регистру ВзаиморасчетыСКонтрагентами
   
   Если ТаблицаПоВзаиморасчетам.Количество() > 0 Тогда
       
       НаборДвиженийВзаиморасчеты = ДокументОбъект.Движения.ВзаиморасчетыСКонтрагентами;
       ТаблицаДвижений = НаборДвиженийВзаиморасчеты.Выгрузить();
       ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоВзаиморасчетам, ТаблицаДвижений);
       
       ТаблицаДвижений.ЗаполнитьЗначения(СтруктураШапкиДокумента.Организация, "Организация");
       ТаблицаДвижений.ЗаполнитьЗначения(СтруктураШапкиДокумента.Контрагент, "Контрагент");
       ТаблицаДвижений.ЗаполнитьЗначения(СтруктураШапкиДокумента.ДоговорКонтрагента, "ДоговорКонтрагента");

       
       // Проверка остатков
       ОтключитьКонтрольВзаиморасчетов = СтруктураШапкиДокумента.Свойство("ОтключитьКонтрольВзаиморасчетов")
                                       И СтруктураШапкиДокумента.ОтключитьКонтрольВзаиморасчетов;
       Если НЕ ОтключитьКонтрольВзаиморасчетов Тогда
           НаборДвиженийВзаиморасчеты.КонтрольОстатков(ДокументОбъект, "ДокументыРасчетовСКонтрагентом", СтруктураШапкиДокумента, СтруктураПараметров, Отказ, Заголовок, СтруктураШапкиДокумента.РежимПроведения, "СуммаВзаиморасчетов");
       КонецЕсли;
       
       Если Не Отказ Тогда
           ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(НаборДвиженийВзаиморасчеты, ВидДвижения);
       КонецЕсли;
       
   КонецЕсли;
14 TVA_11
 
29.03.13
11:20
ОбщегоНазначения.ВыполнитьДвижениеПоРегистру - выглядит так:

Процедура ВыполнитьДвижениеПоРегистру(НаборДвижений, ВидДвижения = Неопределено,
                                     ПустыеКолонкиСоставногоТипа = Неопределено) Экспорт

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

   Для Каждого СтрокаДвижения ИЗ ТаблицаДвижений Цикл
       Движение = НаборДвижений.Добавить();
       ЗаполнитьЗначенияСвойств(Движение, СтрокаДвижения, ,ИзмеренияСостТипаСтр);
       
       Если ВидДвижения <> Неопределено Тогда
           Движение.ВидДвижения = ВидДвижения;
       КонецЕсли;
       
       Если ЕстьПериод И НЕ СтрокаДвижения.Период = '00010101000000' Тогда
           Движение.Период = СтрокаДвижения.Период;
       ИначеЕсли НаборДвижений.мПериод <> Неопределено Тогда
           Движение.Период = НаборДвижений.мПериод;
       КонецЕсли;
       Движение.Активность = Истина;
       
       Для Каждого КлючИЗначение ИЗ ИзмеренияСостТипа Цикл
           ЗначениеВКолонке = СтрокаДвижения[КлючИЗначение.Ключ];
           
           Если ЗначениеВКолонке = Неопределено Тогда
               Продолжить;
           КонецЕсли;
           
           ТипЗначенияВКолонке = ТипЗнч(ЗначениеВКолонке);
           
           Если ТипЗначенияВКолонке = ТипЧисло Тогда
               Если ЗначениеВКолонке = 0 Тогда
                   Продолжить;
               КонецЕсли;
           ИначеЕсли ТипЗначенияВКолонке = ТипСтрока Тогда
               Если ЗначениеВКолонке = "" Тогда
                   Продолжить;
               КонецЕсли;
           ИначеЕсли ТипЗначенияВКолонке = ТипДата Тогда
               Если ЗначениеВКолонке = '00010101000000' Тогда
                   Продолжить;
               КонецЕсли;
           ИначеЕсли ЗначениеВКолонке.Пустая() Тогда
               Продолжить;
           КонецЕсли;
           
           Движение[КлючИЗначение.Ключ] = ЗначениеВКолонке;
           
       КонецЦикла;
       
   КонецЦикла;

КонецПроцедуры // ВыполнитьДвижениеПоРегистру()
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс