Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обработка для доступа к реквизиту справочника
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
candrey
Добрый день.
1С 8.2 обычный интерфейс. файловая. УТ.

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

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

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

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

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

И соответственно "ДатаТек" на "КонтрагентОбъект.ДатаТек"
candrey
не хочет пишет
{Обработка.Неак.Форма.Форма.Форма(46,14)}: Переменная не определена (КонтрагентОбъект)
                 Если <<?>>КонтрагентОбъект.ДатаТек <=ПредыщущийМесяц  (Проверка: Толстый клиент (обычное приложение))
{Обработка.Неак.Форма.Форма.Форма(48,5)}: Переменная не определена (КонтрагентОбъект)
Petre
Как же у вас тогда на "КонтрагентОбъект.Записать();" не ругается в неизмененном коде?
candrey
В форме элемента в справочнике контрагенты первоначальный код работает.
Petre
В обработке приведенный вами код отрабатывает без системных ошибок?
candrey
сам код в обработке
 КонтрагентОбъект = справочники.Контрагент.ПолучитьОбъект();
               
           текущий = (ТекущаяДата())-5184000;

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


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


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


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


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



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


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

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

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

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

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

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

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

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


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

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


Я так понял из того что реквизит "КонтрагентОбъект" выше не представлена в коде (в начале)....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.