Имя: Пароль:
1C
1C 7.7
v7: Установка значения переодическому реквизиту справочника.
,
0 progaoff
 
17.12.18
16:03
Добрый день. Делаю такую процедуру.
Если (ТекущаяДата() > '16.12.2018') И (Константа.ВерсииУчетаНДС = 1) Тогда
        Если Вопрос("Перейти на 20% НДС",4) = 6 Тогда
                СтатусВозврата(1);
            ИзменямСправочник = СоздатьОбъект("Справочник.Номенклатура");
            ИзменямСправочник.ИспользоватьДату(ТекущаяДата());
            ИзменямСправочник.ВыбратьЭлементы(0);
            
            Пока ИзменямСправочник.ПолучитьЭлемент() = 1 Цикл
                
                ИзменямСправочник.СтавкаНДС = Перечисление.СтавкиНДС.СтавкаНДС20;
ИзменямСправочник.Записать();
                Сообщить("Изменен элемент справочника номенклатуры - "+ИзменямСправочник.Наименование);
            КонецЦикла;
            Константа.УстановитьАтрибут("ВерсииУчетаНДС",2);
            Константа.УстановитьАтрибут("ОсновнаяСтавкаНДС",Перечисление.СтавкиНДС.СтавкаНДС20);
            Иначе
                Предупреждение("Переход не выполнен, работа с БД не возможна");
                СтатусВозврата(0);
                Возврат;
        КонецЕсли;
    КонецЕсли;
Ставка в карточке товара не меняется. Что не так?
1 Базис
 
naïve
17.12.18
16:10
Наверное, меняется только в одной. Отладчик или диагностические сообщения используй.
2 progaoff
 
17.12.18
16:12
(1) Ну обходит то все элементы
3 Масянька
 
17.12.18
16:15
(2) Мне лично не нравится 2 штучки:
1. (Константа.ВерсииУчетаНДС = 1)
2. Константа.УстановитьАтрибут("ВерсииУчетаНДС",2);
4 HawkEye
 
17.12.18
16:17
(0) а отладчик то что говорит?
Сообщить("Изменен элемент справочника номенклатуры - "+ИзменямСправочник.Наименование); - сколько раз сообщает?
5 progaoff
 
17.12.18
16:18
(4) Все элементы
6 HawkEye
 
17.12.18
16:22
(0) ну напиши:
Сообщить("Изменен элемент справочника номенклатуры - " + СокрЛП(ИзменямСправочник.Наименование) + " ставка стала: " + СокрЛП(ИзменямСправочник.СтавкаНДС) );
7 HawkEye
 
17.12.18
16:22
(0) а почему он у тебя периодический то?!
8 Масянька
 
17.12.18
16:26
А константу (со ставкой НДС) меняет?
9 progaoff
 
17.12.18
16:28
(8) Да
10 progaoff
 
17.12.18
16:28
(7) Понятия не имею, она самописная полностью
11 progaoff
 
17.12.18
16:30
(6) Пишет 20%
12 HawkEye
 
17.12.18
16:31
(10) так может что-то в отображении ставки на форме?

Пока ИзменямСправочник.ПолучитьЭлемент() = 1 Цикл
если ИзменямСправочник.СтавкаНДС <> Перечисление.СтавкиНДС.СтавкаНДС20 Тогда
  ИзменямСправочник.СтавкаНДС = Перечисление.СтавкиНДС.СтавкаНДС20;
ИзменямСправочник.Записать();
                Сообщить("Изменен элемент справочника номенклатуры - "+ИзменямСправочник.Наименование);
иначе
Сообщить("Усё нормуль со ставкой!");
конецЕсли;
            КонецЦикла;
13 Kigo_Kigo
 
17.12.18
16:32
Убери ИспользоватьДату
ИзменямСправочник.СтавкаНДС.Установить(Перечисление.СтавкиНДС.СтавкаНДС20,ТекущаяДата())
14 HawkEye
 
17.12.18
16:34
(13) пофигу и так отработает....
15 progaoff
 
17.12.18
16:34
(13) Так тоже пробовал. Ошибку валит
16 Kigo_Kigo
 
17.12.18
16:35
(15) А ставка НСД то точно переодическая?
17 progaoff
 
17.12.18
16:37
(12) Блин, вот сейчас вообще нифига не понял, запустил отработало - стало 20%, ничего же не менял
18 progaoff
 
17.12.18
16:37
(16) ага
19 progaoff
 
17.12.18
16:37
(16) Понятия не имею зачем
20 HawkEye
 
17.12.18
16:38
(15) потому что надо убрать ИспользоватьДату и в Установить поменять местами дату и значение...
но это все не принципиально...
21 HawkEye
 
17.12.18
16:38
(17) ну тебе виднее......
22 Kigo_Kigo
 
17.12.18
16:46
(20) А, ну да , по памяти писал
23 Сияющий в темноте
 
17.12.18
17:14
обьект периодический еще не предлагали
24 Злопчинский
 
17.12.18
17:58
"оно само, никогда не было и вот - опять!"
25 AliAksA
 
20.12.18
15:52
(0) в 5-ой строке так сделай: ИзменямСправочник.ИспользоватьДату(ТекущаяДата(), 1);
(17) потому что по умолчанию второй параметр = 0 - дата, переданная в качестве параметра, будет установлена при следующем открытии выборки.
26 HawkEye
 
20.12.18
15:56
(25) зачем? он в выборке условий не задает, какая разница применится это условие на текущую выборку или нет?!
27 AliAksA
 
20.12.18
16:07
(26) так из-за этого она у него за первым разом и не сработала - почитай (17)
28 HawkEye
 
20.12.18
16:28
(27) то, что у него что-то не работало это не значит, что надо добавлять ничего не значащий для этой обработки реквизит... )))
29 AliAksA
 
20.12.18
16:33
(28) лучше возьми и потести, я тоже так думал ... сначала
30 HawkEye
 
20.12.18
16:41
(29) мне нечего добавить к тому, что уже я здесь говорил...в (0) все нормально работает, будет там 1 в использоватьдату или не будет, реквизит изменится.... остальные ваши заморочки мне не интересны...
31 AliAksA
 
20.12.18
16:55
(30) ну если для тебя стабилизировать обработку за счет сообщить - нормально, то ... да не пустят тебя в Минск, когда на пенсию выйдешь)))
32 Хряк
 
20.12.18
16:59
а конфа-то какая?
33 HawkEye
 
20.12.18
17:01
(31) я не знаю что для тебя значит "стабилизировать обработку"...
если ты реально считаешь, что в (0) все не работало из-за того, что там не было сообщить, я не понимаю кем ты работаешь...
если ты считаешь, что 0 или 1 в использоватьдату из кода в (0) что-то поменяет в результате действия кода - ты ошибаешься....

большего мне добавить нечего...

зы. я польщен конечно, что ты следишь за моим творчеством на мисте и мне кажется это странным, но это твое личное дело...
но мне не понятно твое маниакальное желание спорить с человеком решившим твой вопрос за 10 минут....
34 AliAksA
 
20.12.18
17:04
(33) и я не откуда ты выполз и кем работаешь, но цитирую:
Синтаксис:
ИспользоватьДату(<Дата>,<УстСразу>)
Назначение:
Установить дату выборки периодических реквизитов справочника.
Возвращает:
Текущее значение используемой даты (на момент до исполнения метода).
Параметры:
<Дата> - значение типа дата.
<УстСразу> - необязательный параметр. Число: если 1, то дата, переданная в качестве параметра, будет установлена уже в текущей выборке; если 0 - то дата, переданная в качестве параметра, будет установлена при следующем открытии выборки. Значение по  умолчанию - 0. .
35 HawkEye
 
20.12.18
18:03
(34) вроде 46 лет в профиле.... а детский сад какой-то... успокойся уже, мне твои потуги не интересны...
Программист всегда исправляет последнюю ошибку.