Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 07:45

Не выбирается элемент по реквизиту типа Справочник

Автор SecretSilent, 14 дек 2011, 19:54

0 Пользователей и 1 гость просматривают эту тему.

SecretSilent

Тема: АВС-анализ.
В документе идёт изменение статусов покупателей со старого на новый. Соответственно, затем нужно провести документ и тем самым изменить статус в самом справочнике. Делаю реквизит в справочнике Покупатели Статус (тип Справочник.Статусы) периодическим и изменяемым документами. При выборе названия организации-покупателя надо, чтобы отображался старый статус на форме.
Пишу процедуру в модуле формы документа:

Процедура ИзменениеПокупателя()
   СпрПокуп = СоздатьОбъект("Справочник.Покупатели");
   Док = СоздатьОбъект("Документ.ИзменениеСтатусов");
   ТекДок = Док.ТекущийДокумент();
   СпрПокуп.НайтиПоНаименованию(Покупатель.Наименование,,1);
   ТекДок.СтарыйСтатус = СпрПокуп.Статус;
   ТекДок.ДатаИзменения = ТекущаяДата();
КонецПроцедуры

Так вот. При попытке вывести найденный статус выводится НеизвестныйОбъект. Дата не высвечивается.
А если делаю реквизит Статус непериодическим, то высвечивается правильно... Но тогда проводку не сделать.
Помогите, пожалуйста, подскажите, что не так? я в 1С пока новичок.

Текст процедуры проводки:
Процедура ОбработкаПроведения()

   Если СтарыйСтатус = НовыйСтатус Тогда
      Предупреждение("Проводка невозможна, т.к. старый и новый статусы одинаковы!");
      НеПроводитьДокумент();
   КонецЕсли;     
   //иначе
   Спр = СоздатьОбъект("Справочник.Покупатели");
   Спр.НайтиПоНаименованию(Покупатель.Наименование);
   УстановитьРеквизитСправочника(Спр, "Статус", НовыйСтатус, ДатаДок,,,);

КонецПроцедуры

nicotin

Поскольку процедура расположена в модуле формы документа, к реквизитам можно обращаться напрямую. Следовательно,3 и 4 строки надо убрать, 6 и 7 записать в виде:
СтарыйСтатус = СпрПокуп.Статус.Получить(ДатаДок-1);
// -1 на случай повторного перепроведения документа
ДатаИзменения = РабочаяДата() //используют чаще, чем ТекущаяДата()

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск