Добрый день.
1С 8.2 обычный интерфейс. файловая. УТ.
Пишу обработку.
Цель найти в справочнике "Контрагентов" реквизит (ДатаТек -тип дата) и сравнит его с другой датой. Если условие выполняется то другому реквизиту(Тест - тип строка) в этом справочнике присвоить текст "Да".
При написании его форме списка этого справочника. Код работает.
А через обработку не хочет. Подскажите как изменить.
сам код
текущий = (ТекущаяДата())-5184000;
ПредыщущийМесяц = текущий;
Если ДатаТек<=ПредыщущийМесяц
Тогда тест= "Нет"
иначе
тест= "Да"
конецесли;
КонтрагентОбъект.Записать();
Попробуйте заменить "тест" на "КонтрагентОбъект.тест"
И соответственно "ДатаТек" на "КонтрагентОбъект.ДатаТек"
не хочет пишет
{Обработка.Неак.Форма.Форма.Форма(46,14)}: Переменная не определена (КонтрагентОбъект)
Если <<?>>КонтрагентОбъект.ДатаТек <=ПредыщущийМесяц (Проверка: Толстый клиент (обычное приложение))
{Обработка.Неак.Форма.Форма.Форма(48,5)}: Переменная не определена (КонтрагентОбъект)
Как же у вас тогда на "КонтрагентОбъект.Записать();" не ругается в неизмененном коде?
В форме элемента в справочнике контрагенты первоначальный код работает.
В обработке приведенный вами код отрабатывает без системных ошибок?
сам код в обработке
КонтрагентОбъект = справочники.Контрагент.ПолучитьОбъект();
текущий = (ТекущаяДата())-5184000;
ПредыщущийМесяц = текущий;
Если КонтрагентОбъект.ДатаПоследнегоЗаказа <=ПредыщущийМесяц
Тогда
КонтрагентОбъект.тест= "Нет"
иначе
КонтрагентОбъект.тест= "Да"
конецесли;
КонтрагентОбъект.Записать();
{Обработка.НеактивныеПокупатели.Форма.Форма.Форма(77)}: Поле объекта не обнаружено (Контрагент)
КонтрагентОбъект = справочники.Контрагент.ПолучитьОбъект();
КонтрагентОбъект = справочники.Контрагенты.ПолучитьОбъект();
{Обработка.Неа.Форма.Форма.Форма(77)}: Метод объекта не обнаружен (ПолучитьОбъект)
КонтрагентОбъект = справочники.Контрагенты.ПолучитьОбъект();
Спр = Справочники.Контрагенты.Выбрать();
Пока Спр.Следующий() Цикл
КонтрагентОбъект = Спр.ПОлучитьОбъект();
текущий = (ТекущаяДата())-5184000;
ПредыщущийМесяц = текущий;
Если КонтрагентОбъект.ДатаПоследнегоЗаказа <=ПредыщущийМесяц
Тогда
КонтрагентОбъект.тест= "Нет"
иначе
КонтрагентОбъект.тест= "Да"
конецесли;
КонтрагентОбъект.Записать();
КонецЦикла;
Код заработал.
Но его изменил т.к к справочнику Контрагенты каждый пользователь имеет "Группа доступа к контрагенты"
У нужна проверка перед запуском.
Сам код
Спр = Справочники.Контрагенты.Выбрать();
Пока Спр.Следующий() Цикл
текущий = (ТекущаяДата())-5184000;
ПредыщущийМесяц = текущий;
Если КонтрагентОбъект.ДатаПоследнегоЗаказа <=ПредыщущийМесяц
Тогда
КонтрагентОбъект.АктивныйКлиент= "Нет"
иначе
КонтрагентОбъект.АктивныйКлиент = "Да"
конецесли;
Попытка
КонтрагентОбъект = Спр.ПолучитьОбъект();
КонтрагентОбъект.АктивныйКлиент=КонтрагентОбъект.АктивныйКлиент;
КонтрагентОбъект.Записать();
Исключение
КонецПопытки;
КонецЦикла;
{Обработка.НеактивныеПокупатели.Форма.Форма.Форма(82,6)}: Переменная не определена (КонтрагентОбъект)
Если <<?>>КонтрагентОбъект.ДатаПоследнегоЗаказа <=ПредыщущийМесяц (Проверка: Толстый клиент (обычное приложение)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua