Имя: Пароль:
1C
1С v8
Поменять ставку ндс у всех элементов группы справочника УТ 11.1
0 anshnine
 
09.02.21
13:01
Добрый день. Есть необходимость поменять у всех элементов  определённой группы справочника ставку ндс на 20% , если такая еще не стоит. Решил это делать через запрос. Получаю все позиции определенной группы , где ндс не равен 20% и уже там пытаюсь перезаписать. Но дело в том что запись не происходит, если у товара стояла БезНДС то так и остается. На самой форме вобще нет возможности вручную изменить ставку , заблокировано. Групповая обработка по изменению реквизитов не работает на этой конфигураци..сказывается очень много допилов и так далее. Видимо , я что-то делаю не так или проблема и правда заключается втом , что реквзит не доступен для редактирования , но я не смог его разблокировать


Группа =Справочники.Номенклатура.НайтиПоНаименованию("ПрограммноеОбеспечение");
запрос = Новый Запрос;
НДС20 = Перечисления.СтавкиНДС.БезНДС;

Запрос.Текст="ВЫБРАТЬ
              |    Номенклатура.Ссылка,
              |    Номенклатура.ЭтоГруппа,
              |    Номенклатура.Родитель,
              |    Номенклатура.Наименование,
              |    Номенклатура.СтавкаНДС
              |ИЗ
              |    Справочник.Номенклатура КАК Номенклатура
              |ГДЕ
              |    Номенклатура.Родитель = &Группа
              |    И Номенклатура.ЭтоГруппа = &Ложь
              |    И Номенклатура.СтавкаНДС <> &НДС20"   ;
Запрос.УстановитьПараметр("Группа",Группа);
  Запрос.УстановитьПараметр("Ложь",Ложь);
  Запрос.УстановитьПараметр("НДС20",НДС20);

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

Пока Выборка.Следующий() Цикл
     //Выборка.Ссылка.ПолучитьОбъект().СтавкаНДС.Доступность = Истина;
     Выборка.Ссылка.ПолучитьОбъект().СтавкаНДС=НДС20;
     Выборка.Ссылка.ПолучитьОбъект().Записать();
КонецЦикла;
1 Галахад
 
гуру
09.02.21
13:07
Выборка.Ссылка.ПолучитьОбъект()...
Выборка.Ссылка.ПолучитьОбъект()...
Это разные объекты.
2 hhhh
 
09.02.21
13:16
(0) да, и вот это хрень

НДС20 = Перечисления.СтавкиНДС.БезНДС;
3 mikecool
 
09.02.21
13:18
(0) используй инструменты разработчика и не пиши больше такой код
4 Галахад
 
гуру
09.02.21
13:22
(3) Хм, а чем лучше "не писать"?
5 sitex
 
naïve
09.02.21
13:26
(0) Куча обработок уже создано - пересоздано . Зачем писать эту Дичь*?
6 hhhh
 
09.02.21
13:28
(0) откойте Администрирование - обслуживание и там где-то есть пункт Групповое изменение реквизитов
7 anshnine
 
09.02.21
13:31
(2) Тут согласен , изначально там ндс20 было , просто тестировал изменения и скинул сюда в таком виде.
(5) в свободном доступе обработки найти не всегда получается , а если и получается то не факт , что она взлетит на конктреной конфигурации..В данном случае пишу для себя , использовать один раз и удалить ее нафиг , не на продажу...
(6) Как уже сказал , данной обработки нет в конфе , скачивал ее под 11.1 но там из-за ошибок совместимости или что-то такое не запустилась . В любом случае спасибо за совет
8 azernot
 
09.02.21
13:31
Пока Выборка.Следующий() Цикл

     Объект = Выборка.Ссылка.ПолучитьОбъект();
     Объект.СтавкаНДС=НДС20;
     Объект.Записать();

КонецЦикла;

И будет счастье
9 Krendel
 
09.02.21
13:33
(0) а нафига ты пишешь обработку если это Типовой функционал, типовая обработка поиск и замена значений
10 d_monah
 
09.02.21
13:36
(6) И там ОбменДанными.Загрузка=Истина ,НДС вроде просто так не меняется,если номенклатуру использовали