Различное срабатывание обработки в 2 идентичных БУХ КОРП базах

1. agrotrak 08.08.24 06:19 Сейчас в теме
Доброго времени суток!
При попытке встроить внешнюю обработку из одной БП КОРП базы в другую идентичную столкнулся с проблемой, что она не срабатывает, хотя в первой базе все работает исправно. Может кто-то сталкивался с таким?
Обработка формирует акты сверки для выбранного списка пользователей и заполняет ТЧ "По данным организации", выполняя функции модуля формы и модуля менеджера документа. В обеих конфигурациях эти функции идентичны. Таким образом, на этапе заполнения где-то идет сбой, и документ записывается с пустой ТЧ.

Мой код:
&НаСервере
Процедура ЗаполнитьДокументНаСервере()
			
	Для каждого стр Из Объект.Контрагенты Цикл
				
				НовыйДокумент = Документы.АктСверкиВзаиморасчетов.СоздатьДокумент();
				НовыйДокумент.Дата = КонецДня(Объект.Период.ДатаОкончания) + 43200;
				НовыйДокумент.Контрагент = стр.Контрагент;
				НовыйДокумент.Организация = Справочники.Организации.НайтиПоКоду("000000001");
				НовыйДокумент.ВалютаДокумента = Объект.Валюта;
				НовыйДокумент.ДатаНачала = Объект.Период.ДатаНачала; 
				НовыйДокумент.ДатаОкончания = Объект.Период.ДатаОкончания;
				НовыйДокумент.РазбитьПоДоговорам = Истина;
				
				ТаблицаСчетов = УчетВзаиморасчетов.ПолучитьТаблицуСчетовУчетаВзаиморасчетов(Истина, Ложь);
				ТаблицаСчетов.Колонки.СчетРасчетов.Имя = "Счет";
				ТаблицаСчетов.Колонки.Добавить("УчаствуетВРасчетах");
				ТаблицаСчетов.ЗаполнитьЗначения(Истина, "УчаствуетВРасчетах");
				
				НовыйДокумент.СписокСчетов.Загрузить(ТаблицаСчетов);
				
				СтруктураПараметров = Новый Структура;
				
				СтруктураПараметров.Вставить("ДатаНачала",                    НовыйДокумент.ДатаНачала);
				СтруктураПараметров.Вставить("ДатаОкончания",                 Новый Граница(КонецДня(НовыйДокумент.ДатаОкончания), ВидГраницы.Включая));
				СтруктураПараметров.Вставить("Организация",                   НовыйДокумент.Организация);
				СтруктураПараметров.Вставить("Контрагент",                    НовыйДокумент.Контрагент);
				СтруктураПараметров.Вставить("СОбособленнымиПодразделениями", НовыйДокумент.СОбособленнымиПодразделениями);
				СтруктураПараметров.Вставить("ВыводитьСчетаФактуры",          НовыйДокумент.ВыводитьСчетаФактуры);
				СтруктураПараметров.Вставить("ЗаполнятьДанныеКонтрагента",    Ложь);
				СтруктураПараметров.Вставить("Валюта", 						  Неопределено);
				
				ФильтрСписокСчетов = Новый Массив();
				
				Для Каждого СтрокаСчета Из НовыйДокумент.СписокСчетов Цикл
					Если ЗначениеЗаполнено(СтрокаСчета.Счет) И СтрокаСчета.УчаствуетВРасчетах Тогда
						ФильтрСписокСчетов.Добавить(СтрокаСчета.Счет);
					КонецЕсли;
				КонецЦикла;
				
				Если ФильтрСписокСчетов.Количество() = 0 Тогда
					ТекстОшибки = НСтр("ru='Не задан список счетов, по которым производится сверка.'");
					ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , , "Объект.СписокСчетов");
					Возврат;
				КонецЕсли;
				
				СтруктураПараметров.Вставить("ФильтрСписокСчетов", ФильтрСписокСчетов);
				
				АналитикаРасчетов = Новый Массив();
				АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
				АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
				СтруктураПараметров.Вставить("АналитикаРасчетов", АналитикаРасчетов);
				
				СтруктураПараметров.Вставить("ДоговорКонтрагента", 
				?(НЕ ЗначениеЗаполнено(НовыйДокумент.ДоговорКонтрагента), Неопределено, НовыйДокумент.ДоговорКонтрагента));
				
				СтруктураПараметров.Вставить("ВыводитьПолныеНазванияДокументов", 	НовыйДокумент.ВыводитьПолныеНазванияДокументов);
				СтруктураПараметров.Вставить("ВалютаДокумента", 					НовыйДокумент.ВалютаДокумента);
				СтруктураПараметров.Вставить("РазбитьПоДоговорам", 					НовыйДокумент.РазбитьПоДоговорам);
				СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета", 		НовыйДокумент.ВалютаДокумента);
				СтруктураПараметров.Вставить("ЭтоЭлектронныйДокумент", 				НовыйДокумент.ЭтоЭлектронныйДокумент);
				
				АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор);
				
				Документы.АктСверкиВзаиморасчетов.ПодготовитьДанныеДляЗаполнения(СтруктураПараметров, АдресРезультата);
				
				СтруктураДанных = ПолучитьИзВременногоХранилища(АдресРезультата);
				
				РезультатВыполнения = Новый Структура();
				РезультатВыполнения.Вставить("ЗаданиеВыполнено", Истина);
				РезультатВыполнения.Вставить("Успешно", Ложь);
				
				Если ТипЗнч(СтруктураДанных) <> Тип("Структура") Тогда
					Возврат;
				КонецЕсли;
				
				РезультатВыполнения.Успешно = СтруктураДанных.Успешно;
				
				Если СтруктураДанных.Успешно Тогда
					
					НовыйДокумент.ОстатокНаНачало = СтруктураДанных.ОстатокНаНачало;
					НовыйДокумент.ПоДаннымОрганизации.Загрузить(СтруктураДанных.ПоДаннымОрганизации);
					
					Если СтруктураДанных.Свойство("ПоДаннымКонтрагента") Тогда
						НовыйДокумент.ПоДаннымКонтрагента.Загрузить(СтруктураДанных.ПоДаннымКонтрагента);
					КонецЕсли;
					
				КонецЕсли;
	
				Возврат РезультатВыполнения;
				
				НовыйДокумент.Записать();
		
	КонецЦикла;
	
КонецПроцедуры
Показать


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


Код второй функции из модуля менеджера
&НаСервере
Функция ЗагрузитьПодготовленныеДанные(Результат)
	
	СтруктураДанных = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
	
	РезультатВыполнения = Новый Структура();
	РезультатВыполнения.Вставить("ЗаданиеВыполнено", Истина);
	РезультатВыполнения.Вставить("Успешно", Ложь);
	
	Если ТипЗнч(СтруктураДанных) <> Тип("Структура") Тогда
		Возврат РезультатВыполнения;
	КонецЕсли;
	
	РезультатВыполнения.Успешно = СтруктураДанных.Успешно;
	
	Если СтруктураДанных.Успешно Тогда
	
		Объект.ОстатокНаНачало = СтруктураДанных.ОстатокНаНачало;
		Объект.ПоДаннымОрганизации.Загрузить(СтруктураДанных.ПоДаннымОрганизации);
		Если СтруктураДанных.Свойство("ПоДаннымКонтрагента") Тогда
			Объект.ПоДаннымКонтрагента.Загрузить(СтруктураДанных.ПоДаннымКонтрагента);
		КонецЕсли;  
		
		УстановитьДоступностьДокументов();
		ПересчитатьОстатки(ЭтотОбъект);
		
		ОбновитьЗамечанияНаСервере();
	КонецЕсли;
	
	Возврат РезультатВыполнения;
	
КонецФункции
Показать
Найденные решения
2. laperuz 46 08.08.24 06:29 Сейчас в теме
Базы идентичны конфигурациями или данными?

Самое банальное -

 НовыйДокумент.Организация = Справочники.Организации.НайтиПоКоду("000000001");


В одной БД у организации код 000000001 и она находится, в другой код другой и она не находится.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. laperuz 46 08.08.24 06:29 Сейчас в теме
Базы идентичны конфигурациями или данными?

Самое банальное -

 НовыйДокумент.Организация = Справочники.Организации.НайтиПоКоду("000000001");


В одной БД у организации код 000000001 и она находится, в другой код другой и она не находится.
3. agrotrak 08.08.24 06:43 Сейчас в теме
(2) о самом банальном я не догадался
большое спасибо
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот