() Вашим методом удалось исправить расчет себестоимости УТ 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 Удаление таблицы.
| УНИЧТОЖИТЬ ВременнаяТаблицаРешений
|"