Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Конвертация. Проверка типа документа

Конвертация. Проверка типа документа
Я
   elevika
 
05.02.21 - 15:13
Всем добрый день. Пишу правила конвертации. Надо перед выгрузкой во всех документах проверять дату, и если она меньше ГраницыЗапретаИзменений, то не выгружать
в Обработчике конвертиции "Перед выгрузкой" пишу условие:
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
    Если Объект.Метаданные().Реквизиты.Найти("Дата") <> Неопределено И (Объект.Дата < Параметры.ГраницаЗапретаИзменений) Тогда
          Отказ = Истина;
    КонецЕсли;
КонецЕсли;

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

В результате после выгрузки сообщает:
Документ объект: Перемещение товаров
Нет

т.е. реально не определяет, что это документ
Есть у кого-нибудь мысли, почему?
   DrShad
 
1 - 05.02.21 - 15:35
определяет, но объект и ссылка все таки разные типы
   ДенисЧ
 
2 - 05.02.21 - 15:37
Документы.ТипВсеСсылки()
Документ объект: Перемещение товаров

Ни на какие мысли не наводит?
   elevika
 
3 - 05.02.21 - 15:39
(1) Да, когда писала я об этом тоже подумала, но код взяла хелпа этого обработчика. Там, правда, справочник. Но суть то одна. Вот код из хелпа:
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
 Если Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено И (Параметры.Организация <> Объект.Организация) Тогда
  Отказ = Истина;
 КонецЕсли;
КонецЕсли;

Ну и тогда вопрос: как определить, что это документ?
   ДенисЧ
 
4 - 05.02.21 - 15:40
Если тупо - то Объект.Ссылка.
   DrShad
 
5 - 05.02.21 - 15:41
и дата это стандартный реквизит документа и он есть у всех документов, т.е. условие на наличие такого реквизита избыточно
   elevika
 
6 - 05.02.21 - 15:51
(4) (5) Спасибо )) Попробую
   mistеr
 
7 - 05.02.21 - 15:54
(0) Это нужно не при выгрузке, а при регистрации проверять.
   elevika
 
8 - 05.02.21 - 16:01
(7) Не получится. Ситуация: дату запрета временно сдвигают назад, правят документ, он регистрируется для обмена, дату запрета восстанавливают прежней, а документ идет измененным в базу-приемник. А нам надо, чтобы все уже перенесенные документы из закрытого периода (в базе-источнике) больше не переносились
   elevika
 
9 - 05.02.21 - 16:14
Знатоки, подскажите ещё как сравнить две даты в Конвертации? В коде пишу:
Если Объект.Дата < Параметры.ГраницаЗапретаИзменений Тогда
Оба имеют значение типа дата. Но на этой строчке выдает ошибку "преобразование к типу число не может быть выполнено"
   DrShad
 
10 - 05.02.21 - 16:21
как типы проверяешь?
   ДенисЧ
 
11 - 05.02.21 - 16:21
"Оба имеют значение типа дата"

Значит, одна из черепашек врёт.
   elevika
 
12 - 05.02.21 - 16:23
(10) Сообщить("ГЗИ: "+ТипЗнч(Параметры.ГраницаЗапретаИзменений));
Сообщить("Дата документа: "+ТипЗнч(Объект.Дата));
 На выходе получаю:
ГЗИ: Дата
Дата документа: Дата
   Cthulhu
 
13 - 05.02.21 - 16:25
типы "дата" и "граница" - разные. хотя и очень похожие.
   elevika
 
14 - 05.02.21 - 16:29
(13) Параметр.ГраницаЗапретаИзменений я беру из реквизита РС, который имеет тип "Дата". Могу этот параметр обозвать как угодно. Чем его тип будет отличаться от типа ДАТА? И как привести их к одному типу?
   elevika
 
15 - 05.02.21 - 16:56
Думала, может формат дат разный. Попробовала привести к одному формату через НачалоДня() - ничо не помогает (( При сравнении ошибка "Преобразование значения к типу Число не может быть выполнено"
   elevika
 
16 - 05.02.21 - 17:10
Все заработало! Помогло именно НачалоДня()
Всем спасибо ))

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.