Имя: Пароль:
1C
1С v8
Преобразование значения к типу Дата не может быть выполнено при создании документа
0 Gill
 
17.10.22
15:18
Всем привет!
ERP 2.5.8.267
При попытке создания документа из обработки (Меню "Финансовый результат и контроллинг" - "Распределение РБП" - "Распределить расходы") вылетает с ошибкой, при этом некоторые
статьи РБП формируются без проблем. Сравнение данных в соответствующих элементах справочника "Статьи РБП" результата не дали.


Ошибка при вызове метода контекста (ОткрытьФорму)
{Документ.РаспределениеРасходовБудущихПериодов.Форма.ФормаСпискаДокументов.Форма(284)}:            
ОткрытьФорму("Документ.РаспределениеРасходовБудущихПериодов.ФормаОбъекта", СтруктураПараметры, Элементы.Список);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаЗаполнения'
по причине:
{Документ.РаспределениеРасходовБудущихПериодов.МодульМенеджера(290)}: Преобразование значения к типу Дата не может быть выполнено
            ОткрытьФорму("Документ.РаспределениеРасходовБудущихПериодов.ФормаОбъекта", СтруктураПараметры, Элементы.Список);

Отладчик закинул сюда ТУТ :

Функция ПолучитьДатуВозникновенияРБП(ДанныеЗаполнения) Экспорт

    ТекстЗапроса = "
    |ВЫБРАТЬ
    |    МАКСИМУМ(ДатыРасходов.Период) КАК Период
    |ИЗ
    |    (ВЫБРАТЬ
    |        ПрочиеРасходы.Период КАК Период
    |    ИЗ
    |        РегистрНакопления.ПрочиеРасходы КАК ПрочиеРасходы
    |    ГДЕ
    |        ПрочиеРасходы.Организация = &Организация
    |        И ПрочиеРасходы.Подразделение = &Подразделение
    |        И ПрочиеРасходы.НаправлениеДеятельности = &НаправлениеДеятельности
    |        И ПрочиеРасходы.СтатьяРасходов = &СтатьяРасходов
    |        И ПрочиеРасходы.АналитикаРасходов = &АналитикаРасходов
    |        И ПрочиеРасходы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |        И ПрочиеРасходы.Активность
    |        И ПрочиеРасходы.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Период, МЕСЯЦ)
    |    
    |    ОБЪЕДИНИТЬ ВСЕ
    |    
    |    ВЫБРАТЬ
    |        СебестоимостьТоваров.Период
    |    ИЗ
    |        РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров
    |    ГДЕ
    |        СебестоимостьТоваров.Организация = &Организация
    |        И СебестоимостьТоваров.Подразделение = &Подразделение
    |        И СебестоимостьТоваров.КорНаправлениеДеятельности = &НаправлениеДеятельности
    |        И СебестоимостьТоваров.СтатьяРасходовСписания = &СтатьяРасходов
    |        И СебестоимостьТоваров.АналитикаРасходов = &АналитикаРасходов
    |        И СебестоимостьТоваров.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    |        И СебестоимостьТоваров.Активность
    |        И СебестоимостьТоваров.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Период, МЕСЯЦ)
    |        И СебестоимостьТоваров.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию)) КАК ДатыРасходов";
    
//++ НЕ УТ
    Если НЕ ЗначениеЗаполнено(ДанныеЗаполнения.СтатьяРасходов)
        И ТипЗнч(ДанныеЗаполнения.АналитикаРасходов) = Тип("СправочникСсылка.ОбъектыВозникновенияЗатрат") Тогда
        
        ТекстЗапроса = "
        |ВЫБРАТЬ
        |    МАКСИМУМ(ДатыРасходов.Период) КАК Период
        |ИЗ
        |    (ВЫБРАТЬ
        |        ПрочиеРасходы.Период КАК Период
        |    ИЗ
        |        РегистрНакопления.ПрочиеРасходы КАК ПрочиеРасходы
        |    ГДЕ
        |        ПрочиеРасходы.Организация = &Организация
        |        И ПрочиеРасходы.Подразделение = &Подразделение
        |        И ПрочиеРасходы.АналитикаРасходов = &АналитикаРасходов
        |        И ПрочиеРасходы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
        |        И ПрочиеРасходы.Активность
        |        И ПрочиеРасходы.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Период, МЕСЯЦ)
        |    
        |    ОБЪЕДИНИТЬ ВСЕ
        |    
        |    ВЫБРАТЬ
        |        СебестоимостьТоваров.Период
        |    ИЗ
        |        РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров
        |    ГДЕ
        |        СебестоимостьТоваров.Организация = &Организация
        |        И СебестоимостьТоваров.Подразделение = &Подразделение
        |        И СебестоимостьТоваров.АналитикаРасходов = &АналитикаРасходов
        |        И СебестоимостьТоваров.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
        |        И СебестоимостьТоваров.Активность
        |        И СебестоимостьТоваров.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Период, МЕСЯЦ)
        |        И СебестоимостьТоваров.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию)) КАК ДатыРасходов";
        
    КонецЕсли;
//-- НЕ УТ
    
    Запрос = Новый Запрос;
    Запрос.Текст = ТекстЗапроса;
    ОбщегоНазначенияУТ.УстановитьПараметрыЗапроса(Запрос, ДанныеЗаполнения);
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Если Выборка.Следующий() Тогда
        Возврат НачалоДня(Выборка.Период); //ВОТ ЗДЕСЬ ВЫЛЕТАЕТ
    КонецЕсли;
    
    Возврат КонецМесяца(ДанныеЗаполнения.Период);
    
КонецФункции
1 Мультук
 
гуру
17.10.22
15:41
(0)

Ну и что показывает в отладчике Выборка.Период

NULL ?
2 alarm2020
 
17.10.22
15:42
Классный запрос!
3 Gill
 
17.10.22
15:43
(1)

Выражение             Значение                    Тип
Выборка.Период                                    Null
4 Gill
 
17.10.22
15:44
(2) Это из типовой
5 kostyan29
 
17.10.22
15:49
Выдернуть в отладчике ТекстЗапроса. Вставить в Консоль запросов. Посмотреть ДанныеЗаполнения, и из них заполнить все параметры в консоли запросов.
Запустить запрос на выполнение и посмотреть, что там происходит, почему возвращается null
6 alarm2020
 
17.10.22
15:50
(4) Я понимаю, что из типовой. Это вовсе не мешает ему быть классным
7 alarm2020
 
17.10.22
15:51
(5) Там происходит классный запрос
8 Gill
 
17.10.22
16:05
(5) Делал.
Записей в результате 1, Период пусто...
9 alarm2020
 
17.10.22
16:49
(8) Неудивительно. МАКСИМУМ от пусто и должен возвращать пусто
10 Gill
 
17.10.22
16:56
так всё-таки, куда рыть дальше?
11 alarm2020
 
17.10.22
17:09
(10) Зачем еще куда-то рыть?
12 Gill
 
17.10.22
19:16
(11) в чем тут подвох? Подскажите
13 alarm2020
 
17.10.22
19:31
(12) Ну мы же выяснили уже. Кривой запрос в типовой. Не будет у тебя работать распределение
14 Gill
 
18.10.22
08:39
(13) а почему работает в зависимости от выбора конкретной статьи расхода? )
15 mikecool
 
18.10.22
08:55
(14) все уже догадались
16 Мультук
 
гуру
18.10.22
08:56
(14)

Тут два варианта
1) 1С налажала в коде. Это бывает
2) У вас какая-то ерунда в исходных данных

>>а почему работает в зависимости от выбора конкретной статьи расхода? )

Потому что по одной статье движения таки есть, а по другой нужных движений по указанным отборам таки нет?
17 Gill
 
18.10.22
09:03
(17) дело в том, что я проверил оба регистра, и удивительно, что по 2 проверяемым статьям (одна из которой срабатывает) записи есть только одном регистре (а именно "ПрочиеРасходы").Таким образом я убедился в наличии данных.
18 Gill
 
18.10.22
09:05
(16) Про "ерунду" в исходных данных, имеется ввиду в ДанныеЗаполнения?
19 Мультук
 
гуру
18.10.22
09:06
(17)

Хорошо, статья есть, а остальные отборы ?


P.S.

        |    ГДЕ
        |        ПрочиеРасходы.Организация = &Организация
        |        И ПрочиеРасходы.Подразделение = &Подразделение
        |        И ПрочиеРасходы.АналитикаРасходов = &АналитикаРасходов
        |        И ПрочиеРасходы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
        |        И ПрочиеРасходы.Активность
        |        И ПрочиеРасходы.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Период, МЕСЯЦ)
20 Gill
 
18.10.22
09:24
21 alarm2020
 
18.10.22
10:41
(20) НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ) И КОНЕЦПЕРИОДА(&Период, МЕСЯЦ)
22 Gill
 
18.10.22
11:42
(21) вот скрины из рабочей базы, записи идентичны, тем не менее такая же история

https://disk.yandex.ru/i/sSP3yBBObg4lkg

https://disk.yandex.ru/i/7oPjaEtbEFqSiQ
23 Smallrat
 
18.10.22
12:36
(5) ОбщегоНазначения.ЗапросВСтрокуXML(Запрос)
В консоли запросов в меню "Ещё" есть команда "Заполнить из XML"
24 kostyan29
 
18.10.22
13:11
(23) Спасибо большое, не знал!
25 Gill
 
18.10.22
13:12
(23) спасибо за способ, но результаты запроса идентичны.
Я не могу понять логику работы его в разрезе статей при одинаковых (с точки зрения заполнения) данных в регистре накопления.
26 Gill
 
18.10.22
13:13
(24) аналогично)
AdBlock убивает бесплатный контент. 1Сергей