Версия для печати темы (https://pro1c.org.ua/index.php?s=b06599ca0bd14b0120024f4fb3502356&showtopic=25141)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.1 (8.0) _ Обработка для доступа к реквизиту справочника

Автор: candrey 15.09.15, 15:22

Добрый день.
1С 8.2 обычный интерфейс. файловая. УТ.

Пишу обработку.
Цель найти в справочнике "Контрагентов" реквизит (ДатаТек -тип дата) и сравнит его с другой датой. Если условие выполняется то другому реквизиту(Тест - тип строка) в этом справочнике присвоить текст "Да".

При написании его форме списка этого справочника. Код работает.
А через обработку не хочет. Подскажите как изменить.
сам код

текущий = (ТекущаяДата())-5184000; 

ПредыщущийМесяц = текущий;      

                
Если ДатаТек<=ПредыщущийМесяц
  Тогда   тест= "Нет"
иначе
  тест= "Да"
  
  конецесли;
        
    КонтрагентОбъект.Записать();

Автор: Petre 15.09.15, 15:37

Попробуйте заменить "тест" на "КонтрагентОбъект.тест"

И соответственно "ДатаТек" на "КонтрагентОбъект.ДатаТек"

Автор: candrey 15.09.15, 16:32

не хочет пишет

{Обработка.Неак.Форма.Форма.Форма(46,14)}: Переменная не определена (КонтрагентОбъект)
                 Если <<?>>КонтрагентОбъект.ДатаТек <=ПредыщущийМесяц  (Проверка: Толстый клиент (обычное приложение))
{Обработка.Неак.Форма.Форма.Форма(48,5)}: Переменная не определена (КонтрагентОбъект)

Автор: Petre 15.09.15, 17:14

Как же у вас тогда на "КонтрагентОбъект.Записать();" не ругается в неизмененном коде?

Автор: candrey 16.09.15, 9:35

В форме элемента в справочнике контрагенты первоначальный код работает.

Автор: Petre 16.09.15, 10:03

В обработке приведенный вами код отрабатывает без системных ошибок?

Автор: candrey 16.09.15, 10:38

сам код в обработке

 КонтрагентОбъект = справочники.Контрагент.ПолучитьОбъект();
               
           текущий = (ТекущаяДата())-5184000;

             ПредыщущийМесяц = текущий;


              
                 Если КонтрагентОбъект.ДатаПоследнегоЗаказа <=ПредыщущийМесяц
                   Тогда
       КонтрагентОбъект.тест= "Нет"
   иначе
      КонтрагентОбъект.тест= "Да"
        


             конецесли;
    
                 КонтрагентОбъект.Записать();


ошибка
{Обработка.НеактивныеПокупатели.Форма.Форма.Форма(77)}: Поле объекта не обнаружено (Контрагент)
                 КонтрагентОбъект = справочники.Контрагент.ПолучитьОбъект();


Исправил
КонтрагентОбъект = справочники.Контрагенты.ПолучитьОбъект();



{Обработка.Неа.Форма.Форма.Форма(77)}: Метод объекта не обнаружен (ПолучитьОбъект)
                 КонтрагентОбъект = справочники.Контрагенты.ПолучитьОбъект();


Решение найдено.
Спасибо всем за подсказки. icon_beer17.gif

Сам код
Спр = Справочники.Контрагенты.Выбрать();
Пока Спр.Следующий() Цикл
КонтрагентОбъект = Спр.ПОлучитьОбъект();
текущий = (ТекущаяДата())-5184000;

ПредыщущийМесяц = текущий;

Если КонтрагентОбъект.ДатаПоследнегоЗаказа <=ПредыщущийМесяц
    Тогда
       КонтрагентОбъект.тест= "Нет"
   иначе
      КонтрагентОбъект.тест= "Да"
         конецесли;
    
КонтрагентОбъект.Записать();

КонецЦикла;

Автор: candrey 17.09.15, 10:51

Код заработал.
Но его изменил т.к к справочнику Контрагенты каждый пользователь имеет "Группа доступа к контрагенты"
У нужна проверка перед запуском.

Сам код

 Спр = Справочники.Контрагенты.Выбрать();
Пока Спр.Следующий() Цикл

текущий = (ТекущаяДата())-5184000;
ПредыщущийМесяц = текущий;
Если КонтрагентОбъект.ДатаПоследнегоЗаказа <=ПредыщущийМесяц
    Тогда
       КонтрагентОбъект.АктивныйКлиент= "Нет"
   иначе
      КонтрагентОбъект.АктивныйКлиент = "Да"
         конецесли;
Попытка
КонтрагентОбъект = Спр.ПолучитьОбъект();  
КонтрагентОбъект.АктивныйКлиент=КонтрагентОбъект.АктивныйКлиент;
КонтрагентОбъект.Записать();
Исключение

КонецПопытки;
КонецЦикла;


Выдает ошибку

{Обработка.НеактивныеПокупатели.Форма.Форма.Форма(82,6)}: Переменная не определена (КонтрагентОбъект)
Если <<?>>КонтрагентОбъект.ДатаПоследнегоЗаказа <=ПредыщущийМесяц  (Проверка: Толстый клиент (обычное приложение)


Я так понял из того что реквизит "КонтрагентОбъект" выше не представлена в коде (в начале)....

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua