Функция РешитьСЛУ() в УНФ

1. user2109808 19.02.25 07:45 Сейчас в теме
В Функция РешитьСЛУ() модуле объекта документа Закрытие Месяца выдает ошибку
Ошибка при вызове метода контекста (Записать)
{Обработка.ЗакрытиеМесяца.МодульМенеджера(2202)}:    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
{Обработка.ЗакрытиеМесяца.МодульМенеджера(72)}:        ВыполнитьОперациюЗакрытияМесяца(СтруктураПараметров, Операция, ДокументЗакрытияМесяца);
{(1)}:Обработки.ЗакрытиеМесяца.ВыполнитьЗакрытиеМесяца(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5113)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1036)}:        ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1026)}:        ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ЗакрытиеМесяца.МодульОбъекта(1301)}: Ошибка при вызове метода контекста (ВыполнитьПакет)
    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Переполнение поля
по причине:
Ошибка SQL: Переполнение поля
Показать


после первой же итерации
    ТекущееОтклонение = 1;
    ТребуемаяТочность = 0.00001;
    КоличествоИтераций = 0;
...
Пока (ТекущееОтклонение > ТребуемаяТочность * ТребуемаяТочность) И (КоличествоИтераций < 100) Цикл
        КоличествоИтераций = КоличествоИтераций + 1;
        
        // Следующая итерация расчета.
        Запрос.Текст = 
Показать


переменная "текущее отклонение" становится приближенное к этому числу 2324855784,24862123. и с последующей итерацией увеличивается в 2 , а то и в 3 раза.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. RustamZz 19.02.25 08:00 Сейчас в теме
(1) Значит эта система линейных уравнений не имеет решения.
4. user2109808 19.02.25 08:03 Сейчас в теме
(3) чего? как-то ж люди закрыли ноябрь месяц, почему декабрь не могут? единственный вариант из-за себестоимости, но как эту падлу - товар, найти.....
9. RustamZz 19.02.25 09:31 Сейчас в теме
(4) Я сталкивался со случаем когда делали резерв по заказу, снимали резервированием, а потом заказ передвигали в следующий месяц. Если не ошибаюсь, я вам об этом уже отвечал.
2. user2109808 19.02.25 07:47 Сейчас в теме
запрос огромный ->
Запрос.Текст = 
        "ВЫБРАТЬ
        |    УзлыКорректировкиСтоимостиСписания.НомерУзла КАК НомерУзла,
        |    СУММА(ВЫРАЗИТЬ(ВЫБОР
        |                КОГДА УзлыКорректировкиСтоимостиСписания.Количество <> 0
        |                    ТОГДА ТаблицаРешений.Сумма * ВЫБОР
        |                            КОГДА УчетЗатрат.Количество = 0
        |                                ТОГДА УчетЗатрат.Сумма
        |                            ИНАЧЕ УчетЗатрат.Количество
        |                        КОНЕЦ / УзлыКорректировкиСтоимостиСписания.Количество
        |                ИНАЧЕ 0
        |            КОНЕЦ КАК ЧИСЛО(25, 10))) КАК Сумма
        |ПОМЕСТИТЬ ВременнаяТаблицаРешений
        |ИЗ
        |    РегистрСведений.УзлыКорректировкиСтоимостиСписания КАК УзлыКорректировкиСтоимостиСписания
        |        ЛЕВОЕ СОЕДИНЕНИЕ УчетЗатрат КАК УчетЗатрат
        |            ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРешений КАК ТаблицаРешений
        |            ПО УчетЗатрат.НомерУзла = ТаблицаРешений.НомерУзла
        |        ПО УзлыКорректировкиСтоимостиСписания.Организация = УчетЗатрат.Организация
        |            И УзлыКорректировкиСтоимостиСписания.СтруктурнаяЕдиница = УчетЗатрат.СтруктурнаяЕдиница
        |            И УзлыКорректировкиСтоимостиСписания.СчетУчета = УчетЗатрат.СчетУчета
        |            И УзлыКорректировкиСтоимостиСписания.Номенклатура = УчетЗатрат.Номенклатура
        |            И УзлыКорректировкиСтоимостиСписания.Характеристика = УчетЗатрат.Характеристика
        |            И УзлыКорректировкиСтоимостиСписания.Партия = УчетЗатрат.Партия
        |            И УзлыКорректировкиСтоимостиСписания.ЗаказПокупателя = УчетЗатрат.ЗаказПокупателя
        |            И УзлыКорректировкиСтоимостиСписания.ЗаказНаПроизводство = УчетЗатрат.ЗаказНаПроизводство
        |ГДЕ
        |    УзлыКорректировкиСтоимостиСписания.Регистратор = &Регистратор
        |
        |СГРУППИРОВАТЬ ПО
        |    УзлыКорректировкиСтоимостиСписания.НомерУзла
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    НомерУзла
        |;
        |
        |////////////////////////////////////////////////////////////­////////////////////
        |ВЫБРАТЬ
        |    СУММА((ЕСТЬNULL(ТаблицаРешений.Сумма, 0) - (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0))) * (ЕСТЬNULL(ТаблицаРешений.Сумма, 0) - (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0)))) КАК СуммаКвадратовОтклонений
        |ИЗ
        |    РегистрСведений.УзлыКорректировкиСтоимостиСписания КАК УзлыКорректировкиСтоимостиСписания
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаРешений КАК ВременнаяТаблицаРешений
        |        ПО (ВременнаяТаблицаРешений.НомерУзла = УзлыКорректировкиСтоимостиСписания.НомерУзла)
        |        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРешений КАК ТаблицаРешений
        |        ПО (ТаблицаРешений.НомерУзла = УзлыКорректировкиСтоимостиСписания.НомерУзла)
        |ГДЕ
        |    УзлыКорректировкиСтоимостиСписания.Регистратор = &Регистратор";

Показать


до него еще 3 не менее огромных запроса с созданием и описанием временной таблицы
5. GenaT1C 19.02.25 09:05 Сейчас в теме
(2) Гляньте, есть ли в коде УНФ что-то вроде квадратичных отклонений или суммы квадратов отклонений?
6. user2109808 19.02.25 09:17 Сейчас в теме
7. user2109808 19.02.25 09:18 Сейчас в теме
(5) в (2) как раз таки же и в запросе оно
СУММА((ЕСТЬNULL(ТаблицаРешений.Сумма, 0) - (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0))) * (ЕСТЬNULL(ТаблицаРешений.Сумма, 0) - (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0)))) КАК СуммаКвадратовОтклонений
8. GenaT1C 19.02.25 09:27 Сейчас в теме
(7) Отлично. Чисто математически, если ошибочно начали с минуса, то пойдёт раскачка средних квадратов вплоть до бесконечности.
Вывод: найдите отрицательную сумму и/или количество на начальных остатках и поправьте.
10. user2109808 19.02.25 09:37 Сейчас в теме
(8) то бишь проверить в РС УзлыКорректировкиСтоимостиСписания на срезе последних количество и сумму ?хорошо
11. GenaT1C 19.02.25 09:42 Сейчас в теме
(10) Вам виднее, у меня нет УНФ. Главное - ищите ошибочный входной минус перед средними квадратами, где ПРОИЗВЕДЕНИЕ параметров, причём без модулей. Тогда пойдёт разнос и физически выделенное на диске место под число переполнится.
Это я чисто теоретически рассуждаю )
19. user2109808 19.02.25 12:41 Сейчас в теме
(11)
где ПРОИЗВЕДЕНИЕ параметров

он про это говорил?
|ВЫБРАТЬ
        |    СУММА((ЕСТЬNULL(ТаблицаРешений.Сумма, 0) - (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0))) * (ЕСТЬNULL(ТаблицаРешений.Сумма, 0) - (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0)))) КАК СуммаКвадратовОтклонений
13. RustamZz 19.02.25 09:59 Сейчас в теме
(10) Этот РС заполнен только в процессе расчета с/с. Потом очищается. Ищите в РН, как советует Геннадий.
14. user2109808 19.02.25 10:06 Сейчас в теме
(13) РН ...значит это учет затрат, но это временная таблица, а рн будет запасы
12. GenaT1C 19.02.25 09:54 Сейчас в теме
Лично я не мудрил бы с отладчиком и узлами, а просто сформировал бы отчёт по остаткам товаров или материалов (что там у Вас), и глянул бы на конец месяца, ведь именно они и будут входом для Закрытия месяца. Увидел бы "красную сволочь" сразу, ну и ликвидировал бы её )
15. user2109808 19.02.25 12:02 Сейчас в теме
(12) а что если я поставил

Попытка 
            МассивРезультатов = Запрос.ВыполнитьПакет();  
        Исключение
            лкОшибка= ОписаниеОшибки();
            сообщить("это ошибка: " + лкОшибка);
        КонецПопытки;
        Результат = МассивРезультатов[1];
        
        СтароеОтклонение = ТекущееОтклонение;
Показать

после запроса где рассчитывается сумма квадратов. и уже выдало: таблица не найдена "ВременнаяТаблицаРешений"
левое соединение временнаятаблицарешений как временнаятаблица решений
16. RustamZz 19.02.25 12:18 Сейчас в теме
(15) Вместо следования советам вы идете своим не понятным путем. Очевидно что ВременнаяТаблицаРешений удаляется при выполнении запроса, так как даже в названии содержит слово Временная.
17. user2109808 19.02.25 12:29 Сейчас в теме
(16) вы не правы. я иду по всем советам которые мне дают.
18. user2109808 19.02.25 12:36 Сейчас в теме
(16) рн запасы остатки выдали мне минусы по сумме такие как -0,2; -0,15; -0,01; -3,19; -28 569,3
20. GenaT1C 19.02.25 12:45 Сейчас в теме
21. user2109808 19.02.25 13:03 Сейчас в теме
(20) помечать на удаление?
22. RustamZz 19.02.25 15:28 Сейчас в теме
(18) Количественные минуса надо смотреть.
23. user2109808 20.02.25 07:20 Сейчас в теме
(22) там не лучше. но какой привлечет больше внимания?
24. RustamZz 20.02.25 08:21 Сейчас в теме
(23) Не должно быть ни одного количественного минуса, ни на начало ни на конец месяца, что бы решение гарантированно нашлось.
25. user2109808 20.02.25 08:35 Сейчас в теме
(24) надо еще раз запрос на запасы построить, но пока тестирование делаю
26. GenaT1C 20.02.25 09:45 Сейчас в теме
Достаточно убрать красноту, минутное дело... нет - три дня автор тестирует и изучает...
тяжёлый случай )
27. user2109808 20.02.25 10:16 Сейчас в теме
(24)
(26)
тяжёлый случай )

когда ты сталкиваешься с этим в первый раз и еще сам зеленый то конечно
28. user2109808 20.02.25 10:26 Сейчас в теме
(26) а если количество остаток на конец предыдущего месяца у некоторых товаров пустое?
29. user2109808 20.02.25 10:30 Сейчас в теме
(28) и если так даже в оборотах? кол-во на начало и конец месяца пусты
30. RustamZz 20.02.25 11:07 Сейчас в теме
(28) Значит нужно перезакрыть прошлый месяц
31. user2109808 20.02.25 11:16 Сейчас в теме
(30)
(30) ни фи га. еще варианты?))
32. user2109808 20.02.25 11:25 Сейчас в теме
(31) а не , вывело
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот