Программа неверно считает вес - 1Cv7 ВСД в ГИС Меркурий - КБ99 Redmine

Проект

Общее

Профиль

Программа неверно считает вес

Добавил(а) Букаткина Самара Юлия почти 5 года назад

Пришли новые позиции, программа не переводит штуки в килограммы,
допустим отгружена 1 упаковка по 6 штук по 175г, в ВСД должен встать вес
1050 кг, а встает 1 кг.
Если отгружено 2 уп по 6шт по 175г, в ВСД встает 2 кг.
Что нужно поправить?


Ответы (1)

RE: Программа неверно считает вес - Добавил(а) кб99 Синявский Филипп почти 5 года назад

Для перевода шт в кг нужно переопределить стандартные функции модуля с учетом особенностей вашей программы.
Для переопределения рекомендую использовать модуль Меркурий_Интеграцию.ert или переопределение класса ГМ

Техника такая
в файле определения классов я вношу такие изменения
класс Меркурий_ГлобальныйМодуль.База = ExtForms\Меркурий\Меркурий_ГлобальныйМодуль.ert {};
класс Меркурий_ГлобальныйМодуль = ExtForms\Меркурий\Меркурий_ГлобальныйМодуль_МС.ert : Меркурий_ГлобальныйМодуль.База {};

Таким образом получаю класс Меркурий_ГлобальныйМодуль, который наследует от Меркурий_ГлобальныйМодуль.База. Теперь в наследнике я могу переопределять любые методы базового класса, с возможностью вызова методов базового класса в произвольном порядке.
например:
Функция ЗаполнитьСтрокуДокумента(тзРезультат, тзОснование, докОснование = "") Экспорт
//Базовый функционал
База = Сам(Контекст).ПолучитьБазовыйКласс();
База.ЗаполнитьСтрокуДокумента(тзРезультат, тзОснование, докОснование);

//==== Наша самодеятельность ====
оНом = СоздатьОбъект("ТСправочник.Номенклатура");
ПродЭл = тзРезультат.Продукция_Элемент; //:Справочник.ВСД_Продукция_Элемент

Мест = оНом.Мест(тзРезультат.Номенклатура, тзРезультат.Количество);
тзРезультат.ФормаУпак2 = ПродЭл.ФормаУпаковки;
тзРезультат.КолВоУпак2 = Мест;

/// и т.д.
КонецФункции

И чтобы всё это работало, в базовом классе все вызовы методов, которые могут быть переопределены, длжны выполняться через Сам().
Т.е. вместо
ЗаполнитьСтрокуДокумента( ТЗПартий, тз, Докум );
надо писать
Сам().ЗаполнитьСтрокуДокумента( ТЗПартий, тз, Докум );

В парадигме ООП это называется виртуальными методами.

    (1-1/1)