Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Функции единицы измерения УТП 8.3 Конф. 1.2 УТП , Как верно использовать дополнительные единицы измерения          
RSL-1 Подменю пользователя
сообщение 04.01.21, 16:16
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Кто знает точную формулу, как рассчитывается количество и цена единицы измерения в документах?
Суть в чем, я хочу ввести несколько единиц измерения для каждой номенклатуры.
Проблема вся в том, что в одной единице измерения мы измеряем обьем, а дрогой единицей площадь, а третьей количество.
м3, м2, пачка
Базовая единица Пачка = количеству в м3 - Она подтягивается на сайт
Единица хранения м3 = 1 коэф. - Единица в которой регистрируют поставщики товар
Единица для отчетов м2 = м3 / толщину изделия
Если Базовой единицей считать Пачка, то остаток отображается не верно (в Ведомостях Пачка = остатку 10, хотя это остаток в м3)
Если же Базовой единицей поставить м3, то это не удобно в плане учета и выписывания документов.
// Процедура выполняет стандартные действия при изменении единицы цены
// в строке табличной части документа.
//
// Параметры:
//  СтрокаТабличнойЧасти - строка табличной части документа,
//  ДокументОбъект       - объект редактируемого документа
//
Процедура ПриИзмененииЕдиницыТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект) Экспорт

    ИмяТабличнойЧасти   = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
    МетаданныеДокумента = ДокументОбъект.Метаданные();

    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмеренияМест", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
        Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("КоличествоМест", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда

            Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмерения)
               И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
                ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " не выбрана единица измерения цены!
                                 |Пересчет количества невозможен.");
            Иначе
                СтароеЗначениеКоэффициента = СтрокаТабличнойЧасти.Коэффициент;
                НовоеЗначениеКоэффициента  = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;

                СтрокаТабличнойЧасти.Коэффициент = НовоеЗначениеКоэффициента;

                Если НовоеЗначениеКоэффициента <> СтароеЗначениеКоэффициента
                   И СтароеЗначениеКоэффициента <> 0 Тогда
                    

                    Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест) Тогда
                        СтрокаТабличнойЧасти.Количество  = СтрокаТабличнойЧасти.Количество * СтароеЗначениеКоэффициента
                                                           / НовоеЗначениеКоэффициента;
                    КонецЕсли;

                    РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);




                    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Цена", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
                        СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Цена *НовоеЗначениеКоэффициента
                                                    / СтароеЗначениеКоэффициента;
                    КонецЕсли;
                    
                    
                    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЦенаНоминальная", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
                        СтрокаТабличнойЧасти.ЦенаНоминальная = СтрокаТабличнойЧасти.ЦенаНоминальная *НовоеЗначениеКоэффициента
                                                    / СтароеЗначениеКоэффициента;
                    КонецЕсли;
                    
                    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПлановаяСтоимость", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
                        СтрокаТабличнойЧасти.ПлановаяСтоимость = СтрокаТабличнойЧасти.ПлановаяСтоимость *НовоеЗначениеКоэффициента
                                                    / СтароеЗначениеКоэффициента;
                    КонецЕсли;
                                                
                                                
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    Иначе
        
        Если НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмерения) Тогда
            ОбщегоНазначения.СообщитьОбОшибке("Для " + СокрЛП(СтрокаТабличнойЧасти.Номенклатура) + " не выбрана единица измерения цены!
                             |Пересчет количества невозможен.");
        Иначе
            СтароеЗначениеКоэффициента = СтрокаТабличнойЧасти.Коэффициент;
            НовоеЗначениеКоэффициента  = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;

            СтрокаТабличнойЧасти.Коэффициент = НовоеЗначениеКоэффициента;

            Если НовоеЗначениеКоэффициента <> СтароеЗначениеКоэффициента Тогда

                // если в табличной части есть реквизит КоличествоМест, то цена задается не за ЕдиницуИзмерения,
                // а за базовую единицу хранения остатков. Т.е. цену пересчитывать не нужно
                Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("КоличествоМест", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
                    // надо обновить изменение к-ва в документе
                    РассчитатьКоличествоТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
                Иначе
                    // ПересчитатьЦену
                    Если СтароеЗначениеКоэффициента > 0
                        И ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Цена", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
                        СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Коэффициент
                        / СтароеЗначениеКоэффициента;
                    КонецЕсли;

                    Если СтароеЗначениеКоэффициента > 0
                        И ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЦенаВРознице", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
                        СтрокаТабличнойЧасти.ЦенаВРознице = СтрокаТабличнойЧасти.ЦенаВРознице * СтрокаТабличнойЧасти.Коэффициент
                        / СтароеЗначениеКоэффициента;
                    КонецЕсли;
                    
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;

    КонецЕсли;

КонецПроцедуры // ПриИзмененииЕдиницыТабЧасти

Vofka Подменю пользователя
сообщение 04.01.21, 16:21
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Не надо создавать одинаковые по смыслу темы. Можете задать уточняющий вопрос в уже вами созданной.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 23:01
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!