8.х Выбор неправильного договора

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем xxx949, 12 май 2017.

  1. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Привет, уважаемые специалисты 1С!

    Подскажите пожалуйста, как можно решить данную проблему.

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

    РЛС, Подписки?
    Как можно, например при записи документа любого, пробежаться по всем реквизитам с типом "Договор" и проверить правильно ли выбран договор или нет.
    может другой какой способ есть?

    Спасибо большое!
  2. skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    371
    Симпатии:
    4
    Баллы:
    29
    Тип договора это Перечисление?
    Код:
    &НаКлиенте
    Процедура ТабличнаяЧастьСтолбецПриИзменении(Элемент)
        Если ТипДоговора<>Перечисления.ТипыДоговора.ПоДоговорам Тогда
            ТипДоговора = Неопределено;
            Сообщить("Неправильное значение!");
        КонецЕсли;
    КонецПроцедуры
  3. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    309
    Симпатии:
    1
    Баллы:
    29
    Спасибо, но это не совсем то, вернее это безусловно работает, но тогда нужно этот код прописывать в каждом объекте. Но как быть, если мы изначально не знаем в каких документах используется реквизит договор, как он называется этот реквизит и где он находится (в шапке или ТЧ). Я для себя вижу несколько вариантов:

    1. Настроить РЛС, чтобы договор вообще нельзя было выбрать или даже увидеть, но это нужно настраивать и подгонять роли;
    2. Через ПодпискуНаСобытие (сейчас ближе склоняюсь к этому), но тогда как можно пробежаться по всем реквизитам документа при записи, и увидеть реквизиты с типом Договор, и в этом реквизите проверить, если договор не правильный, запретить записывать или выдать сообщение просто. Точнее может кто раньше писал алгоритм по всем реквизитам на проверку значений определенного типа.
  4. skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    371
    Симпатии:
    4
    Баллы:
    29
    Если РЛС, то тоже к каждому документу свой подход нужен, так что меньше работы не станет. С ПодпискойНаСобытие есть вариант сделать более универсально через метаданные:
    Код:
    Для Каждого Реквизит Из Документ.Метаданные().Реквизиты Цикл
            НоваяСтрока = РеквизитыДокумента.Добавить();
            НоваяСтрока.Реквизит = Реквизит.Имя;
            НоваяСтрока.Значение = Документ[Реквизит.Имя];
        КонецЦикла;
    Код:
    Для Каждого ТабличнаяЧасть Из Документ.Метаданные().ТабличныеЧасти Цикл
            Сообщить(ТабличнаяЧасть);
            Для Каждого РеквизитТЧ Из ТабличнаяЧасть.Реквизиты Цикл
                Сообщить("  -  " + РеквизитТЧ);
            КонецЦикла
        КонецЦикла;
    Для каждого документа... список документов тоже можно получить:
    Код:
    мдТек = Метаданные["Документы"];
    Для каждого ЭлементКоллекции Из мдТек Цикл
       стрНаименованиеДокумента = "Документ." + ЭлементКоллекции.Имя;
    КонецЦикла;

Поделиться этой страницей