Не делаются движения по ригистру накопления. Что-то я упускаю...

  1. 9 г. назад

    База - самописка 8.2.19.83
    Создаю регистр накоплений, Вид - Обороты.

    В документе:

    Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    	
    	// Получим необходимые данные для проведения и проверки заполенения данные по табличной части "Приложение".
    	СтруктураПолей = Новый Структура();
    	СтруктураПолей.Вставить("Филиал"				, "Филиал");
    	СтруктураПолей.Вставить("СредниеТЗ"				, "СредниеТЗ");
    	СтруктураПолей.Вставить("СредниеДЗ"				, "СредниеДЗ");
    	СтруктураПолей.Вставить("БазаРаспределения"		, "БазаРаспределения");
    	СтруктураПолей.Вставить("ИтогРаспределенных"	, "ИтогРаспределенных");
    		
    	РезультатЗапросаПриложение = ЗаполнениеДокументов.СформироватьЗапросПоТабличнойЧасти(ЭтотОбъект, "Приложение", СтруктураПолей);
    	ТаблицаПриложение = РезультатЗапросаПриложение.Выгрузить();
    
    	// Укажем, что надо проверить:
    	СтруктураОбязательныхПолей = Новый Структура("Филиал");
    	ЗаполнениеДокументов.ПроверитьЗаполнениеТабличнойЧасти(ЭтотОбъект, "Приложение", СтруктураОбязательныхПолей, Отказ, Заголовок);
    	
    	// Движения по документу	
    	Если Не Отказ Тогда
    		ДвиженияПоРегистрам(РежимПроведения, ТаблицаПриложение, Отказ, Заголовок);
    	КонецЕсли;
    КонецПроцедуры
    
    Процедура ДвиженияПоРегистрам(РежимПроведения, ТаблицаПриложение, Отказ, Заголовок)
    
    	НаборДвижений = Движения.МойНовыйРегистр;                   
    	ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();
    	
    	ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПриложение, ТаблицаДвижений);	
    	ТаблицаДвижений.ЗаполнитьЗначения(ПланФакт, "ПланФакт");
    	ТаблицаДвижений.ЗаполнитьЗначения(Автор, "Автор");
    	
    	НаборДвиженийРС.Записывать = Истина;
    	НаборДвижений.мПериод = ПериодРегистрации;
    	НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;
    	Если Не Отказ Тогда
    		Движения.МойНовыйРегистр.ДобавитьДвижение();
    	КонецЕсли;
    	
    КонецПроцедуры

    В модуле набора записей моего регистра:

    Перем мПериод          Экспорт; // Период движений
    Перем мТаблицаДвижений Экспорт; // Таблица движений
    
    Процедура ДобавитьДвижение() Экспорт
    	
    	Если мПериод <> Неопределено Тогда
    		
    		мТаблицаДвижений.ЗаполнитьЗначения(мПериод, "Период");
    		
    	КонецЕсли;
    	
    	мТаблицаДвижений.ЗаполнитьЗначения(Истина, "Активность");
    	ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект,,, Ложь);
    	
    КонецПроцедуры // ДобавитьДвижение()
  2. Что-то я упускаю. Где еще покопать?

  3. НаборДвиженийРС.Записывать = Истина;

    Ответы: (4)
  4. А везде у тебя используется "НаборДвижений"

    Ответы: (5)
  5. (2) Эту строку я только что добавила. Что с ней (поправленной), что без нее - одинаково 0.

  6. (3)Да. Сделано по типу другого документа. Тоже регистр - обороты.

  7. у документа в свойстве "Запись движений при проведении" что стоит?

    Ответы: (13) (14)
  8. Сделай НаборДвижений.Записывать = Истина, и проверь.

    Ответы: (10)
  9. так же что в этом общем модуле ОбщегоНазначения.ВыполнитьДвижениеПоРегистру", не понятно

  10. Процедура ВыполнитьДвижениеПоРегистру(НаборДвижений, ВидДвижения = Неопределено,
    	                                  ПустыеКолонкиСоставногоТипа = Неопределено, ЗаполнитьПериод = истина) Экспорт
    
    	ТаблицаДвижений = НаборДвижений.мТаблицаДвижений;
    	Если ТаблицаДвижений.Количество() = 0 Тогда
    		Возврат;
    	КонецЕсли;
    	
    	Если ПустыеКолонкиСоставногоТипа = Неопределено Тогда
    		ПустыеКолонкиСоставногоТипа = Новый Структура;
    	КонецЕсли;
    	
    	МетаРег = НаборДвижений.Метаданные();
    	ИзмеренияСостТипа = Новый Структура;
    	Для Каждого МетаИзм Из МетаРег.Измерения Цикл
    		Если (МетаИзм.Тип.Типы().Количество() > 1)
    		   И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаИзм.Имя)) Тогда
    			ИзмеренияСостТипа.Вставить(МетаИзм.Имя);
    		КонецЕсли;
    	КонецЦикла;
    	Для Каждого МетаРек Из МетаРег.Реквизиты Цикл
    		Если (МетаРек.Тип.Типы().Количество() > 1)
    		   И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаРек.Имя)) Тогда
    			ИзмеренияСостТипа.Вставить(МетаРек.Имя);
    		КонецЕсли;
    	КонецЦикла;
    	Для Каждого МетаРес Из МетаРег.Ресурсы Цикл
    		Если (МетаРес.Тип.Типы().Количество() > 1)
    		   И НЕ (ПустыеКолонкиСоставногоТипа.Свойство(МетаРес.Имя)) Тогда
    			ИзмеренияСостТипа.Вставить(МетаРес.Имя);
    		КонецЕсли;
    	КонецЦикла;
    	
    	// Откопируем остальные колонки (структура таблиц совпадает).
    	ПерваяКолонка = Истина;
    	МассивСтрок   = Новый Массив(ТаблицаДвижений.Количество());
    	ЕстьПериод    = НЕ ТаблицаДвижений.Колонки.Найти("Период") = Неопределено;
    	Для каждого Колонка Из ТаблицаДвижений.Колонки Цикл
    
    		ИмяКолонки = Колонка.Имя;
    		Если ИмяКолонки <> "Период"
    		   И ИмяКолонки <> "Активность"
    		   И ИмяКолонки <> "НомерСтроки"
    		   И ИмяКолонки <> ""
    		   И ?(ИмяКолонки = "ВидДвижения", ВидДвижения = Неопределено, Истина)
    		   И ИмяКолонки <> "МоментВремени" Тогда
    		   
    			Если ИзмеренияСостТипа.Свойство(ИмяКолонки) Тогда
    				ФлагКолонкиСостТипа = Истина;
    			Иначе
    				ФлагКолонкиСостТипа = Ложь;
    			КонецЕсли;
    			
    			Индекс = 0;
    			Для каждого СтрокаТаблицы Из ТаблицаДвижений Цикл
    
    				Если ПерваяКолонка Тогда
    					
    					Если ВидДвижения = ВидДвиженияНакопления.Приход Тогда
    						СтрокаДвижения = НаборДвижений.ДобавитьПриход();
    					ИначеЕсли ВидДвижения = ВидДвиженияНакопления.Расход Тогда
    						СтрокаДвижения = НаборДвижений.ДобавитьРасход();
    					Иначе
    						СтрокаДвижения = НаборДвижений.Добавить(); // Для оборотных регистров
    					КонецЕсли;
    					
    					МассивСтрок[Индекс] = СтрокаДвижения;
    					СтрокаДвижения.Период = НаборДвижений.мПериод;
    					Если не ЗаполнитьПериод и ЕстьПериод И НЕ СтрокаТаблицы.Период = '00010101' Тогда
    						СтрокаДвижения.Период = СтрокаТаблицы.Период;
    					Иначе
    						СтрокаДвижения.Период = НаборДвижений.мПериод;
    					КонецЕсли; 
    					
    				Иначе
    					
    					СтрокаДвижения = МассивСтрок[Индекс];
    					
    				КонецЕсли;
    				
    				Индекс = Индекс + 1;
    				
    				ЗначКолонки = СтрокаТаблицы[ИмяКолонки];
    				Если ФлагКолонкиСостТипа Тогда
    
    					Очистить = Ложь;
    					Если ТипЗнч(ЗначКолонки) = Тип("Число")Тогда
    						Если ЗначКолонки = 0 Тогда
    							Очистить = Истина;
    						КонецЕсли;
    					ИначеЕсли ТипЗнч(ЗначКолонки) = Тип("Строка") Тогда
    						Если ЗначКолонки = "" Тогда
    							Очистить = Истина;
    						КонецЕсли;
    					ИначеЕсли ТипЗнч(ЗначКолонки) = Тип("Дата") Тогда
    						Если ЗначКолонки = '00010101000000' Тогда
    							Очистить = Истина;
    						КонецЕсли;
    					ИначеЕсли ЗначКолонки = Неопределено Или ЗначКолонки.Пустая() Тогда
    						Очистить = Истина;
    					КонецЕсли;
    
    					Если Очистить Тогда
    						СтрокаДвижения[ИмяКолонки] = Неопределено;
    					Иначе
    						СтрокаДвижения[ИмяКолонки] = ЗначКолонки;
    					КонецЕсли;
    				Иначе
    					СтрокаДвижения[ИмяКолонки] = ЗначКолонки;
    				КонецЕсли;
    				
    			КонецЦикла;
    			
    			ПерваяКолонка = Ложь;
    			
    		КонецЕсли;
    
    	КонецЦикла;
    
    КонецПроцедуры // ВыполнитьДвижениеПоРегистру()
    
  11. (7) Говорю ж: В другом работающем этой строки нет. Он работает.
    Эту строку я добавила в свой документ - все равно не работает.

    Ответы: (11)
  12. (10) И ничего не говорит?

  13. а что говорит отладчик?

  14. на (6) ответь

    Ответы: (14)
  15. (13) ну по идее если вставить НаборДвижений.Записывать = Истина, то не важен ответ на (6)

    Ответы: (16)
  16. Может КЭШ? )

    Ответы: (18)
  17. (14) если у нее тут не вставляется, то можно всунуть там

  18. Ни че не говорит - молча. После проведения в регистре ни одного движения.
    По отладчику вижу, что все передается.
    Мистика какая-то.

  19. (15) Мля... Щас почищу!!!

  20. может, какой обработчик события срабатывает? а там бац - если то-то и то-то, то отмена.
    не?

  21. А может (ну, как вариант) - дата?

  22. Таки КЭШ.
    Слов цензурных не нахожу!

    Спасибо всем сочувствующим!

    Ответы: (22)
  23. (21) А обезьянку?

  24. -image-

или зарегистрируйтесь чтобы ответить!