![]() |
|
Тип ОпределяемыйТип.ОбъектРасчетов | ☑ | ||
---|---|---|---|---|
0
88g88
17.04.25
✎
22:43
|
Здравствуйте. В базе УТ Управление торговлей, редакция 11 (11.5.21.99) Есть справочник вот с таким реквизитом.
Метаданные.Справочники.ОбъектыРасчетов.Реквизиты.Объект У него тип ОпределяемыйТип.ОбъектРасчетов В отладке он такой выражение тип НовыйЭлемент.Объект Неопределено и выполнить момент заполнения в виде. НовыйЭлемент.Объект = Метаданные.ОпределяемыеТипы.ОбъектРасчетов.Тип не получается. всю голову сломал. какой только синтаксис не использовал. И сам тип в виде Метаданные.ОпределяемыеТипы.ОбъектРасчетов.Тип имеет очент большое количество значений. Подскажите, как заполнить это значение? |
|||
1
Мультук
гуру
17.04.25
✎
22:55
|
(0)
1) Покажите ваш код (с) 2) Не нужно трогать этот справочник руками -- он живёт своей жизнью. Сам. |
|||
2
программистище
18.04.25
✎
08:07
|
если бы был элемент формы тогда можно было бы сделать ограничение типа, но зачем объекту присваивать тип?
а не устанавливать тип объекту? |
|||
4
СделатьВсе Хорошо
18.04.25
✎
12:40
|
(0) "НовыйЭлемент.Объект = Метаданные.ОпределяемыеТипы.ОбъектРасчетов"
А вы вообще понимаете суть этого присвоения? Объект - это ссылка ...Тип - Это тип в чем суть задачи тоже не понятно до конца |
|||
5
88g88
18.04.25
✎
13:01
|
(1) Понимаю. я в него чего полез то.
Загружаю документ из бух. через JSON, поступление денежных средств. поступление требует объект расчетов. Перепроверил заполнение всех реквизитов но при загружаемом документе объект расчетов не создается сам, но требуется. если первая запись документа происходит без него, то перезапись документа, при проведении или изменении данного документа в базе источнике, не переписывает документ потому что не может обнаружить объект расчетов. не и та же проблема при пере проведении периода или просто документа. решил создать его кодом и подсунуть в документ. но не получается. |
|||
6
88g88
18.04.25
✎
13:05
|
(4) Тип неопределенный, присвоить документ не могу. Не получается. И это не переменная в которую можно пихнуть что угодно.
Подумал если присвою ему тип, то документ зайдет как значение. Потому с типом и вожусь. |
|||
7
программистище
18.04.25
✎
13:12
|
(6) если в реквизите остается непоределено, вы либо пихаете туда что-то непонятное, либо понятное, но в определяемом типе такого нет, еще есть вариант, что пытаетесь запихать объект, а не объект.ссылка
|
|||
8
88g88
18.04.25
✎
13:18
|
(4) (7) Проверяю
|
|||
9
Мультук
гуру
18.04.25
✎
13:25
|
(6)
1) Если мы говорим про "ПоступлениеБезналичныхДенежныхСредств" с операцией Поступление оплаты от клиента то ОбъектРасчетов в шапке -- пустой, в "РасшифровкаПлатежа" -- заполнен. 2) Создайте руками нужный документ, проведите его и найдите код, который заполняет объект расчетов 3) api по "объектРасчетов" в общем модуле ОбъектыРасчетовСервер Настоятельно советую пойти по пути пункта 2 4) Самостоятельное создание/модификация объектовРасчетов это либо путь в ад, либо в нирвану, если вы состоянии постигнуть великий механизм взаиморасчетов целиком и полностью |
|||
10
lucky_
18.04.25
✎
13:22
|
(0) если тебе пришлось создать элемент этого справочника, то 99%, что ты что-то делаешь не так.
если нужно заполнить в документе- втыкай ссылку на документ как объект расчетов (либо договор из документа). |
|||
11
88g88
18.04.25
✎
13:25
|
(7) Да, есть косяк. Только документ вновь созданный. Ссылка пустая. Проверю этот момент. Я там с присвоением ссылки для нового документа заморочился. Думаю перемудрил. Попробую отключить.
(4) Не помогло. Но вариант 7 присваивает тип. Что в общем решение в части вопроса. |
|||
12
88g88
18.04.25
✎
13:31
|
(9) Пробовал. Проходил все до момента определения в результате запроса. В запрос столько структур и параметров прилетает, не получилось его воссоздать. Я понимаю что в документе чего то не хватает для нормального проведения. Руками создал копию загружаемого документа, все нормально. А в загружаемом та же цепочка процедур выдает другой результат.
Проверил и сравнил все показатели и метаданные документов, созданный ручками и загруженный, разница только в показателе объект расчетов и статья ддс. ДДС нормально попадает в документ. Думаю не сохраняется из за объекта. |
|||
13
88g88
18.04.25
✎
13:33
|
(12) все структуры отдельно просматривал. Сравнивал в ручном и загружаемом документе.
Разницы не нашел, только даты, время проведения, номер документов, и прочее по мелочи подобной. |
|||
14
maxab72
18.04.25
✎
13:38
|
(12) Значит при ручном вводе какие-то реквизиты (или самого документа или в каком-то подчиненном регистре сведений) заполняются автоматически. А при переносе - не заполняются. Попробуйте сравнить все без исключения реквизиты этих двух документов. И регистров, которые связаны с ними.
|
|||
15
Мультук
гуру
18.04.25
✎
13:47
|
(14)
+1 Например, при изменении договора меняется объект расчетов ДенежныеСредстваСервер.ПроверитьЗаполнитьОбъектРасчетов(Объект, Элементы.РасшифровкаПлатежа.ТекущаяСтрока); ДенежныеСредстваСервер.ЗаполнитьДанныеОбъектаРасчетовРасшифровкиПлатежа(Объект); Тут уже можно смотреть и думать |
|||
16
88g88
18.04.25
✎
13:55
|
(15) Это да. Этот путь я прошел. Вызывал основную процедуру, которая все эти функции запускает. Она их проходит но не создает объект расчетов. Там запросом в итоге массив создается и проверяется. У меня он пустой.
(14) Это сейчас посмотрю. |
|||
17
88g88
18.04.25
✎
13:57
|
(15) более того. эти все процедуры и функции запускаются по умолчанию при проведении документа. Потому от их использования отошел.
Пока вижу 2 пути, ковырять документы и искать тот момент который необходим. Либо создать и подсунуть. Первый самый правильный. Я тоже за него. Просто уже неделю сижу с этим. Решил попробовать второй. |
|||
18
88g88
18.04.25
✎
14:18
|
(15) По итогу ошибка возникает тут.
Процедура ЗаполнитьОчиститьОбъектРасчетов(Объект, МассивСтруктур, РежимЗаписи = Неопределено) Для созданного документа при пере проведении тут. Если НЕ ЗначениеЗаполнено(ОбъектРасчетов) И Не ОбъектРасчетовНеНужноЗаполнять И (ЭтоСправочник И Не ОбщегоНазначенияУТКлиентСервер.ДанныеПоПути(Объект, "Объект.ПометкаУдаления") ИЛИ Не ЭтоСправочник И ОбщегоНазначенияУТКлиентСервер.ДанныеПоПути(Объект, "Объект.Проведен")) Тогда ВызватьИсключение (НСтр("ru = 'Не удалось найти объект расчетов.'")) КонецЕсли; А для создаваемого Если НЕ ЭтоДокумент ИЛИ РежимЗаписи = РежимЗаписиДокумента.Проведение ИЛИ РежимЗаписи = РежимЗаписиДокумента.Запись Тогда //Присвоение. Если РеквизитОбъектРасчетов <> Неопределено Тогда Если ТипЗнч(ОбъектРасчетов) = Тип("Соответствие") Тогда Для Каждого СтрокаТЧ Из ТЧ Цикл СтрокаТЧ[РеквизитОбъектРасчетов.Имя] = ОбъектРасчетов[СтрокаТЧ[ИмяРеквизитаТЧЗаказ]]; КонецЦикла; Если ТЧЭтапыОплаты <> Неопределено И ТЧЭтапыОплаты.Количество() > 0 И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ТЧЭтапыОплаты[0], "Заказ") Тогда Для Каждого СтрокаТЧ Из ТЧЭтапыОплаты Цикл СтрокаТЧ.ОбъектРасчетов = ОбъектРасчетов[СтрокаТЧ.Заказ]; КонецЦикла; КонецЕсли; Иначе Если СтрРазделить(СтруктураПараметров.ОбъектРасчетов,".").Количество() = 3 Тогда Для Каждого СтрокаТЧ Из РеквизитОбъектРасчетов.Данные Цикл СтрокаТЧ[РеквизитОбъектРасчетов.Имя] = ОбъектРасчетов; КонецЦикла; Иначе РеквизитОбъектРасчетов.Данные[РеквизитОбъектРасчетов.Имя] = ОбъектРасчетов; КонецЕсли; Если ТЧЭтапыОплаты <> Неопределено И ТЧЭтапыОплаты.Количество() > 0 И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ТЧЭтапыОплаты[0],"ОбъектРасчетов") Тогда Для Каждого СтрокаТЧ Из ТЧЭтапыОплаты Цикл СтрокаТЧ.ОбъектРасчетов = ОбъектРасчетов; КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; вот тут пусто. СтрокаТЧ[РеквизитОбъектРасчетов.Имя] = ОбъектРасчетов; |
|||
19
ldo6
18.04.25
✎
14:36
|
что за треш.
|
|||
20
ldo6
18.04.25
✎
14:40
|
Ты там делаешь что то не то. Вполне вожмодно даже если ты присвоишь свой объект расчетов то работать все равно не будет.
|
|||
21
СделатьВсе Хорошо
18.04.25
✎
14:51
|
(18) Если ошибка тут - "СтрокаТЧ[РеквизитОбъектРасчетов.Имя] = ОбъектРасчетов;"
то может просто Реквизит не тот или Имя у него не то, что ожидается? |
|||
22
88g88
18.04.25
✎
15:02
|
(19) стандартная конфигурация, на поддержке. ничего не менял и не хочу ее менять. нет такой задачи.
|
|||
23
программистище
18.04.25
✎
15:39
|
(18) в приведенном коде не понятно создается ли ОбъектРасчетов или подбирается существующим
нужно отследить в отладчике "ОбъектРасчетов =" чему он равен, и почему приходит пустой |
|||
24
88g88
18.04.25
✎
16:27
|
Там логика следующая.
Есть документ поступления, к примеру. через все эти (15) процедуры и функции система проверяе, есть объект расчетов или нет. Если не находит, проверяет что может быть объектом расчета и нужен ли он. Если нужен и не находит ничего для объекта расчета, то проверяет может ли сам документ поступления быть объектом расчета. С стандартным документом именно это и происходит. Система определяет его как подходящий и сам документ поступления становится объектом расчета. И вот 2 документа. Стандартный сам себе подходит, загруженный нет. |
|||
25
maxab72
18.04.25
✎
16:38
|
(24) так проведите два документа, отмечая контрольные точки. на которой пути разошлись, там и копать.
|
|||
26
88g88
18.04.25
✎
17:17
|
(25) Понимаю. В общем пока ситуация такая.
Объект расчетов создал нормально, но запихать его туда не могу. Причины 2 Если документ не проведен, нет ссылки для Объекта расчетов. Если провести документ, появляется ссылка для объекта расчетов, объект расчетов создаю. Но провести документ повторно с добавленным объектом расчетов не могу. Потому что в оригинале нет объекта, и возвращаюсь в ошибке не найден объект расчетов. При проведении документа 1С сама ищет как то и сопоставляет объект с документом. Причем даже если ему подсунуть объект то опять же, стандартное проведение очищает этот параметр и все проверяет заново самостоятельно. |
|||
27
88g88
18.04.25
✎
17:21
|
Большое количество регистров заполненных в стандартном документе. около шести по движениям.
В загруженном 3. В самой форме при выборе расчетов и прочих операций на форме выполняется много разных процедур. Они заполняют всякого. То-есть обработка проведения документа не полная, вернее в ней не все что необходимо для полного проведения. много условий проведения сама форма добавляет. |
|||
28
88g88
18.04.25
✎
17:23
|
сохраненные документы по реквизитам сходятся полностью. и загруженный и созданный в форме.
но движения разные. |
|||
29
88g88
22.04.25
✎
18:04
|
Вопрос решился максимально просто.
Ошибка заполнения тч. В уставшем состоянии не отловил ее сразу. Как только исправил, все взлетело в стандартном исполнении. Всем кто принял участие большое спасибо!!! ;) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |