Исправление ошибки арифметического переполнения при преобразовании numeric к типу данных numeric при расчете себестоимости

13.12.16

Разработка - Запросы

В данной статье описывается один из способов исправления ошибки арифметического переполнения при преобразовании numeric к типу данных numeric, с которой не раз сталкивались многие люди, занимающиеся расчетом себестоимости в базах с большим объёмом данных.

Многие люди, занимающиеся расчетом себестоимости в базах с большим объёмом данных, не раз сталкивались со следующей ошибкой:

Microsoft SQL Server Native Client 11.0:Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.

HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1

Особенно часто (судя по личному опыту и темам форумов) данная ошибка появляется при проведении документа "Расчет себестоимости товаров", когда не хватает знаков до запятой при использоании в запросах функции ВЫРАЗИТЬ и происходит потеря значащих цифр при вычислении значения. Один из самых простых и быстрых вариантов решения следующий:

  1. Запускаем проведение проблемного документа расчета с/с в режиме отладки и дожидаемся ошибки.
  2. Смотрим, на какой строке кода происходит ошибка, и идём в конфигуратор. В моём случае это была строка 2519: Запрос.ВыполнитьПакет()[1].Выбрать() модуля объекта документа "Расчет себестоимости"
  3. В тексте запроса ищем функцию ВЫРАЗИТЬ
  4. Если есть строчки ВЫРАЗИТЬ(<ВыбранноеПоле> КАК ЧИСЛО (23,10))  изменяем их на ВЫРАЗИТЬ(<ВыбранноеПоле> КАК ЧИСЛО (25,10)) и радуемся результату

В моём случае текст запроса был изменен следующим образом:

        "ВЫБРАТЬ
		|	УзлыКорректировки.НомерУзла КАК НомерУзла,
		|	ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.Стоимость) КАК ЧИСЛО(25, 10)) КАК СвободныйКоэффициент,
		|	ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.СтоимостьБезНДС) КАК ЧИСЛО(25, 10)) КАК СвободныйКоэффициентБезНДС,
		|	ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.ПостояннаяРазница) КАК ЧИСЛО(25, 10)) КАК СвободныйКоэффициентПостояннаяРазница,
		|	ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.ВременнаяРазница) КАК ЧИСЛО(25, 10)) КАК СвободныйКоэффициентВременнаяРазница,
		|	ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.СтоимостьДопРасходы) КАК ЧИСЛО(25, 10)) КАК СвободныйКоэффициентДопрасходы,
		|	ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.СтоимостьДопРасходыБезНДС) КАК ЧИСЛО(25, 10)) КАК СвободныйКоэффициентДопрасходыБезНДС,
		|	МИНИМУМ(УзлыКорректировки.ВременнаяРазницаЗнак * ЕСТЬNULL(ВтТаблицаРешений.ВременнаяРазницаЗнак, 1)) КАК ВременнаяРазницаЗнак,
		|	МИНИМУМ(УзлыКорректировки.ПостояннаяРазницаЗнак * ЕСТЬNULL(ВтТаблицаРешений.ПостояннаяРазницаЗнак, 1)) КАК ПостояннаяРазницаЗнак,
		|	(ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВтТаблицаРешений.Стоимость, 0) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0)) КАК ЧИСЛО(25, 10))) / УзлыКорректировки.Количество КАК Стоимость,
		|	(ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВтТаблицаРешений.СтоимостьБезНДС, 0) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0)) КАК ЧИСЛО(25, 10))) / УзлыКорректировки.Количество КАК СтоимостьБезНДС,
		|	(ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВтТаблицаРешений.ПостояннаяРазница, 0) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0)) КАК ЧИСЛО(25, 10))) / УзлыКорректировки.Количество КАК ПостояннаяРазница,
		|	(ВЫРАЗИТЬ(СУММА((ЕСТЬNULL(ВтТаблицаРешений.ВременнаяРазница, 0) + ВЫБОР
		|				КОГДА ПеремещенияСписания.КосвенныеЗатратыНУ
		|					ТОГДА ЕСТЬNULL(ВтТаблицаРешений.Стоимость, 0)
		|				ИНАЧЕ 0
		|			КОНЕЦ + ВЫБОР
		|				КОГДА ПеремещенияСписания.КосвенныеЗатратыНУ
		|					ТОГДА ЕСТЬNULL(ВтТаблицаРешений.СтоимостьДопРасходы, 0)
		|				ИНАЧЕ 0
		|			КОНЕЦ) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0)) КАК ЧИСЛО(25, 10))) / УзлыКорректировки.Количество КАК ВременнаяРазница,
		|	(ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВтТаблицаРешений.СтоимостьДопРасходы, 0) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0)) КАК ЧИСЛО(25, 10))) / УзлыКорректировки.Количество КАК СтоимостьДопРасходы,
		|	(ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВтТаблицаРешений.СтоимостьДопРасходыБезНДС, 0) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0)) КАК ЧИСЛО(25, 10))) / УзлыКорректировки.Количество КАК СтоимостьДопРасходыБезНДС
		|ПОМЕСТИТЬ ВременнаяТаблицаРешений
		|ИЗ
		|	ВтУзлыКорректировки КАК УзлыКорректировки
		|		ЛЕВОЕ СОЕДИНЕНИЕ ВтПеремещенияСписания КАК ПеремещенияСписания
		|		ПО УзлыКорректировки.НомерУзла = ПеремещенияСписания.НомерУзлаПриемник
		|		ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаРешений КАК ВтТаблицаРешений
		|		ПО (ПеремещенияСписания.НомерУзлаИсточник = ВтТаблицаРешений.НомерУзла)
		|ГДЕ
		|	УзлыКорректировки.Количество <> 0
		|	И ЕСТЬNULL(ВтТаблицаРешений.Стоимость, 0) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0) > -999999999.999999999
		|	И ЕСТЬNULL(ВтТаблицаРешений.Стоимость, 0) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0) < 999999999.999999999
		|
		|СГРУППИРОВАТЬ ПО
		|	УзлыКорректировки.НомерУзла,
		|	УзлыКорректировки.Количество
		|
		|ИНДЕКСИРОВАТЬ ПО
		|	НомерУзла
		|;
		|

арифметическое переполнение расчет себестоимости закрытие месяца преобразование numeric к типу данных numeric

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122178    670    389    

714

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5746    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6286    31    mkalimulin    25    

50

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1742    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5388    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16186    skovpin_sa    14    

98
Вознаграждение за ответ
Показать полностью
Отзывы
1. корум 287 13.12.16 11:05 Сейчас в теме
Чудны творения твои, 1с...
Innuil; Gendelf; YPermitin; ASMIR.ru; romashka_tr; profisasha; IvanovAV; Gvenor; +8 Ответить
17. maslennikov_ea 5 21.02.18 15:20 Сейчас в теме
(16) (15) (14)(13) Коллеги, всех приветствую! Была аналогичная проблема при переходе на УТ 11.3.4.93 с 11.1.10.199. Долго искал решение и пробовал различные варианты. Пришел к чему - проблему нужно решать другим способом. Тот, что описан в статье дает лишь временное решение и не всегда срабатывает.
Что нужно сделать: нужно проанализировать регистр "ВыручкаИСебестоимостьПродаж". Там Вы увидите, что переполнение происходит из-за огромных цифр, которые получаются из-за ошибок в учете. В каких-то случаях помогало перепроведение, в каких-то пришлось править документы (возвраты, например).
Приведу пример запроса, которым искал ошибки. Вы, конечно, можете написать свой:

ВЫБРАТЬ ПЕРВЫЕ 150
	НАЧАЛОПЕРИОДА(ВыручкаИСебестоимостьПродаж.Период, МЕСЯЦ) КАК МЕСЯЦ,
	ВыручкаИСебестоимостьПродаж.ВременнаяРазница КАК ВременнаяРазница,
	ВыручкаИСебестоимостьПродаж.ПостояннаяРазница КАК ПостояннаяРазница,
	ВыручкаИСебестоимостьПродаж.СуммаВыручкиРегл КАК СуммаВыручкиРегл,
	ВыручкаИСебестоимостьПродаж.СебестоимостьРегл КАК СебестоимостьРегл,
	ВыручкаИСебестоимостьПродаж.Себестоимость КАК Себестоимость,
	ВыручкаИСебестоимостьПродаж.СебестоимостьБезНДС КАК СебестоимостьБезНДС,
	ВыручкаИСебестоимостьПродаж.Период КАК Период,
	ВыручкаИСебестоимостьПродаж.Регистратор КАК Регистратор,
	ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
	ВыручкаИСебестоимостьПродаж.ЗаказКлиента КАК ЗаказКлиента,
	ВыручкаИСебестоимостьПродаж.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ВыручкаИСебестоимостьПродаж.Подразделение КАК Подразделение,
	ВыручкаИСебестоимостьПродаж.ТипЗапасов КАК ТипЗапасов,
	ВыручкаИСебестоимостьПродаж.ВидЗапасов КАК ВидЗапасов,
	ВыручкаИСебестоимостьПродаж.Менеджер КАК Менеджер,
	ВыручкаИСебестоимостьПродаж.Склад КАК Склад,
	ВыручкаИСебестоимостьПродаж.Соглашение КАК Соглашение,
	ВыручкаИСебестоимостьПродаж.Договор КАК Договор,
	ВыручкаИСебестоимостьПродаж.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ВыручкаИСебестоимостьПродаж.АналитикаУчетаНаборов КАК АналитикаУчетаНаборов,
	ВыручкаИСебестоимостьПродаж.Количество КАК Количество,
	ВыручкаИСебестоимостьПродаж.СуммаВыручки КАК СуммаВыручки,
	ВыручкаИСебестоимостьПродаж.СуммаВыручкиБезНДС КАК СуммаВыручкиБезНДС
ПОМЕСТИТЬ ТаблицаОшибок
ИЗ
	РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж

УПОРЯДОЧИТЬ ПО
	ПостояннаяРазница УБЫВ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТаблицаОшибок.МЕСЯЦ КАК МЕСЯЦ,
	ТаблицаОшибок.ВременнаяРазница КАК ВременнаяРазница,
	ТаблицаОшибок.ПостояннаяРазница КАК ПостояннаяРазница,
	ТаблицаОшибок.СуммаВыручкиРегл КАК СуммаВыручкиРегл,
	ТаблицаОшибок.СебестоимостьРегл КАК СебестоимостьРегл,
	ТаблицаОшибок.Себестоимость КАК Себестоимость,
	ТаблицаОшибок.СебестоимостьБезНДС КАК СебестоимостьБезНДС,
	ТаблицаОшибок.Период КАК Период,
	ТаблицаОшибок.Регистратор КАК Регистратор,
	ТаблицаОшибок.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
	ТаблицаОшибок.ЗаказКлиента КАК ЗаказКлиента,
	ТаблицаОшибок.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ТаблицаОшибок.Подразделение КАК Подразделение,
	ТаблицаОшибок.ТипЗапасов КАК ТипЗапасов,
	ТаблицаОшибок.ВидЗапасов КАК ВидЗапасов,
	ТаблицаОшибок.Менеджер КАК Менеджер,
	ТаблицаОшибок.Склад КАК Склад,
	ТаблицаОшибок.Соглашение КАК Соглашение,
	ТаблицаОшибок.Договор КАК Договор,
	ТаблицаОшибок.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ТаблицаОшибок.АналитикаУчетаНаборов КАК АналитикаУчетаНаборов,
	ТаблицаОшибок.Количество КАК Количество,
	ТаблицаОшибок.СуммаВыручки КАК СуммаВыручки,
	ТаблицаОшибок.СуммаВыручкиБезНДС КАК СуммаВыручкиБезНДС
ИЗ
	ТаблицаОшибок КАК ТаблицаОшибок
ГДЕ
	ТаблицаОшибок.Себестоимость > 100000
	ИЛИ ТаблицаОшибок.СебестоимостьРегл > 100000
	ИЛИ  ТаблицаОшибок.ПостояннаяРазница > 100000
Показать
georgebgk; murat_; Tonynya; Aggressorak; ASMIR.ru; gigansk; leossb; PLAstic; +8 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. корум 287 13.12.16 11:05 Сейчас в теме
Чудны творения твои, 1с...
Innuil; Gendelf; YPermitin; ASMIR.ru; romashka_tr; profisasha; IvanovAV; Gvenor; +8 Ответить
2. v3rter 13.12.16 15:33 Сейчас в теме
Плюсану, поскольку сталкивался и лечил такие проблемы в самопальных складских программах.
3. alex_4x 85 13.03.17 13:15 Сейчас в теме
В данном случае помогло, но это не факт, что всегда поможет.
Проблема может быть не только с длиной целой части, но и длиной дробной части.

Суть ошибки в том, что во время вычисления - SQL не может преобразовать тип внутри вычисления как правило умножения или деления. Решается не обязательно увеличением разрядности, достаточно ВЫРАЗИТЬ( Значение , ХХ,ХХ) использовать для всех вычисляемых аргументов в том числе внутри скобок. Тогда SQL не занимается самодеятельностью по выбору типа внутри самого вычисления и ошибка не происходит.

Ну примерно так:
Было:
 ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВтТаблицаРешений.ПостояннаяРазница, 0) * ЕСТЬNULL(ПеремещенияСписания.Количество, 0)) КАК ЧИСЛО(23, 10)))

Будет
ВЫРАЗИТЬ 
СУММА(ВЫРАЗИТЬ ЕСТЬNULL(ПеремещенияСписания.Количество, 0) КАК ЧИСЛО(23, 10) *
 ВЫРАЗИТЬ ЕСТЬNULL(ПеремещенияСписания.Количество, 0) КАК ЧИСЛО(23, 10) )
КАК ЧИСЛО(23, 10)
insurgut; user1432326; Gurami; AndrewVVS; murat_; vatkir; Re:аниматор; Red_Devil; dap; Gvenor; +10 Ответить
19. dap 13 28.08.18 13:52 Сейчас в теме
(3)

Странно, но ошибка эта может вываливаться просто на счетчике.
Вот строка запроса в обработке базопузомера:
Подсчитывалось количество записей в регистре сведений

| СУММА(1) КАК Счетчик

Вот этот счетчик и выдал ошибку. Количество записей в самом большом регистре было около 62 млн. записей

и нормально заработала по вашему совету вот так:

| СУММА(ВЫРАЗИТЬ (1 КАК Число(23,0))) КАК Счетчик

плюсую
24. Red_Devil 179 26.11.19 09:12 Сейчас в теме
(3)тоже самое. Пришлось всем полям ВЫРАЗИТЬ писать. Тогда ошибка ушла

СУММА(ВЫРАЗИТЬ(
		|		ВЫБОР КОГДА ВЫРАЗИТЬ(УзлыКорректировкиСтоимостиСписания.Количество КАК ЧИСЛО(23, 10)) <> 0 ТОГДА
		|			ВЫРАЗИТЬ(ТаблицаРешений.Стоимость КАК ЧИСЛО(23, 10)) *
		|			(ВЫБОР КОГДА ВЫРАЗИТЬ(ВложенныйЗапрос.Количество КАК ЧИСЛО(23, 10)) = 0 ТОГДА 
		|				ВЫРАЗИТЬ(ВложенныйЗапрос.Стоимость КАК ЧИСЛО(23, 10)) 
		|			ИНАЧЕ 
		|				ВЫРАЗИТЬ(ВложенныйЗапрос.Количество КАК ЧИСЛО(23, 10)) 
		|			КОНЕЦ) / 
		|			ВЫРАЗИТЬ(УзлыКорректировкиСтоимостиСписания.Количество КАК ЧИСЛО(23, 10))
		|		ИНАЧЕ
		|			0
		|		КОНЕЦ
		|	КАК ЧИСЛО(23,10))) КАК Стоимость
Показать
27. vatkir 7 09.08.22 14:59 Сейчас в теме
(3) Вашим методом удалось исправить расчет себестоимости УТ 11.2. Процедура РешитьСЛУ

"
// 0 Расчет коэффициентов (количество перехода из состояния в состояние) уравнения.
|ВЫБРАТЬ
| УзлыКорректировки.НомерУзла КАК НомерУзла,
| ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.Стоимость) КАК ЧИСЛО(23,10)) КАК СвободныйКоэффициент,
| ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.СтоимостьБезНДС) КАК ЧИСЛО(23,10)) КАК СвободныйКоэффициентБезНДС,
| ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.ПостояннаяРазница) КАК ЧИСЛО(23,10)) КАК СвободныйКоэффициентПостояннаяРазница,
| ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.ВременнаяРазница) КАК ЧИСЛО(23,10)) КАК СвободныйКоэффициентВременнаяРазница,
| ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.СтоимостьДопРасходы) КАК ЧИСЛО(23,10)) КАК СвободныйКоэффициентДопрасходы,
| ВЫРАЗИТЬ(МАКСИМУМ(УзлыКорректировки.СтоимостьДопРасходыБезНДС) КАК ЧИСЛО(23,10)) КАК СвободныйКоэффициентДопрасходыБезНДС,
|
| МАКСИМУМ(УзлыКорректировки.ВременнаяРазницаЗнак) КАК ВременнаяРазницаЗнак,
| МАКСИМУМ(УзлыКорректировки.ПостояннаяРазницаЗнак) КАК ПостояннаяРазницаЗнак,
|
| ВЫРАЗИТЬ(СУММА(
| ВЫБОР
| КОГДА ЕСТЬNULL(ПеремещенияСписания.ПередачаВЭксплуатацию, ЛОЖЬ) ТОГДА 0
| ИНАЧЕ ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.Стоимость КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ПеремещенияСписания.Количество КАК ЧИСЛО(23,10)), 0) КОНЕЦ) КАК ЧИСЛО(23,10))
| / ВЫРАЗИТЬ(УзлыКорректировки.Количество КАК ЧИСЛО(23,10)) КАК Стоимость,
| ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.СтоимостьБезНДС КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ПеремещенияСписания.Количество КАК ЧИСЛО(23,10)), 0)) КАК ЧИСЛО(23,10))
| / ВЫРАЗИТЬ(УзлыКорректировки.Количество КАК ЧИСЛО(23,10)) КАК СтоимостьБезНДС,
| ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.ПостояннаяРазница КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.ПостояннаяРазницаЗнак КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ПеремещенияСписания.Количество КАК ЧИСЛО(23,10)), 0)) КАК ЧИСЛО(23,10))
| / ВЫРАЗИТЬ(УзлыКорректировки.Количество КАК ЧИСЛО(23,10)) КАК ПостояннаяРазница,
| ВЫРАЗИТЬ(
| СУММА((ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.ВременнаяРазница КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.ВременнаяРазницаЗнак КАК ЧИСЛО(23,10)), 0)
| + ВЫБОР КОГДА ЕСТЬNULL(ПеремещенияСписания.ПередачаВЭксплуатацию, ЛОЖЬ)
| ТОГДА ЕСТЬNULL(-ВЫРАЗИТЬ(ВтТаблицаРешений.Стоимость КАК ЧИСЛО(23,10)), 0) + ЕСТЬNULL(-ВЫРАЗИТЬ(ВтТаблицаРешений.СтоимостьДопРасходы КАК ЧИСЛО(23,10)), 0)
| ИНАЧЕ 0
| КОНЕЦ
| + ВЫБОР КОГДА ЕСТЬNULL(ПеремещенияСписания.КосвенныеЗатратыНУ, ЛОЖЬ)
| ТОГДА ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.Стоимость КАК ЧИСЛО(23,10)), 0) + ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.СтоимостьДопРасходы КАК ЧИСЛО(23,10)), 0)
| ИНАЧЕ 0
| КОНЕЦ)
| * ЕСТЬNULL(ВЫРАЗИТЬ(ПеремещенияСписания.Количество КАК ЧИСЛО(23,10)), 0)) КАК ЧИСЛО(23,10))
| / ВЫРАЗИТЬ(УзлыКорректировки.Количество КАК ЧИСЛО(23,10)) КАК ВременнаяРазница,
| ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.СтоимостьДопРасходы КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ПеремещенияСписания.Количество КАК ЧИСЛО(23,10)), 0)) КАК ЧИСЛО(23,10))
| / ВЫРАЗИТЬ(УзлыКорректировки.Количество КАК ЧИСЛО(23,10)) КАК СтоимостьДопРасходы,
| ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.СтоимостьДопРасходыБезНДС КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ПеремещенияСписания.Количество КАК ЧИСЛО(23,10)), 0)) КАК ЧИСЛО(23,10))
| / ВЫРАЗИТЬ(УзлыКорректировки.Количество КАК ЧИСЛО(23,10)) КАК СтоимостьДопРасходыБезНДС
|
|ПОМЕСТИТЬ ВременнаяТаблицаРешений
|ИЗ
| ВтУзлыКорректировки КАК УзлыКорректировки
| ЛЕВОЕ СОЕДИНЕНИЕ ВтПеремещенияСписания КАК ПеремещенияСписания
| ПО УзлыКорректировки.НомерУзла = ПеремещенияСписания.НомерУзлаПриемник
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаРешений КАК ВтТаблицаРешений
| ПО ПеремещенияСписания.НомерУзлаИсточник = ВтТаблицаРешений.НомерУзла
|ГДЕ
| ВЫРАЗИТЬ(УзлыКорректировки.Количество КАК ЧИСЛО(23,10)) <> 0
| И ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.Стоимость КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ПеремещенияСписания.Количество КАК ЧИСЛО(23,10)), 0) > -999999999.999999999
| И ЕСТЬNULL(ВЫРАЗИТЬ(ВтТаблицаРешений.Стоимость КАК ЧИСЛО(23,10)), 0) * ЕСТЬNULL(ВЫРАЗИТЬ(ПеремещенияСписания.Количество КАК ЧИСЛО(23,10)), 0) < 999999999.999999999
|
|СГРУППИРОВАТЬ ПО
| УзлыКорректировки.НомерУзла,
| УзлыКорректировки.Количество
|
|ИНДЕКСИРОВАТЬ ПО
| НомерУзла
|;
|////////////////////////////////////////////////////////////­/////////////////
// 1 Расчет ошибки расчета.
|ВЫБРАТЬ
| ЕСТЬNULL(
| МАКСИМУМ(
| ВЫБОР КОГДА (ЕСТЬNULL(ТаблицаРешений.Стоимость,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициент
| + ВременнаяТаблицаРешений.Стоимость)) > 0 ТОГДА
|
| ЕСТЬNULL(ТаблицаРешений.Стоимость,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициент
| + ВременнаяТаблицаРешений.Стоимость)
| ИНАЧЕ
| -(
| ЕСТЬNULL(ТаблицаРешений.Стоимость,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициент
| + ВременнаяТаблицаРешений.Стоимость)
| )
| КОНЕЦ
| )
| ,0) КАК Отклонение,
| ЕСТЬNULL(
| МАКСИМУМ(
| ВЫБОР КОГДА (ЕСТЬNULL(ТаблицаРешений.СтоимостьБезНДС,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентБезНДС
| + ВременнаяТаблицаРешений.СтоимостьБезНДС)) > 0 ТОГДА
|
| ЕСТЬNULL(ТаблицаРешений.СтоимостьБезНДС,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентБезНДС
| + ВременнаяТаблицаРешений.СтоимостьБезНДС)
| ИНАЧЕ
| -(
| ЕСТЬNULL(ТаблицаРешений.СтоимостьБезНДС,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентБезНДС
| + ВременнаяТаблицаРешений.СтоимостьБезНДС)
| )
| КОНЕЦ
| )
| ,0) КАК ОтклонениеБезНДС,
| ЕСТЬNULL(
| МАКСИМУМ(
| ВЫБОР КОГДА (ЕСТЬNULL(ТаблицаРешений.СтоимостьДопРасходы,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентДопрасходы
| + ВременнаяТаблицаРешений.СтоимостьДопРасходы)) > 0 ТОГДА
|
| ЕСТЬNULL(ТаблицаРешений.СтоимостьДопРасходы,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентДопрасходы
| + ВременнаяТаблицаРешений.СтоимостьДопРасходы)
|
| ИНАЧЕ
| -(
| ЕСТЬNULL(ТаблицаРешений.СтоимостьДопРасходы,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентДопрасходы
| + ВременнаяТаблицаРешений.СтоимостьДопРасходы)
| )
| КОНЕЦ
| )
| ,0) КАК ОтклонениеДопрасходы,
| ЕСТЬNULL(
| МАКСИМУМ(
| ВЫБОР КОГДА (ЕСТЬNULL(ТаблицаРешений.СтоимостьДопРасходы,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентДопрасходы
| + ВременнаяТаблицаРешений.СтоимостьДопРасходы)) > 0 ТОГДА
|
| ЕСТЬNULL(ТаблицаРешений.СтоимостьДопРасходы,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентДопрасходы
| + ВременнаяТаблицаРешений.СтоимостьДопРасходы)
|
| ИНАЧЕ
| -(
| ЕСТЬNULL(ТаблицаРешений.СтоимостьДопРасходы,0) - (ВременнаяТаблицаРешений.СвободныйКоэффициентДопрасходы
| + ВременнаяТаблицаРешений.СтоимостьДопРасходы)
| )
| КОНЕЦ
| )
| ,0) КАК ОтклонениеДопрасходыБезНДС
|ИЗ
| ВременнаяТаблицаРешений КАК ВременнаяТаблицаРешений
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаРешений КАК ТаблицаРешений
| ПО ВременнаяТаблицаРешений.НомерУзла = ТаблицаРешений.НомерУзла
|;
|////////////////////////////////////////////////////////////­//
// 2 Удаление таблиц.
|УНИЧТОЖИТЬ ВтТаблицаРешений
|;
// 3 Суммирование коэффициентов.
|////////////////////////////////////////////////////////////­//
|ВЫБРАТЬ
| ВременнаяТаблицаРешений.НомерУзла КАК НомерУзла,
| ВЫБОР
| КОГДА ВременнаяТаблицаРешений.СвободныйКоэффициентВременнаяРазница * ВременнаяТаблицаРешений.ВременнаяРазницаЗнак + ВременнаяТаблицаРешений.ВременнаяРазница < 0
| ТОГДА -1
| ИНАЧЕ 1
| КОНЕЦ КАК ВременнаяРазницаЗнак,
| ВЫБОР
| КОГДА ВременнаяТаблицаРешений.СвободныйКоэффициентПостояннаяРазница * ВременнаяТаблицаРешений.ПостояннаяРазницаЗнак + ВременнаяТаблицаРешений.ПостояннаяРазница < 0
| ТОГДА -1
| ИНАЧЕ 1
| КОНЕЦ КАК ПостояннаяРазницаЗнак,
| ВЫРАЗИТЬ(
| ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициент КАК ЧИСЛО(23,10))
| + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.Стоимость КАК ЧИСЛО(23,10))
| КАК ЧИСЛО(23,10)) КАК Стоимость,
| ВЫРАЗИТЬ(
| ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентБезНДС КАК ЧИСЛО(23,10))
| + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СтоимостьБезНДС КАК ЧИСЛО(23,10))
| КАК ЧИСЛО(23,10)) КАК СтоимостьБезНДС,
| ВЫРАЗИТЬ(ВЫБОР
| КОГДА ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентВременнаяРазница КАК ЧИСЛО(23,10)) * ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ВременнаяРазницаЗнак КАК ЧИСЛО(23,10)) + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ВременнаяРазница КАК ЧИСЛО(23,10)) < 0
| ТОГДА -(ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентВременнаяРазница КАК ЧИСЛО(23,10)) * ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ВременнаяРазницаЗнак КАК ЧИСЛО(23,10)) + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ВременнаяРазница КАК ЧИСЛО(23,10)))
| ИНАЧЕ ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентВременнаяРазница КАК ЧИСЛО(23,10)) * ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ВременнаяРазницаЗнак КАК ЧИСЛО(23,10)) + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ВременнаяРазница КАК ЧИСЛО(23,10))
| КОНЕЦ КАК ЧИСЛО(23,10)) КАК ВременнаяРазница,
| ВЫРАЗИТЬ(ВЫБОР
| КОГДА ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентПостояннаяРазница КАК ЧИСЛО(23,10)) * ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ПостояннаяРазницаЗнак КАК ЧИСЛО(23,10)) + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ПостояннаяРазница КАК ЧИСЛО(23,10)) < 0
| ТОГДА -(ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентПостояннаяРазница КАК ЧИСЛО(23,10)) * ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ПостояннаяРазницаЗнак КАК ЧИСЛО(23,10)) + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ПостояннаяРазница КАК ЧИСЛО(23,10)))
| ИНАЧЕ ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентПостояннаяРазница КАК ЧИСЛО(23,10)) * ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ПостояннаяРазницаЗнак КАК ЧИСЛО(23,10)) + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.ПостояннаяРазница КАК ЧИСЛО(23,10))
| КОНЕЦ КАК ЧИСЛО(23,10)) КАК ПостояннаяРазница,
|
| ВЫРАЗИТЬ(
| ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентДопрасходы КАК ЧИСЛО(23,10))
| + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СтоимостьДопРасходы КАК ЧИСЛО(23,10))
| КАК ЧИСЛО(23,10)) КАК СтоимостьДопРасходы,
| ВЫРАЗИТЬ(
| ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СвободныйКоэффициентДопрасходыБезНДС КАК ЧИСЛО(23,10))
| + ВЫРАЗИТЬ(ВременнаяТаблицаРешений.СтоимостьДопРасходыБезНДС КАК ЧИСЛО(23,10))
| КАК ЧИСЛО(23,10)) КАК СтоимостьДопРасходыБезНДС
|
|ПОМЕСТИТЬ ВтТаблицаРешений
|
|ИЗ
| ВременнаяТаблицаРешений КАК ВременнаяТаблицаРешений
|
|ИНДЕКСИРОВАТЬ ПО
| НомерУзла
|;
|////////////////////////////////////////////////////////////­//
// 4 Удаление таблицы.
| УНИЧТОЖИТЬ ВременнаяТаблицаРешений
|"
33. insurgut 207 09.01.24 18:42 Сейчас в теме
(3) здоровья тебе милый человек :) Пока я все операнды в конструкцию ВЫРАЗИТЬ не заключил - никак не мог обойти ошибку.
4. v3rter 13.03.17 14:23 Сейчас в теме
При таких расчетах могут накапливаться и ошибки округления дробной части, здесь это нивелируется десятью знаками после запятой ЧИСЛО(..., 10). Попутно может всплыть проблема сравнения итогов с нулём или константой, так как из-за накопления ошибок округления дробной части выглядеть она будет как -0.0001 < x <0,0001
5. a.artemov 29.06.17 16:05 Сейчас в теме
Коллеги прошу помощи.
Увеличение разрядности не помогло.
Ошибка осталась. Кто может помочь?

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.КорректировкаСтоимостиУчетЗатрат.Модуль(403)}: Ошибка при вызове метода контекста (Выполнить)
Док.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1


Код такой:
СУММА(ВЫРАЗИТЬ(
	|		ВЫБОР КОГДА УчетЗатрат.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
	|			УчетЗатрат.Стоимость
	|		ИНАЧЕ
	|			0
	|		КОНЕЦ
	|	КАК ЧИСЛО(38,10))) КАК Стоимость
6. Al-77 73 29.06.17 22:40 Сейчас в теме
7. Al-77 73 29.06.17 22:40 Сейчас в теме
8. a.artemov 30.06.17 08:08 Сейчас в теме
Управление производственным предприятием, редакция 1.3 (1.3.89.2)

Если есть возможность помочь для более оперативного общения контакты на почту прислать? У меня каждый день на счету.
9. rintik 19 30.06.17 10:03 Сейчас в теме
А если попробовать поменять
|	КАК ЧИСЛО(38,10))) КАК Стоимость


на
|	КАК ЧИСЛО(32,10))) КАК Стоимость
10. корум 287 30.06.17 12:14 Сейчас в теме
(9) читаем статью, "не хватает знаков ДО запятой", метод решения:
Если есть строчки ВЫРАЗИТЬ(<ВыбранноеПоле> КАК ЧИСЛО (23,10)) изменяем их на ВЫРАЗИТЬ(<ВыбранноеПоле> КАК ЧИСЛО (25,10)) и радуемся результату.

Читаем (9) и понимаем, что уменьшение знаков до запятой не поможет...
12. a.artemov 30.06.17 15:01 Сейчас в теме
(9) Начинали с 25,10 дошли до 38,10 не помогает. ТЬочнее попробовал 40,10 ругнулась что перебор...
11. Al-77 73 30.06.17 13:28 Сейчас в теме
У меня такая же ситуация, только последняя УТ 11.3.3.231 я уже 2 месяца пытаюсь найти в данных проблему. пробовал увеличить разрядность, помогло на два месяца потом опять стала ошибка.
13. a.artemov 01.07.17 07:54 Сейчас в теме
Проблема не решена. Помогите кто может.
14. Napalmmm 12.07.17 18:43 Сейчас в теме
Вот и я попал. (37,10) стояло больше двух лет, сейчас не спасло. Решения нет?
15. see888 12.07.17 19:57 Сейчас в теме
Теперь и я) как перевел базу на с 11.1 на 11.3.4... даже не пойму что он там по кругу выполняет,с каждым выполнением отклонение растет. Что это такое вообще? Кто сможет объяснить:
Дополнительная информация об этапе:
- Отклонение на текущей итерации: 42 631,8
- Отклонение на текущей итерации: 24 780
- Отклонение на текущей итерации: 21 311,8
- Отклонение на текущей итерации: 17 797,43
- Отклонение на текущей итерации: 7 800
- Отклонение на текущей итерации: 20 588,5568513129
- Отклонение на текущей итерации: 20 588,556851313
- Отклонение на текущей итерации: 73 530,5601832607
- Отклонение на текущей итерации: 73 530,5601832608
- Отклонение на текущей итерации: 262 609,1435116457
- Отклонение на текущей итерации: 262 609,1435116456
- Отклонение на текущей итерации: 937 889,7982558771
- Отклонение на текущей итерации: 937 889,798255877
- Отклонение на текущей итерации: 3 349 606,4223424179
- Отклонение на текущей итерации: 3 349 606,422342418
- Отклонение на текущей итерации: 11 962 880,07979435
- Отклонение на текущей итерации: 11 962 880,07979435
- Отклонение на текущей итерации: 42 724 571,71355125
- Отклонение на текущей итерации: 42 724 571,71355125
- Отклонение на текущей итерации: 152 587 756,1198258929
- Отклонение на текущей итерации: 152 587 756,119825893
- Отклонение на текущей итерации: 544 956 271,8565210464
- Отклонение на текущей итерации: 544 956 271,8565210464
- Отклонение на текущей итерации: 1 946 272 399,4875751657
- Отклонение на текущей итерации: 1 946 272 399,4875751656
- Отклонение на текущей итерации: 6 950 972 855,3127684486
- Отклонение на текущей итерации: 6 950 972 855,3127684486
- Отклонение на текущей итерации: 24 824 903 054,688458745
- Отклонение на текущей итерации: 24 824 903 054,688458745
- Отклонение на текущей итерации: 88 660 368 052,4587812321
- Отклонение на текущей итерации: 88 660 368 052,458781232
- Отклонение на текущей итерации: 316 644 171 615,9242186857
Это то что под приложением выдал из состоянии расчета.

А в отладчике последнее значение было таково :
267 488 214 754 648 642 684 559 809,9800832
и это на 85 Итерации из 200 как он показывает.

Что тут вообще происходит?)
16. Glav 13.12.17 14:19 Сейчас в теме
Такая же проблема. Увеличение разряда не помогает УТ 11.3.4.124
17. maslennikov_ea 5 21.02.18 15:20 Сейчас в теме
(16) (15) (14)(13) Коллеги, всех приветствую! Была аналогичная проблема при переходе на УТ 11.3.4.93 с 11.1.10.199. Долго искал решение и пробовал различные варианты. Пришел к чему - проблему нужно решать другим способом. Тот, что описан в статье дает лишь временное решение и не всегда срабатывает.
Что нужно сделать: нужно проанализировать регистр "ВыручкаИСебестоимостьПродаж". Там Вы увидите, что переполнение происходит из-за огромных цифр, которые получаются из-за ошибок в учете. В каких-то случаях помогало перепроведение, в каких-то пришлось править документы (возвраты, например).
Приведу пример запроса, которым искал ошибки. Вы, конечно, можете написать свой:

ВЫБРАТЬ ПЕРВЫЕ 150
	НАЧАЛОПЕРИОДА(ВыручкаИСебестоимостьПродаж.Период, МЕСЯЦ) КАК МЕСЯЦ,
	ВыручкаИСебестоимостьПродаж.ВременнаяРазница КАК ВременнаяРазница,
	ВыручкаИСебестоимостьПродаж.ПостояннаяРазница КАК ПостояннаяРазница,
	ВыручкаИСебестоимостьПродаж.СуммаВыручкиРегл КАК СуммаВыручкиРегл,
	ВыручкаИСебестоимостьПродаж.СебестоимостьРегл КАК СебестоимостьРегл,
	ВыручкаИСебестоимостьПродаж.Себестоимость КАК Себестоимость,
	ВыручкаИСебестоимостьПродаж.СебестоимостьБезНДС КАК СебестоимостьБезНДС,
	ВыручкаИСебестоимостьПродаж.Период КАК Период,
	ВыручкаИСебестоимостьПродаж.Регистратор КАК Регистратор,
	ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
	ВыручкаИСебестоимостьПродаж.ЗаказКлиента КАК ЗаказКлиента,
	ВыручкаИСебестоимостьПродаж.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ВыручкаИСебестоимостьПродаж.Подразделение КАК Подразделение,
	ВыручкаИСебестоимостьПродаж.ТипЗапасов КАК ТипЗапасов,
	ВыручкаИСебестоимостьПродаж.ВидЗапасов КАК ВидЗапасов,
	ВыручкаИСебестоимостьПродаж.Менеджер КАК Менеджер,
	ВыручкаИСебестоимостьПродаж.Склад КАК Склад,
	ВыручкаИСебестоимостьПродаж.Соглашение КАК Соглашение,
	ВыручкаИСебестоимостьПродаж.Договор КАК Договор,
	ВыручкаИСебестоимостьПродаж.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ВыручкаИСебестоимостьПродаж.АналитикаУчетаНаборов КАК АналитикаУчетаНаборов,
	ВыручкаИСебестоимостьПродаж.Количество КАК Количество,
	ВыручкаИСебестоимостьПродаж.СуммаВыручки КАК СуммаВыручки,
	ВыручкаИСебестоимостьПродаж.СуммаВыручкиБезНДС КАК СуммаВыручкиБезНДС
ПОМЕСТИТЬ ТаблицаОшибок
ИЗ
	РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж

УПОРЯДОЧИТЬ ПО
	ПостояннаяРазница УБЫВ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТаблицаОшибок.МЕСЯЦ КАК МЕСЯЦ,
	ТаблицаОшибок.ВременнаяРазница КАК ВременнаяРазница,
	ТаблицаОшибок.ПостояннаяРазница КАК ПостояннаяРазница,
	ТаблицаОшибок.СуммаВыручкиРегл КАК СуммаВыручкиРегл,
	ТаблицаОшибок.СебестоимостьРегл КАК СебестоимостьРегл,
	ТаблицаОшибок.Себестоимость КАК Себестоимость,
	ТаблицаОшибок.СебестоимостьБезНДС КАК СебестоимостьБезНДС,
	ТаблицаОшибок.Период КАК Период,
	ТаблицаОшибок.Регистратор КАК Регистратор,
	ТаблицаОшибок.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
	ТаблицаОшибок.ЗаказКлиента КАК ЗаказКлиента,
	ТаблицаОшибок.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ТаблицаОшибок.Подразделение КАК Подразделение,
	ТаблицаОшибок.ТипЗапасов КАК ТипЗапасов,
	ТаблицаОшибок.ВидЗапасов КАК ВидЗапасов,
	ТаблицаОшибок.Менеджер КАК Менеджер,
	ТаблицаОшибок.Склад КАК Склад,
	ТаблицаОшибок.Соглашение КАК Соглашение,
	ТаблицаОшибок.Договор КАК Договор,
	ТаблицаОшибок.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ТаблицаОшибок.АналитикаУчетаНаборов КАК АналитикаУчетаНаборов,
	ТаблицаОшибок.Количество КАК Количество,
	ТаблицаОшибок.СуммаВыручки КАК СуммаВыручки,
	ТаблицаОшибок.СуммаВыручкиБезНДС КАК СуммаВыручкиБезНДС
ИЗ
	ТаблицаОшибок КАК ТаблицаОшибок
ГДЕ
	ТаблицаОшибок.Себестоимость > 100000
	ИЛИ ТаблицаОшибок.СебестоимостьРегл > 100000
	ИЛИ  ТаблицаОшибок.ПостояннаяРазница > 100000
Показать
georgebgk; murat_; Tonynya; Aggressorak; ASMIR.ru; gigansk; leossb; PLAstic; +8 Ответить
34. zoeh 31 16.03.24 06:42 Сейчас в теме
(17)
100000


Мне не помог этот запрос





При выполнении расчета диагностирована ошибка:
При выполнении подзапроса 8 (ВтБазаРаспределенияНаПродажи) произошла ошибка:
Ошибка при вызове метода контекста (Выполнить)
{ОбщийМодуль.РасчетСебестоимостиПрикладныеАлгоритмы.Модуль(17264)}:РезультатПодзапроса = Запрос.Выполнить();
{ОбщийМодуль.РасчетСебестоимостиПрикладныеАлгоритмы.Модуль(6768)}:ВыполнитьЗапросСЗамеромДляПротокола(ПараметрыРасчета, Запрос,,,, Пояснение);
{ОбщийМодуль.РасчетСебестоимостиПостатейныеЗатраты.Модуль(6699)}:ТекстЗапросаРаспределениеРасходовНаПродажи(ПараметрыРасчета));
{ОбщийМодуль.РасчетСебестоимостиПостатейныеЗатраты.Модуль(151)}:ПолучитьДанныеДляРаспределенияРасходовНаПродажу(ПараметрыРасчета);
{ОбщийМодуль.РасчетСебестоимости.Модуль(324)}:РасчетСебестоимостиПостатейныеЗатраты.РаспределениеПостатейныхРасходовНаПродажу(ПараметрыРасчета);
{ОбщийМодуль.РасчетСебестоимости.Модуль(485)}:РассчитатьВсе(ПараметрыЗапуска, ПараметрыРасчета, ПараметрыОтладки);
{ОбщийМодуль.РасчетСебестоимостиКорректировкаСтоимости.Модуль(424)}:РасчетСебестоимости.РассчитатьВсеВПопыткеИсключении(ПараметрыЗапуска);
{(1)}:РасчетСебестоимостиКорректировкаСтоимости.Выполнить_РасчетПартийИСебестоимости(Параметры[0])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5962)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{Обработка.ОперацииЗакрытияМесяца.МодульМенеджера(2048)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(
{ОбщийМодуль.ЗакрытиеМесяцаСервер.Модуль(3151)}:Обработки.ОперацииЗакрытияМесяца.ВыполнитьРасчетЭтапов(ПараметрыЗапуска);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1

{ОбщийМодуль.РасчетСебестоимостиПрикладныеАлгоритмы.Модуль(17296)}:ВызватьИсключение ТекстДляПротокола;
{ОбщийМодуль.РасчетСебестоимостиПрикладныеАлгоритмы.Модуль(6768)}:ВыполнитьЗапросСЗамеромДляПротокола(ПараметрыРасчета, Запрос,,,, Пояснение);
{ОбщийМодуль.РасчетСебестоимостиПостатейныеЗатраты.Модуль(6699)}:ТекстЗапросаРаспределениеРасходовНаПродажи(ПараметрыРасчета));
{ОбщийМодуль.РасчетСебестоимостиПостатейныеЗатраты.Модуль(151)}:ПолучитьДанныеДляРаспределенияРасходовНаПродажу(ПараметрыРасчета);
{ОбщийМодуль.РасчетСебестоимости.Модуль(324)}:РасчетСебестоимостиПостатейныеЗатраты.РаспределениеПостатейныхРасходовНаПродажу(ПараметрыРасчета);
{ОбщийМодуль.РасчетСебестоимости.Модуль(485)}:РассчитатьВсе(ПараметрыЗапуска, ПараметрыРасчета, ПараметрыОтладки);
{ОбщийМодуль.РасчетСебестоимостиКорректировкаСтоимости.Модуль(424)}:РасчетСебестоимости.РассчитатьВсеВПопыткеИсключении(ПараметрыЗапуска);
{(1)}:РасчетСебестоимостиКорректировкаСтоимости.Выполнить_РасчетПартийИСебестоимости(Параметры[0])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5962)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{Обработка.ОперацииЗакрытияМесяца.МодульМенеджера(2048)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(
{ОбщийМодуль.ЗакрытиеМесяцаСервер.Модуль(3151)}:Обработки.ОперацииЗакрытияМесяца.ВыполнитьРасчетЭтапов(ПараметрыЗапуска);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]
18. jefjef 10 29.05.18 17:32 Сейчас в теме
Смысл ошибки можно сформулировать проще.

Запрос не может выразить полученное при исполнении числовое значение, так как в результате получено число больше, чем разрешено условиями запроса.

Если будет конструкция ВЫРАЗИТЬ(1,0) а запросу попадется число 11, то он не сможет выразить его числом от 0 до 9.

Так то у вас все написано правильно, но к сути проблемы докопаться сложно.
user838522; +1 Ответить
20. svetanik 5 07.08.19 01:06 Сейчас в теме
Вот и мои столкнулись с той же ошибкой. Только при проведении Отчета производства за смену (УПП 1.3.120.1 на 8.2.19.130).
В запросе никаких ВЫРАЗИТЬ нет.
Прошу совета в том, как найти ошибку в учете, если есть. Или как поправить запрос:

//// ТекстЗапросаДокумент


ВЫБРАТЬ
	Док.Ссылка.Организация			КАК Организация,
	Док.Ссылка.Подразделение		КАК Подразделение,
	Док.Ссылка.ПодразделениеОрганизации	КАК ПодразделениеОрганизации,

	Док.НомерСтроки,
	ВЫБОР КОГДА Док.Ссылка.ИспользоватьНаработку ТОГДА
		Док.ВидВыпуска
	ИНАЧЕ
		&ВидВыпускаВыпуск		
	КОНЕЦ КАК ВидВыпуска,
	Док.Продукция,
	Док.ХарактеристикаПродукции,
	Док.СерияПродукции,
	Док.Спецификация,

	Док.Номенклатура,
	Док.Номенклатура.ВестиУчетПоСериямВНЗП КАК ВестиУчетПоСериямВНЗП,
	Док.ХарактеристикаНоменклатуры,
	ВЫБОР КОГДА Док.Номенклатура.ВестиУчетПоСериямВНЗП ТОГДА
		Док.СерияНоменклатуры
	ИНАЧЕ
		ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
	КОНЕЦ КАК СерияНоменклатуры,
	Док.НоменклатурнаяГруппа,
	Док.СтатьяЗатрат,

	Док.СчетЗатрат,
	Док.СчетЗатратНУ,
	Док.СчетЗатрат КАК СчетУчета,
	Док.СчетЗатратНУ КАК СчетУчетаНУ,

	ВЫБОР КОГДА Док.Ссылка.ИспользоватьАналитикуНЗП ТОГДА
		Док.НоменклатурнаяГруппаНЗП 
	ИНАЧЕ
		Док.НоменклатурнаяГруппа
	КОНЕЦ КАК НоменклатурнаяГруппаНЗП,

	ВЫБОР КОГДА Док.ПодразделениеНЗП = &ПустоеПодразделение ИЛИ Не Док.Ссылка.ИспользоватьПодразделенияНЗП ТОГДА
		Док.Ссылка.Подразделение
	ИНАЧЕ
		Док.ПодразделениеНЗП
	КОНЕЦ КАК ПодразделениеНЗП,

	ВЫБОР КОГДА Док.ПодразделениеОрганизацииНЗП = &ПустоеПодразделениеОрганизации ИЛИ Не Док.Ссылка.ИспользоватьПодразделенияНЗП ТОГДА
		Док.Ссылка.ПодразделениеОрганизации
	ИНАЧЕ
		Док.ПодразделениеОрганизацииНЗП
	КОНЕЦ КАК ПодразделениеОрганизацииНЗП,

	ВЫБОР КОГДА Док.Ссылка.ИспользоватьЗаказы 
			И Док.Заказ ССЫЛКА Документ.ЗаказПокупателя 
			И Док.Заказ <> &ПустойЗаказПокупателя ТОГДА
		Док.Заказ

	КОГДА Док.Ссылка.ИспользоватьЗаказы 
			И Док.Заказ ССЫЛКА Документ.ЗаказНаПроизводство 
			И Док.Заказ <> &ПустойЗаказНаПроизводство
			И &УчетЗатратПоЗаказамНаПроизводство ТОГДА
		Док.Заказ
	ИНАЧЕ
		Неопределено
	КОНЕЦ КАК Заказ,

	ВЫБОР КОГДА Док.Ссылка.ИспользоватьЗаказы 
			И Док.Заказ ССЫЛКА Документ.ЗаказПокупателя 
			И Док.Заказ <> &ПустойЗаказПокупателя ТОГДА
		Док.Заказ

	КОГДА Док.Ссылка.ИспользоватьЗаказы 
			И Док.Заказ ССЫЛКА Документ.ЗаказНаПроизводство 
			И Док.Заказ <> &ПустойЗаказНаПроизводство
			И &УчетЗатратПоЗаказамНаПроизводствоРегл ТОГДА
		Док.Заказ
	ИНАЧЕ
		Неопределено
	КОНЕЦ КАК ЗаказРегл,

	ВЫБОР КОГДА Док.Ссылка.ИспользоватьАналитикуНЗП 
			И Док.ЗаказНЗП ССЫЛКА Документ.ЗаказПокупателя
			И Док.ЗаказНЗП <> &ПустойЗаказПокупателя ТОГДА
		Док.ЗаказНЗП

	КОГДА Док.Ссылка.ИспользоватьАналитикуНЗП 
			И Док.ЗаказНЗП ССЫЛКА Документ.ЗаказНаПроизводство 
			И Док.ЗаказНЗП <> &ПустойЗаказНаПроизводство
			И &УчетЗатратПоЗаказамНаПроизводство ТОГДА
		Док.ЗаказНЗП

	КОГДА Не Док.Ссылка.ИспользоватьАналитикуНЗП 
			И Док.Заказ ССЫЛКА Документ.ЗаказПокупателя 
			И Док.Заказ <> &ПустойЗаказПокупателя ТОГДА
		Док.Заказ

	КОГДА Не Док.Ссылка.ИспользоватьАналитикуНЗП 
			И Док.Заказ ССЫЛКА Документ.ЗаказНаПроизводство 
			И Док.Заказ <> &ПустойЗаказНаПроизводство
			И &УчетЗатратПоЗаказамНаПроизводство ТОГДА
		Док.Заказ
	ИНАЧЕ
		Неопределено
	КОНЕЦ КАК ЗаказНЗП,

	ВЫБОР КОГДА Док.Ссылка.ИспользоватьАналитикуНЗП 
			И Док.ЗаказНЗП ССЫЛКА Документ.ЗаказПокупателя 
			И Док.ЗаказНЗП <> &ПустойЗаказПокупателя ТОГДА
		Док.ЗаказНЗП

	КОГДА Док.Ссылка.ИспользоватьАналитикуНЗП 
			И Док.ЗаказНЗП ССЫЛКА Документ.ЗаказНаПроизводство 
			И Док.ЗаказНЗП <> &ПустойЗаказНаПроизводство
			И &УчетЗатратПоЗаказамНаПроизводствоРегл ТОГДА
		Док.ЗаказНЗП

	КОГДА Не Док.Ссылка.ИспользоватьАналитикуНЗП 
			И Док.Заказ ССЫЛКА Документ.ЗаказПокупателя 
			И Док.Заказ <> &ПустойЗаказПокупателя ТОГДА
		Док.Заказ

	КОГДА Не Док.Ссылка.ИспользоватьАналитикуНЗП 
			И Док.Заказ ССЫЛКА Документ.ЗаказНаПроизводство 
			И Док.Заказ <> &ПустойЗаказНаПроизводство
			И &УчетЗатратПоЗаказамНаПроизводствоРегл ТОГДА
		Док.Заказ
	ИНАЧЕ
		Неопределено
	КОНЕЦ КАК ЗаказНЗПРегл,

	Неопределено КАК ТипСтоимости,
	Неопределено КАК КодОперации,

	Док.Количество * Док.Коэффициент /Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Количество,
	0 КАК Сумма,
	0 КАК СуммаРегл,
	0 КАК СуммаНал

ПОМЕСТИТЬ ТаблицаДокумента
ИЗ
	Документ.ОтчетПроизводстваЗаСмену.РаспределениеМатериалов КАК Док
ГДЕ
	Док.Ссылка = &Ссылка
	И Док.Ссылка.ИспользоватьМатериалы

//// ТекстЗапросаДокумент КОНЕЦ

/// ШапкаДокумента

ВЫБРАТЬ РАЗЛИЧНЫЕ
	РегистрАналитикаВидаУчета.Ссылка КАК АналитикаВидаУчета,
	РегистрАналитикаВидаУчетаРегл.Ссылка КАК АналитикаВидаУчетаРегл,
	РегистрАналитикаУчетаЗатрат.Ссылка КАК АналитикаУчетаЗатрат,
	РегистрАналитикаРаспределенияЗатрат.Ссылка КАК АналитикаРаспределенияЗатрат,
	РегистрАналитикаУчетаПартий.Ссылка КАК АналитикаУчетаПартий,
	
	РегистрАналитикаВидаУчета.Подразделение,
	РегистрАналитикаВидаУчетаРегл.ПодразделениеОрганизации,
	
	РегистрАналитикаУчетаЗатрат.Затрата,
	РегистрАналитикаУчетаЗатрат.ХарактеристикаЗатраты,
	РегистрАналитикаУчетаЗатрат.СерияЗатраты,
	РегистрАналитикаУчетаЗатрат.СтатьяЗатрат,
	
	РегистрАналитикаРаспределенияЗатрат.НоменклатурнаяГруппа,
	РегистрАналитикаУчетаПартий.Заказ,

	РегистрАналитикаВидаУчетаРегл.СчетУчета,
	ВЫБОР КОГДА ТаблицаДокумента.СчетУчетаНУ = РегистрАналитикаВидаУчетаРегл.СчетУчетаНУ ТОГДА
		РегистрАналитикаВидаУчетаРегл.СчетУчетаНУ
	ИНАЧЕ
		Неопределено
	КОНЕЦ КАК СчетУчетаНУ
	
ПОМЕСТИТЬ ТаблицаАналитики
ИЗ
	ТаблицаДокумента КАК ТаблицаДокумента

	ЛЕВОЕ СОЕДИНЕНИЕ
		РегистрСведений.АналитикаВидаУчета КАК РегистрАналитикаВидаУчета
	ПО
		РегистрАналитикаВидаУчета.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.Затраты)
		И РегистрАналитикаВидаУчета.Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
		И ТаблицаДокумента.ПодразделениеНЗП = РегистрАналитикаВидаУчета.Подразделение
		И РегистрАналитикаВидаУчета.СчетУчета = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка)
		И РегистрАналитикаВидаУчета.СчетУчетаНУ = ЗНАЧЕНИЕ(ПланСчетов.Налоговый.ПустаяСсылка)
		И РегистрАналитикаВидаУчета.Проект = Неопределено
		И РегистрАналитикаВидаУчета.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
		
	ЛЕВОЕ СОЕДИНЕНИЕ
		РегистрСведений.АналитикаВидаУчета КАК РегистрАналитикаВидаУчетаРегл
	ПО
		РегистрАналитикаВидаУчетаРегл.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.Затраты)
		И ТаблицаДокумента.Организация = РегистрАналитикаВидаУчетаРегл.Организация
		И ТаблицаДокумента.ПодразделениеОрганизацииНЗП = РегистрАналитикаВидаУчетаРегл.ПодразделениеОрганизации
		И ТаблицаДокумента.СчетУчета = РегистрАналитикаВидаУчетаРегл.СчетУчета
		И РегистрАналитикаВидаУчетаРегл.Проект = Неопределено
		И РегистрАналитикаВидаУчетаРегл.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)

		
	ЛЕВОЕ СОЕДИНЕНИЕ
		РегистрСведений.АналитикаУчетаЗатрат КАК РегистрАналитикаУчетаЗатрат
	ПО
		ТаблицаДокумента.СтатьяЗатрат = РегистрАналитикаУчетаЗатрат.СтатьяЗатрат
		И ТаблицаДокумента.Номенклатура = РегистрАналитикаУчетаЗатрат.Затрата
		И ТаблицаДокумента.ХарактеристикаНоменклатуры = РегистрАналитикаУчетаЗатрат.ХарактеристикаЗатраты
		И ТаблицаДокумента.СерияНоменклатуры = РегистрАналитикаУчетаЗатрат.СерияЗатраты
		И РегистрАналитикаУчетаЗатрат.ХарактерЗатрат = ЗНАЧЕНИЕ(Перечисление.ХарактерЗатрат.ПроизводственныеРасходы)
		
	ЛЕВОЕ СОЕДИНЕНИЕ
		РегистрСведений.АналитикаРаспределенияЗатрат КАК РегистрАналитикаРаспределенияЗатрат
	ПО
		ТаблицаДокумента.НоменклатурнаяГруппаНЗП = РегистрАналитикаРаспределенияЗатрат.НоменклатурнаяГруппа
		И РегистрАналитикаРаспределенияЗатрат.Продукция = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
		И РегистрАналитикаРаспределенияЗатрат.ХарактеристикаПродукции = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
		И РегистрАналитикаРаспределенияЗатрат.СерияПродукции = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
		И РегистрАналитикаРаспределенияЗатрат.Спецификация = ЗНАЧЕНИЕ(Справочник.СпецификацииНоменклатуры.ПустаяСсылка)
		
	ЛЕВОЕ СОЕДИНЕНИЕ
		РегистрСведений.АналитикаУчетаПартий КАК РегистрАналитикаУчетаПартий
	ПО
		(ТаблицаДокумента.Заказ = РегистрАналитикаУчетаПартий.Заказ
		ИЛИ ТаблицаДокумента.ЗаказНЗП = РегистрАналитикаУчетаПартий.Заказ)
		И РегистрАналитикаУчетаПартий.ДоговорКомитента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
		И РегистрАналитикаУчетаПартий.ДоговорКомиссионера = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
		И РегистрАналитикаУчетаПартий.ДокументПередачи = ЗНАЧЕНИЕ(Документ.ПередачаМатериаловВЭксплуатацию.ПустаяСсылка)
		И РегистрАналитикаУчетаПартий.ФизЛицо = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
		И РегистрАналитикаУчетаПартий.НазначениеИспользования = ЗНАЧЕНИЕ(Справочник.НазначенияИспользования.ПустаяСсылка)
		И РегистрАналитикаУчетаПартий.СтатусПартии = ЗНАЧЕНИЕ(Перечисление.СтатусыПартийТоваров.ПустаяСсылка)
		
/// ШапкаДокумента  КОНЕЦ

////////////////////////////////////////
ВЫБРАТЬ
	УчетЗатрат.АналитикаВидаУчета,
	УчетЗатрат.АналитикаУчетаЗатрат,
	УчетЗатрат.АналитикаРаспределенияЗатрат,
	УчетЗатрат.АналитикаУчетаПартий,
	//ДляРеглУчета УчетЗатрат.СтоимостьНУОстаток,
	//ДляРеглУчета УчетЗатрат.КоличествоНУОстаток,
	УчетЗатрат.СтоимостьОстаток,
	УчетЗатрат.КоличествоОстаток
	
ПОМЕСТИТЬ УчетЗатрат
ИЗ
	РегистрНакопления.УчетЗатрат.Остатки(&КонДата, 
		(
		АналитикаВидаУчета,
		АналитикаУчетаЗатрат,
		АналитикаРаспределенияЗатрат,
		АналитикаУчетаПартий
		) В (
			ВЫБРАТЬ
				 АналитикаВидаУчета,
				//ДляРеглУчета АналитикаВидаУчетаРегл,
				АналитикаУчетаЗатрат,
				АналитикаРаспределенияЗатрат,
				АналитикаУчетаПартий
			ИЗ
				ТаблицаАналитики
			)
	) КАК УчетЗатрат
;
////////////////////////////////////////////////////////////­////////////////

ВЫБРАТЬ
	ТаблицаАналитики.Подразделение,
	ТаблицаАналитики.ПодразделениеОрганизации,
	
	ТаблицаАналитики.Затрата,
	ТаблицаАналитики.ХарактеристикаЗатраты,
	ТаблицаАналитики.СерияЗатраты,
	ТаблицаАналитики.СтатьяЗатрат,
	
	ТаблицаАналитики.НоменклатурнаяГруппа,
	ТаблицаАналитики.Заказ КАК Заказ,

	ТаблицаАналитики.СчетУчета,

	//ДляРеглУчета СУММА(
	//ДляРеглУчета 	ВЫБОР КОГДА ТаблицаАналитики.СчетУчетаНУ <> Неопределено ТОГДА
	//ДляРеглУчета 		УчетЗатрат.СтоимостьНУОстаток
	//ДляРеглУчета 	ИНАЧЕ
	//ДляРеглУчета 		0
	//ДляРеглУчета 	КОНЕЦ
	//ДляРеглУчета ) КАК СтоимостьНУОстаток,

	//ДляРеглУчета СУММА(
	//ДляРеглУчета 	ВЫБОР КОГДА ТаблицаАналитики.СчетУчетаНУ <> Неопределено ТОГДА
	//ДляРеглУчета 		УчетЗатрат.КоличествоНУОстаток
	//ДляРеглУчета 	ИНАЧЕ
	//ДляРеглУчета 		0
	//ДляРеглУчета 	КОНЕЦ
	//ДляРеглУчета ) КАК КоличествоНУОстаток,

	СУММА(УчетЗатрат.СтоимостьОстаток) КАК СтоимостьОстаток,
	СУММА(УчетЗатрат.КоличествоОстаток) КАК КоличествоОстаток

ПОМЕСТИТЬ ТаблицаСтоимостиЗатрат
ИЗ
	УчетЗатрат КАК УчетЗатрат
	
	ЛЕВОЕ СОЕДИНЕНИЕ
		ТаблицаАналитики КАК ТаблицаАналитики
	ПО
		 УчетЗатрат.АналитикаВидаУчета = ТаблицаАналитики.АналитикаВидаУчета
		//ДляРеглУчета УчетЗатрат.АналитикаВидаУчета = ТаблицаАналитики.АналитикаВидаУчетаРегл
		И УчетЗатрат.АналитикаУчетаЗатрат = ТаблицаАналитики.АналитикаУчетаЗатрат
		И УчетЗатрат.АналитикаРаспределенияЗатрат = ТаблицаАналитики.АналитикаРаспределенияЗатрат
		И УчетЗатрат.АналитикаУчетаПартий = ТаблицаАналитики.АналитикаУчетаПартий

СГРУППИРОВАТЬ ПО
	ТаблицаАналитики.Подразделение,
	ТаблицаАналитики.ПодразделениеОрганизации,
	
	ТаблицаАналитики.Затрата,
	ТаблицаАналитики.ХарактеристикаЗатраты,
	ТаблицаАналитики.СерияЗатраты,
	ТаблицаАналитики.СтатьяЗатрат,
	
	ТаблицаАналитики.НоменклатурнаяГруппа,
	ТаблицаАналитики.Заказ,
	ТаблицаАналитики.СчетУчета
;
////////////////////////////////////////////////////////////­////////////////
УНИЧТОЖИТЬ УчетЗатрат
;
//ТекстТаблицаСтоимостиРегл

ВЫБРАТЬ
	Док.*,
	Док.СтатьяЗатрат.ВидЗатрат КАК ВидЗатрат,
	Док.СтатьяЗатрат.СтатусМатериальныхЗатрат КАК СтатусМатериальныхЗатрат,
	Неопределено КАК СпособРаспределенияЗатрат,
	Док.Номенклатура КАК Затрата,
	Док.ХарактеристикаНоменклатуры КАК ХарактеристикаЗатраты,
	Док.СерияНоменклатуры КАК СерияЗатраты,
	ВЫБОР КОГДА Док.КодОперации <> Неопределено ТОГДА
		Док.КодОперации 
	ИНАЧЕ
   	&ПрямыеЗатраты
	КОНЕЦ КАК КодОперации,

	ВЫБОР КОГДА Док.Заказ ССЫЛКА Документ.ЗаказПокупателя
		И Док.Заказ.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.Переработка)
	ТОГДА
		ЗНАЧЕНИЕ(Перечисление.ВариантыВыпускаПродукции.ПродукцияИзДавальческогоСырья)
	ИНАЧЕ
      	Неопределено
	КОНЕЦ КАК ВариантВыпускаПродукции,

	&Ссылка КАК ДокументВыпуска,

		ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
			Док.Сумма
	 	КОГДА ТаблицаСтоимостиЗатратУУ.КоличествоОстаток = 0
				ИЛИ ТаблицаСтоимостиЗатратУУ.КоличествоОстаток ЕСТЬ NULL ТОГДА
			0
		ИНАЧЕ
			Док.Количество *
			ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток /
			ТаблицаСтоимостиЗатратУУ.КоличествоОстаток
		КОНЕЦ КАК СуммаУУ,

	//ПрямыеЗатратыБУ	ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
	//ПрямыеЗатратыБУ		Док.СуммаРегл
	//ПрямыеЗатратыБУ 	КОГДА ТаблицаСтоимостиЗатратРегл.КоличествоОстаток = 0
	//ПрямыеЗатратыБУ			ИЛИ ТаблицаСтоимостиЗатратРегл.КоличествоОстаток ЕСТЬ NULL ТОГДА
	//ПрямыеЗатратыБУ		0
	//ПрямыеЗатратыБУ	ИНАЧЕ
	//ПрямыеЗатратыБУ		Док.Количество *
	//ПрямыеЗатратыБУ		ТаблицаСтоимостиЗатратРегл.СтоимостьОстаток /
	//ПрямыеЗатратыБУ		ТаблицаСтоимостиЗатратРегл.КоличествоОстаток
	//ПрямыеЗатратыБУ	КОНЕЦ КАК СуммаБУ,

	//ПрямыеЗатратыБУ	ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
	//ПрямыеЗатратыБУ		Док.СуммаНал
	//ПрямыеЗатратыБУ 	КОГДА ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток = 0
	//ПрямыеЗатратыБУ			ИЛИ ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток ЕСТЬ NULL ТОГДА
	//ПрямыеЗатратыБУ		0
	//ПрямыеЗатратыБУ	ИНАЧЕ
	//ПрямыеЗатратыБУ		Док.Количество *
	//ПрямыеЗатратыБУ		ТаблицаСтоимостиЗатратРегл.СтоимостьНУОстаток /
	//ПрямыеЗатратыБУ		ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток
	//ПрямыеЗатратыБУ	КОНЕЦ КАК СуммаНУ,

	//ФиксСтоимость		Док.Сумма КАК СуммаУУ,
	//ФиксСтоимость		Док.СуммаРегл КАК СуммаБУ,
	//ФиксСтоимость		Док.СуммаНал КАК СуммаНУ,

	//ПоНулевойУУ 		0 КАК СуммаУУ,
	 		0 КАК СуммаБУ,
	 		0 КАК СуммаНУ,

	Док.Количество

ИЗ 
	ТаблицаДокумента КАК Док

		ЛЕВОЕ СОЕДИНЕНИЕ 
			ТаблицаСтоимостиЗатрат КАК ТаблицаСтоимостиЗатратУУ
		ПО 
			Док.Номенклатура = ТаблицаСтоимостиЗатратУУ.Затрата
			И Док.ХарактеристикаНоменклатуры = ТаблицаСтоимостиЗатратУУ.ХарактеристикаЗатраты
			И Док.СерияНоменклатуры = ТаблицаСтоимостиЗатратУУ.СерияЗатраты
			И Док.СтатьяЗатрат = ТаблицаСтоимостиЗатратУУ.СтатьяЗатрат
			И Док.НоменклатурнаяГруппаНЗП = ТаблицаСтоимостиЗатратУУ.НоменклатурнаяГруппа
			И Док.ЗаказНЗП = ТаблицаСтоимостиЗатратУУ.Заказ
			И Док.ПодразделениеНЗП = ТаблицаСтоимостиЗатратУУ.Подразделение

	//ПрямыеЗатратыБУ	ЛЕВОЕ СОЕДИНЕНИЕ 
	//ПрямыеЗатратыБУ		ТаблицаСтоимостиЗатратРегл КАК ТаблицаСтоимостиЗатратРегл
	//ПрямыеЗатратыБУ	ПО 
	//ПрямыеЗатратыБУ		Док.Номенклатура = ТаблицаСтоимостиЗатратРегл.Затрата
	//ПрямыеЗатратыБУ		И Док.ХарактеристикаНоменклатуры = ТаблицаСтоимостиЗатратРегл.ХарактеристикаЗатраты
	//ПрямыеЗатратыБУ		И Док.СерияНоменклатуры = ТаблицаСтоимостиЗатратРегл.СерияЗатраты
	//ПрямыеЗатратыБУ		И Док.СтатьяЗатрат = ТаблицаСтоимостиЗатратРегл.СтатьяЗатрат
	//ПрямыеЗатратыБУ		И Док.НоменклатурнаяГруппаНЗП = ТаблицаСтоимостиЗатратРегл.НоменклатурнаяГруппа
	//ПрямыеЗатратыБУ		И Док.ЗаказНЗПРегл = ТаблицаСтоимостиЗатратРегл.ЗаказРегл
	//ПрямыеЗатратыБУ		И (Док.СчетЗатрат = ТаблицаСтоимостиЗатратРегл.СчетУчета
	//ПрямыеЗатратыБУ			ИЛИ ТаблицаСтоимостиЗатратРегл.СчетУчета = Неопределено)
	//ПрямыеЗатратыБУ		И Док.ПодразделениеОрганизацииНЗП = ТаблицаСтоимостиЗатратРегл.ПодразделениеОрганизации

УПОРЯДОЧИТЬ ПО
	Док.НомерСтроки

Показать
23. kabantus 26.10.19 21:35 Сейчас в теме
(20)
В УПП измените часть приведенного вами кода следующим образом:

&Ссылка КАК ДокументВыпуска,

        ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
            Док.Сумма
         КОГДА ТаблицаСтоимостиЗатратУУ.КоличествоОстаток = 0
                ИЛИ ТаблицаСтоимостиЗатратУУ.КоличествоОстаток ЕСТЬ NULL ТОГДА
            0
        ИНАЧЕ
            Док.Количество *
            ВЫРАЗИТЬ(ТаблицаСтоимостиЗатратУУ.СтоимостьОстаток  КАК ЧИСЛО (27,10)) /
            ТаблицаСтоимостиЗатратУУ.КоличествоОстаток
        КОНЕЦ КАК СуммаУУ,

    //ПрямыеЗатратыБУ    ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
    //ПрямыеЗатратыБУ        Док.СуммаРегл
    //ПрямыеЗатратыБУ     КОГДА ТаблицаСтоимостиЗатратРегл.КоличествоОстаток = 0
    //ПрямыеЗатратыБУ            ИЛИ ТаблицаСтоимостиЗатратРегл.КоличествоОстаток ЕСТЬ NULL ТОГДА
    //ПрямыеЗатратыБУ        0
    //ПрямыеЗатратыБУ    ИНАЧЕ
    //ПрямыеЗатратыБУ        Док.Количество *
    //ПрямыеЗатратыБУ        ВЫРАЗИТЬ(ТаблицаСтоимостиЗатратРегл.СтоимостьОстаток КАК ЧИСЛО (27,10)) /
    //ПрямыеЗатратыБУ        ТаблицаСтоимостиЗатратРегл.КоличествоОстаток
    //ПрямыеЗатратыБУ    КОНЕЦ КАК СуммаБУ,

    //ПрямыеЗатратыБУ    ВЫБОР КОГДА Док.ТипСтоимости = ЗНАЧЕНИЕ(Перечисление.ВидыНормативнойСтоимостиПроизводства.Фиксированная) ТОГДА
    //ПрямыеЗатратыБУ        Док.СуммаНал
    //ПрямыеЗатратыБУ     КОГДА ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток = 0
    //ПрямыеЗатратыБУ            ИЛИ ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток ЕСТЬ NULL ТОГДА
    //ПрямыеЗатратыБУ        0
    //ПрямыеЗатратыБУ    ИНАЧЕ
    //ПрямыеЗатратыБУ        Док.Количество *
    //ПрямыеЗатратыБУ        ВЫРАЗИТЬ(ТаблицаСтоимостиЗатратРегл.СтоимостьНУОстаток КАК ЧИСЛО (27,10)) /
    //ПрямыеЗатратыБУ        ТаблицаСтоимостиЗатратРегл.КоличествоНУОстаток
    //ПрямыеЗатратыБУ    КОНЕЦ КАК СуммаНУ,

    //ФиксСтоимость        Док.Сумма КАК СуммаУУ,
    //ФиксСтоимость        Док.СуммаРегл КАК СуммаБУ,
    //ФиксСтоимость        Док.СуммаНал КАК СуммаНУ,

    //ПоНулевойУУ         0 КАК СуммаУУ,
             0 КАК СуммаБУ,
             0 КАК СуммаНУ,

    Док.Количество
Показать


Число 27 в этом примере означает октиллион. По умолчанию в системе граничным значением является 15 - триллион (биллион).
Как только в запросе появляются значения по разрядности равные квадриллиону возникает ошибка.
Максимально допустимое значение 38 - это между 10^36 андециллионом и 10^39 дуодециллионом.

Также скорее всего потребуется увеличить разрядность ресурса Стоимость регистра накопления УчетЗатрат.

Когда увеличенное значение достигнет предела и ошибка снова появится можно в настройках учетной политики
сменить порядок формирования учетных цен с По прямым затратам на По нулевой стоимости (при этом программа перестанет переходить в ту ветку запроса, где ранее происходило деление и умножение гиганстких цифр).

Ну а если и это не подойдет, то придется разбираться с проводками документов на тестовой базе.
26. tango 506 13.08.20 17:13 Сейчас в теме
21. gusen_it 6 04.10.19 00:22 Сейчас в теме
Такая же проблема. Запрос к регистру ВыручкаИСебестоимостьПродаж показал что каждый документ записан 2 раза один раз с правильным количеством товара и суммы. а второй раз с правильной суммой а количество равное нулю. После отмены проведения и повторно ручного проведения запись документа в этом регистре с нулевым количеством исчезает. Это стандартное поведение или ошибка в системе?
22. TelekaevAB 07.10.19 10:24 Сейчас в теме
В конце сентября так же столкнулись с такой проблемой. Не решается СЛУ в процедуре расчета себестоимости, увеличение длины переменной не дает эффект, т.к. отклонение растет с каждой итерацией (хотя на рабочем бэкапе оно падает), т.е. сколько не увеличь столько оно и займет. Проблема появилась "вдруг" 27-го сентября. Всё это время пытался найти решения, пытался повторить положительный опыт найденный тут и на других форумах (исключение отрицательных остатков, исправление регистров...), но ничего не давало эффекта. Восстановили бэкап от 23-го сентября и попытался найти разницу между текущей не рабочей базой и рабочей от 23-го.
Разница была на входе условий для запуска процедуры решения СЛУ, она заключалась в том, что на рабочей базе датой начала использования партионного учета стояла дата "01.01.0001 0:00:00" (явно установили в момент заведения новой базы, а используем мы её с конца 09.2018), а в не рабочей дата начала партионного учета стояла "01.09.2019 0:00:00". Проведя эксперимент с бэкапом от 23.09.19 выяснил, что:
1. Если в настройках учета (в администрировании) выключить, а потом включить партионный учет, то дата начала сменится на текущий месяц.
2. При подобной операции на рабочем бэкапе воспроизвелась та же ошибка, что получена на боевой, т.е. я предполагаю уже основываясь на проведенном опыте, что именно отключение/включение партионного учета приводит с сбою расчета себестоимости.
Себестоимость считается по ФИФО взвешенная. Партионный учет версии 2.2. УТ версии 11.3.4.21 (есть изменения, процесс подготовки обновления идет, но пока не готовы обновить).
Попытался понять по какому принципу устанавливается дата начала ведения партионного учета (ведь интерфейс не дает её изменить, она не активна) и нашел процедуру соответствующую, вот кусочек кода:
	// Включение партионного учета.
			Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьПартионныйУчет") Тогда
				КонстантаИмя = "ИспользоватьПартионныйУчет";
				Константы.ИспользоватьПартионныйУчет.Установить(Истина);
			КонецЕсли;
			
			Если (РежимПартионногоУчета = "Версия22") <> ПолучитьФункциональнуюОпцию("ПартионныйУчетВерсии22") Тогда
				
				// Включение партионного учета версии 2.2.
				КонстантаИмя = "ПартионныйУчетВерсии22";
				Константы.ПартионныйУчетВерсии22.Установить(РежимПартионногоУчета = "Версия22");
			
				Если РежимПартионногоУчета = "Версия22" И НЕ ЗначениеЗаполнено(НаборКонстант.ДатаПереходаНаПартионныйУчетВерсии22) Тогда
					
					// Если в ИБ есть движения, то установим дату перехода на этот месяц; если движений нет, то пусть дата остается пустой
					Запрос = Новый Запрос;
					Запрос.Текст =
					"ВЫБРАТЬ ПЕРВЫЕ 1
					|	1
					|ИЗ
					|	РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров";
					
					УстановитьПривилегированныйРежим(Истина);
					ЕстьДвиженияСебестоимости = НЕ Запрос.Выполнить().Пустой();
					УстановитьПривилегированныйРежим(Ложь);
					
					Если ЕстьДвиженияСебестоимости Тогда
						НаборКонстант.ДатаПереходаНаПартионныйУчетВерсии22 = НачалоМесяца(ТекущаяДатаСеанса());
						СохранитьЗначениеРеквизита("НаборКонстант.ДатаПереходаНаПартионныйУчетВерсии22");
					КонецЕсли;
					
				КонецЕсли;
				
			КонецЕсли;
Показать

Я совсем слаб в коде 1с (да и в целом в рабоче 1с), поэтому делаю вывод просто из комментария - если движения были в базе, то делаем началом текущего месяца, если не были, то делаем датой 01.01.0001 0:00:00. Проверяет он по регистру себестоимости товаров судя по коду.
Теперь вопросы:
1. Как решить проблему не расчета себестоимости наиболее корректно? В каком направлении двигаться? Попытаться включить партионный учет задним числом? Если да то как? Или в каком направлении смотреть?
2. Почему так легко 1с дает сломать систему расчета себе стоимости? Никаких предупреждений она не выдает, в настройках просто переключатель, не нужно нажимать что-то типа "разрешить изменения", "могут быть последствия" и т.д.
Очень надеюсь на помощь, спасибо.
25. sokol_6630 3 11.06.20 05:08 Сейчас в теме
Привет.
Я выбирал количество записей в таблице регистра сведений,там было 13 миллионов записей и выдавалась такая же ошибка, помогло ВЫРАЗИТЬ (1 КАК Число(23,0))
28. user1385401 31.08.22 05:18 Сейчас в теме
Помог запрос по РН Выручка и себестоимость продаж, не закрывался май, он вывел на документ Отчет комиссионера -перепровела документ
и май закрылся
29. zoeh 31 14.10.22 09:11 Сейчас в теме
(28)какой конкретно запрос помог?
30. insurgut 207 10.11.23 15:27 Сейчас в теме
Поделюсь своим опытом... и тем, как SQL "понимает" арифметические операции. Точнее как она их решает "тупо в лоб".
Пример:
СУММА(ВЫРАЗИТЬ(РаспределениеЗапасов.Количество * ВЫБОР
				КОГДА РаспределениеЗапасов.КоличествоПродукции = 0
					ТОГДА 1
				ИНАЧЕ ПродукцияИЭтапы.Количество * ВЫБОР
						КОГДА ПродукцияИЭтапы.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения
							ТОГДА ПродукцияИЭтапы.Номенклатура.КоэффициентЕдиницыДляОтчетов  / ПродукцияИЭтапы.Спецификация.ВесПродукции
						ИНАЧЕ 1
					КОНЕЦ / РаспределениеЗапасов.КоличествоПродукции
			КОНЕЦ КАК ЧИСЛО(15, 3))) КАК Количество
Показать


Решение в лоб ЧИСЛО(15, 3) заменить на ЧИСЛО(25, 3) - никак не решало проблемы.

Проблема в том, что получается SQL не решает операции внутри конструкции ВЫБОР, и в результате, если убрать условия, то выглядит он так:

СУММА(ВЫРАЗИТЬ(РаспределениеЗапасов.Количество
*
ПродукцияИЭтапы.Количество
*
ПродукцияИЭтапы.Номенклатура.КоэффициентЕдиницыДляОтчетов  / ПродукцияИЭтапы.Спецификация.ВесПродукции
/
РаспределениеЗапасов.КоличествоПродукции
КАК ЧИСЛО(15, 3))) КАК Количество
Показать


Т.е. в данном участке если бы решилось конструкция внутри ВЫБОР ПродукцияИЭтапы.Номенклатура.КоэффициентЕдиницыДляОтчетов / ПродукцияИЭтапы.Спецификация.ВесПродукции - проблем бы не было, там результат 0,1. Но так как решение идет по порядку, получается что
РаспределениеЗапасов.Количество * ПродукцияИЭтапы.Количество * ПродукцияИЭтапы.Номенклатура.КоэффициентЕдиницыДляОтчетов

выходит далеко за пределы 25 разрядов.
В результате пришлось в запросе
ПродукцияИЭтапы.Номенклатура.КоэффициентЕдиницыДляОтчетов  / ПродукцияИЭтапы.Спецификация.ВесПродукции

заменить на параметр &КоэффициентПродукции, который уже в параметры просто подставлять.

Не знаю понятно нет, может у кого-то частный случай будет походим, может поможет.
31. _Vovik 96 13.12.23 18:23 Сейчас в теме
УТ 11.4. Не проводился документ с аналогичной ошибкой. Тупо в закрытии месяца нажал расчет себестоимости в каждом не закрытом месяце до текущего. Помогло.
32. mrsmrv 125 25.12.23 07:00 Сейчас в теме
А мне помогло. В УНФ было 23.10, поставил 32.12 стало проводится.
Оставьте свое сообщение