|   |   | 
| 
 | Изменение в документе с помощью внешней обработки | ☑ | ||
|---|---|---|---|---|
| 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) что есть не только ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ но и ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ ...     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |