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

Проблема создания условий гарантии

Автор t-l, 28 окт 2010, 10:19

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

t-l

День добрый, помоги новичку решить мою проблему господа профессионалы. У меня версия 1с Розница 1.0.8.4 (Магазин БТСС). Необходимо на форме в Справочнике\Номенклатура сделать еще одно поле для ввода гарантии в днях. Изначально установлено в месяцах.

Что я сделал, Добавил новое поле на форме, затем в Реквизитах добавил переменную СрокГарантииДн, указал ее в настройках формы. Осталось подправить код модуля, чтобы можно было вводить либо месяцы, либо дни отдельно, либо все вместе. Например: срок гарантии на товар 7 дней. Так должно считаться и выводиться в гарантийнике. Вот код из модуля:

Если (ВидНоменклатуры.ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.Товар) ИЛИ Весовой Тогда
      ВыписыватьГарантийныйТалон = Неопределено;
      СрокГарантии = Неопределено;
   КонецЕсли;
   
   Если ВыписыватьГарантийныйТалон И (СрокГарантии = 0) Тогда
      ТекстСообщения = "Не указан срок гарантии";
      ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения, Отказ);
   КонецЕсли;


Спасибо.  :xfbnsdfb:

progmikon


t-l

Я пока только начинаю программировать в 1с поэтому и возник вопрос, как правильно написать в коде чтобы он брал значения либо из 2 полей, либо только из одного и ставил общую сумму по гарантии, пример: мне нужно установить на 1 товар гарантию 5 дней, а на другой 3 месяца. На 3 товар я хочу выстовить гарантию в 2 месяца 7 дней. Такое возможно сделать, если да то как?

t-l

Вписал следующий код    Если (ВидНоменклатуры.ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.Товар) ИЛИ Весовой Тогда
      ВыписыватьГарантийныйТалон = Неопределено;
      СрокГарантии = Неопределено;
      СрокГарантииДн = Неопределено;
   КонецЕсли;
   
   Если ВыписыватьГарантийныйТалон И (СрокГарантии = 0) ИЛИ (СрокГарантииДн = 0) Тогда
      ТекстСообщения = "Не указан срок гарантии";
      ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения, Отказ);
   КонецЕсли;

Правильно ли я все сделал

***Vjacheslav***

1) Иправь условие Если ВыписыватьГарантийныйТалон И (СрокГарантии = 0) ИЛИ (СрокГарантииДн = 0) Тогда  на
Если ВыписыватьГарантийныйТалон И (СрокГарантии = 0) И (СрокГарантииДн = 0) Тогда

2) Нужно исправить объект, который ссылается на это поле.

t-l

Исправил код везде, где есть связь СрокГарантии, Подправил Макет формы Гарантийный талон, Единственное, что еще осталось. Все сейчас вносит и показывает как надо, но в номенклатуре, когда ставишь галочку для внесения гарантии подчеркивает красной линией что не заполнено поле, я ввожу данные либо месяц, либо день, соответственно он не жалуется, что я не ввел ему данные, но хотелось бы чтобы он не выделял пустое поле, после внесения данных. Вот коды где правил:

Процедура УстановитьДоступность()
   // Весовыми не могут быть серийные товары
   ДоступностьВесовой = ВидНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар И Не Серийный;
   ЭлементыФормы.Весовой.Доступность = ДоступностьВесовой;
   
   ГоступностьГарантии = (ВидНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар) И Не Весовой;
   ЭлементыФормы.ВыписыватьГарантийныйТалон.Доступность = ГоступностьГарантии;
   ЭлементыФормы.НадписьСрокГарантии.Доступность = ГоступностьГарантии;
   ЭлементыФормы.СрокГарантии.Доступность = ГоступностьГарантии;
   ЭлементыФормы.СрокГарантииДн.Доступность = ГоступностьГарантии;
   ЭлементыФормы.НадписьСрокГарантииПостфикс.Доступность = ГоступностьГарантии;
   ЭлементыФормы.НадписьСрокГарантииДнПостфикс.Доступность = ГоступностьГарантии;
   
КонецПроцедуры // УстановитьДоступность()


   // Установим отметки не заполненого для колонок "Характеристика" табличных полей "ХарактеристикиНоменклатурыДляКомплетующих" и "Комплектующие"
   ЭлементыФормы.ХарактеристикиНоменклатурыДляКомплетующих.Колонки.Характеристика.АвтоОтметкаНезаполненного                   = ОбщегоНазначения.ПолучитьФлагУчетаХарактеристик(ВидНоменклатуры);
   ЭлементыФормы.ХарактеристикиНоменклатурыДляКомплетующих.Колонки.Характеристика.ЭлементУправления.АвтоОтметкаНезаполненного = ОбщегоНазначения.ПолучитьФлагУчетаХарактеристик(ВидНоменклатуры);
   ЭлементыФормы.Комплектующие.Колонки.ХарактеристикаНоменклатуры.АвтоОтметкаНезаполненного                                   = ОбщегоНазначения.ПолучитьФлагУчетаХарактеристик(ВидНоменклатуры);
   ЭлементыФормы.Комплектующие.Колонки.ХарактеристикаНоменклатуры.ЭлементУправления.АвтоОтметкаНезаполненного                 = ОбщегоНазначения.ПолучитьФлагУчетаХарактеристик(ВидНоменклатуры);
   
   Если ВыписыватьГарантийныйТалон И ЭлементыФормы.СрокГарантии.Доступность Тогда
      ЭлементыФормы.СрокГарантии.АвтоОтметкаНезаполненного = Истина;
   Если ВыписыватьГарантийныйТалон И ЭлементыФормы.СрокГарантииДн.Доступность Тогда
      ЭлементыФормы.СрокГарантииДн.АвтоОтметкаНезаполненного = Истина;

   Иначе
      ЭлементыФормы.СрокГарантии.АвтоОтметкаНезаполненного = Ложь;
      ЭлементыФормы.СрокГарантии.ОтметкаНезаполненного     = Ложь;
      ЭлементыФормы.СрокГарантииДн.АвтоОтметкаНезаполненного = Ложь;
      ЭлементыФормы.СрокГарантииДн.ОтметкаНезаполненного     = Ложь;
   КонецЕсли;
   КонецЕсли;


   |ВЫБРАТЬ
   |   ВсеТоварыСгруппированно.Номенклатура,
   |   ВсеТоварыСгруппированно.ХарактеристикаНоменклатуры,
   |   ВсеТоварыСгруппированно.СерийныйНомер,
   |   ВЫБОР
   |      КОГДА ВсеТоварыСгруппированно.СерийныйНомер <> ЗНАЧЕНИЕ(Справочник.СерийныеНомера.ПустаяСсылка)
   |         ТОГДА ВсеТоварыСгруппированно.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ВсеТоварыСгруппированно.ЕдиницаИзмерения.Коэффициент
   |      ИНАЧЕ ВсеТоварыСгруппированно.Количество
   |   КОНЕЦ КАК Количество,
   |   ВсеТоварыСгруппированно.ЕдиницаИзмерения,
   |   ВсеТоварыСгруппированно.Номенклатура.СрокГарантии КАК СрокГарантии,
   |   ВсеТоварыСгруппированно.Номенклатура.СрокГарантииДн КАК СрокГарантииДн,


|ВЫБРАТЬ
   |   ВсеТоварыСгруппированно.Номенклатура,
   |   ВсеТоварыСгруппированно.ХарактеристикаНоменклатуры,
   |   ВсеТоварыСгруппированно.СерийныйНомер,
   |   ВЫБОР
   |      КОГДА ВсеТоварыСгруппированно.СерийныйНомер <> ЗНАЧЕНИЕ(Справочник.СерийныеНомера.ПустаяСсылка)
   |         ТОГДА ВсеТоварыСгруппированно.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ВсеТоварыСгруппированно.ЕдиницаИзмерения.Коэффициент
   |      ИНАЧЕ ВсеТоварыСгруппированно.Количество
   |   КОНЕЦ КАК Количество,
   |   ВсеТоварыСгруппированно.ЕдиницаИзмерения,
   |   ВсеТоварыСгруппированно.Номенклатура.СрокГарантии КАК СрокГарантии,
   |   ВсеТоварыСгруппированно.Номенклатура.СрокГарантииДн КАК СрокГарантииДн,
   |   ВЫБОР
   |      КОГДА &КодАртикул = ""Код""
   |         ТОГДА ВсеТоварыСгруппированно.Номенклатура.Код
   |      КОГДА &КодАртикул = ""Артикул""
   |         ТОГДА ВсеТоварыСгруппированно.Номенклатура.Артикул
   |      ИНАЧЕ """"
   |   КОНЕЦ КАК КодАртикул

t-l

Я так понимаю что истина здесь:

   Если ВыписыватьГарантийныйТалон И ЭлементыФормы.СрокГарантии.Доступность Тогда
      ЭлементыФормы.СрокГарантии.АвтоОтметкаНезаполненного = Истина;
   Если ВыписыватьГарантийныйТалон И ЭлементыФормы.СрокГарантииДн.Доступность Тогда
      ЭлементыФормы.СрокГарантииДн.АвтоОтметкаНезаполненного = Истина;

   Иначе
      ЭлементыФормы.СрокГарантии.АвтоОтметкаНезаполненного = Ложь;
      ЭлементыФормы.СрокГарантии.ОтметкаНезаполненного     = Ложь;
      ЭлементыФормы.СрокГарантииДн.АвтоОтметкаНезаполненного = Ложь;
      ЭлементыФормы.СрокГарантииДн.ОтметкаНезаполненного     = Ложь;
   КонецЕсли;
   КонецЕсли;

Теги:

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

Рейтинг@Mail.ru

Поиск