Имя: Пароль:
1C
1С v8
Пересчет суммы, ндс и тд. в Документе ПриобретениеТоваровУслуг УТ 11
0 shhh2000
 
26.01.23
09:45
Подскажите новичку)

Сделала внешнюю обработку, которая отбирает документы по условию и изменяет в них цену.
Как сделать так, чтобы сумма, ндс, сумма с ндс при этом пересчитывались? При этом успользуя типовой механизм
1 Ryzeman
 
26.01.23
09:56
ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения)

Посмотри на самой форме как в обработчиках ТЧ это делается, сделай так же. Только там вызывается клиентский модуль, но процедуры работают одинаково, вроде
2 shhh2000
 
26.01.23
10:12
я это код в типовой нашла

    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    
    СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
    
    СтруктураДействий = Новый Структура;
    СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСумму");
    СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
    СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
    СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
    СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару",
        Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару));
    ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
    ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
    
    РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);


я не понимаю, как его совместить с моим

вот моя процедура, которая записывает документ

&НаСервере
Процедура КнопкаВыполнитьНаСервере()
    
    
    Для Каждого СтрокаТЧ Из ДокументыПоступления Цикл
        Если СтрокаТЧ.Отметка = Ложь Тогда
            Продолжить;
        КонецЕсли;
        
        Док = СтрокаТЧ.Документ.ПолучитьОбъект();     
        
        Для Каждого СтрокаДок Из Док.Товары Цикл
            СтрокаДок.Цена = СтрокаДок.Цена * 1.5;  
        КонецЦикла;
                    
             Док.Записать(РежимЗаписиДокумента.Проведение);
        
    КонецЦикла;  
        
КонецПроцедуры
3 Ryzeman
 
26.01.23
10:14
(2) я тебе буквально дал модуль и название процедуры в (1). Ты сама нашла какую структуру надо вставить во второй параметр. В чём сложность?
4 shhh2000
 
26.01.23
10:18
Типовой код выполняется на клиенте, а мой на сервере, как их совместить?
простите за тупые вопросы, совсем зеленая еще, не понимаю как это работает
5 Мультук
 
гуру
26.01.23
10:19
(4)
Например вот так. Тебе ведь (1)  намекнул


&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
    
    Возврат Новый Структура(
        "БезВозвратнойТары",
        "Сумма,СуммаНДС,СуммаСНДС,СуммаРучнойСкидки");
    
КонецФункции


&НаСервере
Процедура КнопкаВыполнитьНаСервере()
    
    
    Для Каждого СтрокаТЧ Из ДокументыПоступления Цикл
        Если СтрокаТЧ.Отметка = Ложь Тогда
            Продолжить;
        КонецЕсли;
        
        Док = СтрокаТЧ.Документ.ПолучитьОбъект();    
        
        //mista
        СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Док);
        СтруктураДействий = Новый Структура;
        СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
        СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
        СтруктураДействий.Вставить("ПересчитатьСумму");
        СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
        СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
        СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
        СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару",  Док.ПоступлениеПоЗаказам, Док.ТребуетсяЗалогЗаТару));

        Для Каждого СтрокаДок Из Док.Товары Цикл
            СтрокаДок.Цена = СтрокаДок.Цена * 1.5;  
            
            //mista
            ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
        КонецЦикла;

        


        Док.Записать(РежимЗаписиДокумента.Проведение);
        
    КонецЦикла;  
        
КонецПроцедуры
6 shhh2000
 
26.01.23
10:36
спасибо большое добрые люди, что помогаете новичкам))
7 shhh2000
 
26.01.23
10:42
а может подскажете еще, в моей обработке документы отбираются по значению реквизита на форме (по контрагенту, по номенклатуре и тд).
Как сделать возможность выбирать не одну номенклатуру, а несколько?
8 Мультук
 
гуру
26.01.23
10:43
(6)

Я конечно не модератор, но вы пишите "сделала", а пол в профиле установлен как "Мужской".
Здесь весьма негативно относятся к мальчикам, которые выдают себя за девочек.

P.S.
Постарайтесь больше времени уделять изучению типового кода.
Он не всегда идеален, но для вас сейчас -- просто эталон "как надо писать"
9 Dmitry1c
 
26.01.23
10:43
(7) гугли, эти вопросы обсосаны мильен раз
10 shhh2000
 
26.01.23
10:52
Нет, я девочка, просто быстро зарегалась и не обратила внимание
я не могу ничего найти, может гуглю неправильно, как вообще это называется
11 Мультук
 
гуру
26.01.23
11:21
(7)

Нужно тип реквизита поменять на СписокЗначений или ТаблицуЗначений
В запросе вместо "т1.Номенклатура = &Номенклатура" писать "т1.Номенклатура в (&Номенклатура)" или "т1.Номенклатура в иерархии (&Номенклатура)"

Если то что я написал непонятно, то нужно вспоминать слова Ленина В.И. и наверное курсы/книги.

Книги: гуглить Хрусталева Радченко
Курсы: мне нравятся вот эти ребята
https://курсы-по-1с.рф/

У них есть раздел free
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший