Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 09:08

Пересчет суммы НДС в документе «Реализация товаров и услуг»

Автор 99format, 09 июн 2014, 17:28

0 Пользователей и 1 гость просматривают эту тему.

99format

Добрый день. В 1с 8.2 КА 1.1 стоит задача пересчитать сумму НДС в документе «Реализация товаров и услуг» по определенному отбору, через «Групповую обработку справочников и документов» не получается (сумма пересчитывается только если вручную «перещелкать» проценты). Решил попробовать написать внешний обработчик (второй раз в жизни). С помощью Конструктора запроса делаю выборку ссылок документа по наименование контрагента и организации

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   РеализацияТоваровУслуг.Ссылка
      |ИЗ
      |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
      |ГДЕ
      |   РеализацияТоваровУслуг.Организация.Наименование = ""АААА""
      |   И РеализацияТоваровУслуг.Контрагент.Наименование = ""ББББ""";

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      // Вставить обработку выборки ВыборкаДетальныеЗаписи
   КонецЦикла;

Так же нашел процедуру ТоварыСтавкаНДСПриИзменении() , как понимаю это то что нужно, проблема как их совместить вместе ? Сразу прошу прощения за дилетантизм — нашел нужный мне обработчик на http://infostart.ru — но он там платный стоит одно ихнее у.е. - а купить этих у.е. нужно минимум 10 штук (т. е. 1000р) — так как время на решении этой задачи есть — решил попробовать решить ее самостоятельно (с помощью Вашей помощи :-) )

Спасибо.

cska-fanat-kz

внутри вашего цикла
1. получаете объект документа
2. крутим цикл по табличной части
3. если ставка не равно "без ндс", то СтрокаТЧ.СуммаНДС = СтрокаТЧ.Сумма * СТАВКА / 100+СТАВКА
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

99format


99format

Подскажите еще плз, делаю следующим образом:


Процедура КнопкаВыполнитьНажатие(Кнопка)
   Запрос = Новый Запрос;
   Запрос.Текст =

// Для теста выбираю один документ
      "ВЫБРАТЬ
      |   РеализацияТоваровУслуг.Ссылка
      |ИЗ
      |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
      |ГДЕ
      |   РеализацияТоваровУслуг.Номер = ""Трк00000876""";

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

КонецПроцедуры

Проблема в том, что ошибок (кроме пустой даты) 1с не пишет, но и не меняет значение, документ выбирается точно так как при РежимиЗаписиДокумента.Проведение - он проводится. Как я понимаю, я просто не правильно перебираю табличную часть ??

Спасибо.

cska-fanat-kz

Цитата: 99format от 16 июн 2014, 14:40
Документ = Выборка.Ссылка.ПолучитьОбъект();
Документ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();

Объясните ЭТО

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

99format

:-) Честно скажу - взял из примера нашедшего на форуме про обработку выборки...
Ошибку исправил, сделал вот так.


Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   Запрос = Новый Запрос;
   Запрос.Текст =
   
   "ВЫБРАТЬ
   |   РеализацияТоваровУслуг.Ссылка,
   |   РеализацияТоваровУслуг.Товары.(
   |      СуммаНДС
   |   )
   |ИЗ
   |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
   |ГДЕ
   |   РеализацияТоваровУслуг.Контрагент.Наименование = ""XXXXXX""
   |   И РеализацияТоваровУслуг.Организация.Наименование = ""YYYYYY""";   
   
   Выборка = Запрос.Выполнить().Выбрать();
   Цк = 1;
   
   Пока Выборка.Следующий() Цикл
      Сообщить(Цк);
      
      Документ = Выборка.Ссылка.ПолучитьОбъект();
      
      ТабЧасть = Документ.Товары;
      
      Для Каждого СтрокаТЧ Из ТабЧасть Цикл
// У меня везде есть НДС и он везде 10 %

         СтрокаТЧ.СуммаНДС = СтрокаТЧ.Сумма*10/100+10;
         
      КонецЦикла;
      
      Документ.Записать(РежимЗаписиДокумента.Запись);
      
      КонецЦикла;

КонецПроцедуры


Все работает - нужные данные меняются и записываются (я с бухом только по поводу формулы уточню).

ОГРОМНОЕ спасибо - cska-fanat-kz :-)

cska-fanat-kz

должно быть вот так:

СтрокаТЧ.СуммаНДС = СтрокаТЧ.Сумма*10/(100+10);
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск