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

Изменение реквизита справочника из ТабЧасти Документа.

Автор Серега16, 17 июл 2014, 18:08

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

Серега16

На форме документа есть табЧасть с реквизитом ПроктныйНомер (ссылка справочник ТоварыПроката).При выборе товара  в ТабЧасти заполняются реквизиты выбранного товара. Один из реквизитов статус тип (перечисления.Свободен). Нужно по команде изменить статус ( Свободен на ВРаботе)в всех товарах из ТабЧасти. На воял вот такой код, но он не работает.
&НаКлиенте
Процедура Зарезервировать(Команда)
Если  Вопрос("Зарезервировать?", РежимДиалогаВопрос.ОКОтмена) = КодВозвратаДиалога.Да Тогда
Для каждого ТекСтр Из Объект.ВыбрТовара Цикл
КомандаЗарезервировать(ТекСтр.ПрокатныйНомер);
   
КонецЦикла;
КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура КомандаЗарезервировать(Элемент)

спр=справочники.ТоварыПроката.НайтиПоНаименованию(Элемент);
СпрОбъект = Спр.ПолучитьОбъект();
СпрОбъект.Статус=перечисления.СтатусЗаказа.Зарезервирован;
СпрОбъект.Записать();


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

Серега16

Попробовал вот так ругается на если
&НаКлиенте
Процедура Зарезервировать(Команда)

    Для каждого ТекСтр Из Объект.ВыбрТовара Цикл
   
    Если ЗначениеЗаполнено(ТекСтр.ПрокатныйНомер) Тогда
    СпрОбъект = ТекСтр.ПрокатныйНомер.ПолучитьОбъект();
    СпрОбъект.Статус = Перечисления.СтатусЗаказа.Зарезервирован;
    СпрОбъект.Записать();
    КонецЕсли;                                     .
  КонецЦикла;
КонецПроцедуры

LexaK

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

(опять же говорю, что это один из вариантов учета занятости товаров проката)
если помогло нажмите: Спасибо!

Серега16

Проблему решил вот так
&НаКлиенте
Процедура Зарезервировать(Команда)
Если Вопрос("Зарезервировать?", РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
КомандаЗарезервировать();
КонецЕсли;
КонецПроцедуры
 

&НаСервере
Процедура КомандаЗарезервировать()

Объект.СтатусЗаказа=перечисления.СтатусЗаказа.Зарезервирован;

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

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

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

Теги:

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

Рейтинг@Mail.ru

Поиск