Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 ноя 2024, 23:37

Проблема с расчетом себестоимости в УТ 11.1.10.131

Автор Дмитрий Котляров, 28 дек 2015, 16:55

0 Пользователей и 1 гость просматривают эту тему.

Дмитрий Котляров

Добрый день, помогите пожалуйста разобраться с проблемой.
При закрытии месяца выдает ошибку расчета себестоимости, точнее их две и по двум товарам, вот в качестве примера один из них.
2 ошибки привожу в скриншотах.
пишет что есть не корректный остаток в регистре по складу Транзит, количество равно 0, а себестоимость отлична от нуля.

далее привожу два отчета и движения в регистре по этому товару и складу за июнь 2015 года.
самое для меня интересное и не понятное, что в регистре есть измерение "раздел учета". и если его включить в группировки ("отчет себестоимость за июнь2015 (развернутый))", то остатки идут по разделу "Товары на складах", а обороты по "пустому" разделу учета.
а если я открываю движения в регистре (что прикрепил в виде таблице и скрина) то там все движения идут по разделу "Товары на складах"

а главное что как я ни мучил базу, я не смог добиться чтобы отчет показал мне строку из регистра, где остаток кол-ва 0, а себестоимость не ноль.

на всякий случай привожу процедуру с запросами которые дают эту ошибку, которые находятся в модуле менеджера в документе "РасчетСебестоимостиТоваров"

Процедура ПроверитьКорректностьОстатковВРегистреСебестоимостьТоваров(Дата, Организация)

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

МассивОрганизаций = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Организация");

Запрос.Текст = "
|ВЫБРАТЬ
| Таб.РазделУчета                        КАК РазделУчета,
| Таб.ВидЗапасов                         КАК ВидЗапасов,
| Таб.Организация                        КАК Организация,
| АналитикаНоменклатуры.Номенклатура     КАК Номенклатура,
| АналитикаНоменклатуры.Номенклатура.Код КАК КодНоменклатуры,
| АналитикаНоменклатуры.Характеристика   КАК Характеристика,
| АналитикаНоменклатуры.Склад            КАК Склад,
| Таб.Количество                         КАК Количество,
| Таб.Стоимость                          КАК Стоимость,
| Таб.СтоимостьБезНДС                    КАК СтоимостьБезНДС,
| Таб.СуммаДопРасходов                   КАК СуммаДопРасходов,
| Таб.СуммаДопРасходовБезНДС             КАК СуммаДопРасходовБезНДС,
| Таб.СтоимостьРегл                      КАК СтоимостьРегл
|
|ИЗ
| (ВЫБРАТЬ
| Т.РазделУчета                   КАК РазделУчета,
| Т.ВидЗапасов                    КАК ВидЗапасов,
| Т.Организация                   КАК Организация,
| Т.АналитикаУчетаНоменклатуры    КАК АналитикаУчетаНоменклатуры,
| Т.КоличествоОстаток             КАК Количество,
| Т.СтоимостьОстаток              КАК Стоимость,
| Т.СтоимостьБезНДСОстаток        КАК СтоимостьБезНДС,
| Т.СуммаДопРасходовОстаток       КАК СуммаДопРасходов,
| Т.СуммаДопРасходовБезНДСОстаток КАК СуммаДопРасходовБезНДС,
| Т.СтоимостьРеглОстаток          КАК СтоимостьРегл
| ИЗ
| РегистрНакопления.СебестоимостьТоваров.Остатки(&ГраницаДатаОкончания,
| Организация В (&МассивОрганизаций)) КАК Т
| ) КАК Таб
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаНоменклатуры
| ПО Таб.АналитикаУчетаНоменклатуры = АналитикаНоменклатуры.КлючАналитики
|
|ГДЕ
| Таб.Количество = 0
| И НЕ(Таб.Стоимость = 0
| И Таб.СтоимостьБезНДС = 0
| И Таб.СуммаДопРасходов = 0
| И Таб.СуммаДопРасходовБезНДС = 0
| И Таб.СтоимостьРегл = 0)";

Запрос.УстановитьПараметр("МассивОрганизаций", МассивОрганизаций);
Запрос.УстановитьПараметр("ГраницаДатаОкончания", Новый Граница(КонецМесяца(Дата), ВидГраницы.Включая));

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл

ПредставлениеТовара = НоменклатураКлиентСервер.ПредставлениеНоменклатуры(Выборка.Номенклатура, Выборка.Характеристика);
ПредставлениеТовара = ПредставлениеТовара + ", код: " + Выборка.КодНоменклатуры;
ПредставлениеТовара = ПредставлениеТовара + ", склад: " + Выборка.Склад + ", организация: " + Выборка.Организация;
ПредставлениеТовара = ПредставлениеТовара + ", раздел учета: " + Выборка.РазделУчета;
Если ЗначениеЗаполнено(Выборка.ВидЗапасов) Тогда
ПредставлениеТовара = ПредставлениеТовара + ", вид запасов: " + Выборка.ВидЗапасов;
КонецЕсли;
ПредставлениеНекорректногоОстатка = "Количество = 0"
+ ?(Выборка.Стоимость <> 0,", Стоимость = " + Выборка.Стоимость, "")
+ ?(Выборка.СтоимостьБезНДС <> 0,", СтоимостьБезНДС = " + Выборка.СтоимостьБезНДС, "")
+ ?(Выборка.СуммаДопРасходов <> 0,", СуммаДопРасходов = " + Выборка.СуммаДопРасходов, "")
+ ?(Выборка.СуммаДопРасходовБезНДС <> 0,", СуммаДопРасходовБезНДС = " + Выборка.СуммаДопРасходовБезНДС, "")
+ ?(Выборка.СтоимостьРегл <> 0,", СтоимостьРегл = " + Выборка.СтоимостьРегл, "");

ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'По номенклатуре %1 обнаружен некорректный остаток в регистре ""Себестоимость товаров"" на дату %3 : %2'"),
ПредставлениеТовара,
ПредставлениеНекорректногоОстатка,
КонецМесяца(Дата));

ЗаписьЖурналаРегистрации(
НСтр("ru = 'Расчет себестоимости'"),
УровеньЖурналаРегистрации.Ошибка,
,
Строка(Выборка.Номенклатура) + " (" + СокрЛП(Выборка.КодНоменклатуры) + ")",
ТекстОшибки,
РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);

КонецЦикла;

КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск