|
Конвертация. Проверка типа документа | ☑ | ||
---|---|---|---|---|
0
elevika
05.02.21
✎
15:13
|
Всем добрый день. Пишу правила конвертации. Надо перед выгрузкой во всех документах проверять дату, и если она меньше ГраницыЗапретаИзменений, то не выгружать
в Обработчике конвертиции "Перед выгрузкой" пишу условие: Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда Если Объект.Метаданные().Реквизиты.Найти("Дата") <> Неопределено И (Объект.Дата < Параметры.ГраницаЗапретаИзменений) Тогда Отказ = Истина; КонецЕсли; КонецЕсли; Ощущение, что внутрь условия не попадает. Добавила для отладки сообщения: Сообщить(ТипЗнч(Объект)); Сообщить(Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект))); Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда Если Объект.Метаданные().Реквизиты.Найти("Дата") <> Неопределено И (Объект.Дата < Параметры.ГраницаЗапретаИзменений) Тогда Отказ = Истина; КонецЕсли; КонецЕсли; В результате после выгрузки сообщает: Документ объект: Перемещение товаров Нет т.е. реально не определяет, что это документ Есть у кого-нибудь мысли, почему? |
|||
1
DrShad
05.02.21
✎
15:35
|
определяет, но объект и ссылка все таки разные типы
|
|||
2
ДенисЧ
05.02.21
✎
15:37
|
Документы.ТипВсеСсылки()
Документ объект: Перемещение товаров Ни на какие мысли не наводит? |
|||
3
elevika
05.02.21
✎
15:39
|
(1) Да, когда писала я об этом тоже подумала, но код взяла хелпа этого обработчика. Там, правда, справочник. Но суть то одна. Вот код из хелпа:
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда Если Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено И (Параметры.Организация <> Объект.Организация) Тогда Отказ = Истина; КонецЕсли; КонецЕсли; Ну и тогда вопрос: как определить, что это документ? |
|||
4
ДенисЧ
05.02.21
✎
15:40
|
Если тупо - то Объект.Ссылка.
|
|||
5
DrShad
05.02.21
✎
15:41
|
и дата это стандартный реквизит документа и он есть у всех документов, т.е. условие на наличие такого реквизита избыточно
|
|||
6
elevika
05.02.21
✎
15:51
|
(4) (5) Спасибо )) Попробую
|
|||
7
mistеr
05.02.21
✎
15:54
|
(0) Это нужно не при выгрузке, а при регистрации проверять.
|
|||
8
elevika
05.02.21
✎
16:01
|
(7) Не получится. Ситуация: дату запрета временно сдвигают назад, правят документ, он регистрируется для обмена, дату запрета восстанавливают прежней, а документ идет измененным в базу-приемник. А нам надо, чтобы все уже перенесенные документы из закрытого периода (в базе-источнике) больше не переносились
|
|||
9
elevika
05.02.21
✎
16:14
|
Знатоки, подскажите ещё как сравнить две даты в Конвертации? В коде пишу:
Если Объект.Дата < Параметры.ГраницаЗапретаИзменений Тогда Оба имеют значение типа дата. Но на этой строчке выдает ошибку "преобразование к типу число не может быть выполнено" |
|||
10
DrShad
05.02.21
✎
16:21
|
как типы проверяешь?
|
|||
11
ДенисЧ
05.02.21
✎
16:21
|
"Оба имеют значение типа дата"
Значит, одна из черепашек врёт. |
|||
12
elevika
05.02.21
✎
16:23
|
(10) Сообщить("ГЗИ: "+ТипЗнч(Параметры.ГраницаЗапретаИзменений));
Сообщить("Дата документа: "+ТипЗнч(Объект.Дата)); На выходе получаю: ГЗИ: Дата Дата документа: Дата |
|||
13
Cthulhu
05.02.21
✎
16:25
|
типы "дата" и "граница" - разные. хотя и очень похожие.
|
|||
14
elevika
05.02.21
✎
16:29
|
(13) Параметр.ГраницаЗапретаИзменений я беру из реквизита РС, который имеет тип "Дата". Могу этот параметр обозвать как угодно. Чем его тип будет отличаться от типа ДАТА? И как привести их к одному типу?
|
|||
15
elevika
05.02.21
✎
16:56
|
Думала, может формат дат разный. Попробовала привести к одному формату через НачалоДня() - ничо не помогает (( При сравнении ошибка "Преобразование значения к типу Число не может быть выполнено"
|
|||
16
elevika
05.02.21
✎
17:10
|
Все заработало! Помогло именно НачалоДня()
Всем спасибо )) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |