Имя: Пароль:
1C
 
Изменение в документе с помощью внешней обработки
,
0 Alt321
 
30.05.22
10:18
У меня есть внешняя обработка которая может изменять цену в некоторых документах. Как мне оставить всю логику которая есть в процедуре модуле формы ТоварыЦенаПриИзменении() которая выполняется на клиенте ?
1 Kassern
 
30.05.22
10:21
(0) Берете конфигуратор, открываете это событие у формы и отладчиком с F12 скачите по процедурам, пока не наткнетесь на серверный метод БСП, который пересчитывает строки.
2 Мультук
 
гуру
30.05.22
10:25
(0)

Копи-паст, анализ и портирование этого кода в свою обработку.
пример

&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
    
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; //твоя строка из коллекции
    
    СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);  //Твой ДокОбъект
    
    СтруктураДействий = Новый Структура;
    СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСумму");
    СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
    СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
    СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты()); //Копи-пасти в свою обработку из формы
    СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
    СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару",
        Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару));
    ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения); //КэшированныеЗначения для тебя можно = неопределено
    
    ПродажиКлиентСервер.РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма); //анализируем, думаем
    СкидкиНаценкиКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);           //анализируем, думаем
    
КонецПроцедуры
3 Dmitrii
 
гуру
30.05.22
10:28
(0) Никак. Не знаю какая у тебя конфигурация, но пути только два.
Либо повторить в своей обработке тот алгоритм, что выполняется в нужном тебе обработчике. Естественно не просто скопипастить (скорее всего так не получится), а повторить по сути.
Либо, как советует (1), найти какие серверные методы вызываются из твоего обработчика и выполняют нужные действия, и использовать их в своей обработке.
Есть ещё третий вариант - написать что-то своё. Если всё, что тебе нужно, это посчитать "Сумма = НоваяЦена*Количество", то написать этот упрощенный код, а не дёргать весь обработчик, где наверняка выполняется ещё куча ненужных тебе телодвижений.
4 Alt321
 
30.05.22
10:36
Ок, буду пробовать
5 rozer76
 
30.05.22
11:10
(4) главное в (2) что есть не только ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ но и ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ ...