8.х УТ Ошибка разработчиков? (Введение Реал. на осн. Заказа)

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем Melanto, 15 апр 2008.

  1. TopicStarter Overlay
    Melanto
    Offline

    Melanto Опытный в 1С

    Регистрация:
    28 ноя 2007
    Сообщения:
    204
    Симпатии:
    0
    Баллы:
    26
    Доброго всем дня!

    Возникла проблема:
    оказывается, когда на основании одного ЗаказаПокупателя вводится более одной Реализации и если при этом какая-то позиция Номенклатуры списывается частями в разных Реализациях, возникает проблема.
    1с некорректно пересчитывает цену при списании второй Реализацией остатка неотгруженной ранее Номенклатуры.

    Не знаю почему, но руководство моей фирмы не обновляет 1с Ут (она не ворованная!!!! я правда не знаю, почему), может в обновленных конфах все в норме, но не в этой.

    Если все верно, то ошибка здесь:
    Код:
    // Процедура выполняет добавление строки в табличную часть.
    //
    // Параметры:
    //  ТабличнаяЧасть - табличная часть в которую добавляется строка;
    //  Выборка - запрос, спозиционированный на строке;
    //  Количество - количество в добавляемой строке;
    //  СпособСписанияТоваров - ПеречислениеСсылка.СпособыСписанияОстаткаТоваров.
    //
    Процедура ДобавитьСтрокуТабличнойЧасти(ТабличнаяЧасть, Выборка, Количество, 
    СпособСписанияТоваров, ОбщееКолвоПоЗаказу, СуммаПоЗаказу)
    
    Если Количество <= 0 Тогда
    Возврат;
    КонецЕсли;
    
    Если ТабличнаяЧасть = Товары Тогда
    
    СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
    
    СтрокаТабличнойЧасти.Номенклатура         = Выборка.Номенклатура;
    СтрокаТабличнойЧасти.Количество           = Количество;
    СтрокаТабличнойЧасти.ЕдиницаИзмерения     = Выборка.Единица;
    СтрокаТабличнойЧасти.Коэффициент          = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
    СтрокаТабличнойЧасти.СтавкаНДС            = Выборка.СтавкаНДС;
    СтрокаТабличнойЧасти.СтавкаНП             = Выборка.СтавкаНП;
    СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = Выборка.ПроцентСкидкиНаценки;
    //ОШИБКА В СЛЕДУЮЩЕЙ СТРОКЕ. м.б.
    Если ОбщееКолВоПоЗаказу = Количество Тогда
    СтрокаТабличнойЧасти.Сумма = СуммаПоЗаказу;
    тчПриИзмененииСуммы(СтрокаТабличнойЧасти, ЭтотОбъект);
    Иначе
    Вар= рцПересчет(Выборка.Цена, 
    Сделка.ВалютаДокумента, ВалютаДокумента,
    Сделка.КурсДокумента, КурсДокумента, 
    ...
    
    
    
    Мне думается что д.б. так:
    Код:
    Если Выборка.КоличествоПоЗаказу = Количество Тогда
    СтрокаТабличнойЧасти.Сумма = СуммаПоЗаказу;
    тчПриИзмененииСуммы(СтрокаТабличнойЧасти, ЭтотОбъект);
    Иначе
    
    
    Очень не хочется пороть горячку и внести в конфу ошибочное исправление. Может, кто сталкивался?
    Заранее спасибо
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Собственно - пересчитывает она корректно :)

    Вопрос в другом - конфа точно типовая? Обычно не обновляют, если изменения внесены.
  3. TopicStarter Overlay
    Melanto
    Offline

    Melanto Опытный в 1С

    Регистрация:
    28 ноя 2007
    Сообщения:
    204
    Симпатии:
    0
    Баллы:
    26
    Ну да, там что-то шеф мой с обменом мутил.
    А пересчитывает некорректно! Там в ОбщееКолвоПоЗаказу попадает

    Код:
    ОбщееКолвоПоЗаказу = Мин(Выборка.КоличествоПоЗаказу, Выборка.КоличествоОстатокЗаказы);
    
    где Выборка.КоличествоПоЗаказу - это по Документу , а Выборка.КиоличествоОстатокЗаказы - это еще не списано. Не списано - меньше, и получается, что при списании остатка (напр, 2 из общих 5) КоличествоПоЗаказу=2, Количество=2 и он вбабахивает на оставшиеся 2 единицы ВСЮ сумму из заказа на 5 единиц. Помоему, это не верно. Все должно пройти по ветке ИНАЧЕ и пересчитать сумму по Цене.

    Может, я вам весь модуль скину? Ну нет у меня такого опыта чтобы исправлять со спокойной душой такие вещи...
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Тут ошибки нет, проверяйте отладчиком, что за значения туда попадают..
    Если ОбщееКолВоПоЗаказу = Количество Тогда
  5. TopicStarter Overlay
    Melanto
    Offline

    Melanto Опытный в 1С

    Регистрация:
    28 ноя 2007
    Сообщения:
    204
    Симпатии:
    0
    Баллы:
    26
    Обидеть хотите... Проверяла я отладчиком:
    в Заказе стоит 6 ед.
    первая Реализация - 4 ед.

    Если ОбщееКолВоПоЗаказу(=2) = Количество(=2) Тогда

    Если б я это не увидела, я б не стала ничего говорить...
    Вот этим выражением он замещает ОбщееКолвоПоЗаказу (6), на 2(Выборка.КоличествоОстатокЗаказы)

    Код:
    ОбщееКолвоПоЗаказу = Мин(Выборка.КоличествоПоЗаказу, Выборка.КоличествоОстатокЗаказы);
    
    А у вас все то же и корректно работает? Еще раз скажу, возникает только когда ОДНА номенклатура делится на две Реализации. Я в этой конторе недавно, говорят, так всегда было...
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Вот и я про что - в этом месте ошибки нету :) есть ошибка (видимо) получения этого самомго количества. Смотрите на запрос, что там такого наверчено.

Поделиться этой страницей