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