Версия для печати темы (https://pro1c.org.ua/index.php?s=0eab5b42980f15858b266c9ba17fd7c7&showtopic=57372)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Прописать условие по заполнению реквизита документа в модуле другого документа

Автор: SemenYU 28.02.20, 13:06

Добрый день. Данные УПП (1.3.66.1) , 1С:Предприятие 8.3 (8.3.10.2466)
Помогите пожалуйста.
Есть документ ГТД по импорту. Он создаётся на основании Поступления товаров и услуг и Поступление Товаров Услуг В НТТ
Необходимо прописать условие, по которому Если в документе-основании не стоит флажок ОтражатьВБухгалтерскомУчете , то и в документе ГТД по импорту он тоже не стоит

Процедура ОбработкаЗаполнения(Основание)
    ПоступлениеТоваров    = (ТипЗнч(Основание) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг"));
    ПоступлениеТоваровНТТ = (ТипЗнч(Основание) = Тип("ДокументСсылка.ПоступлениеТоваровУслугВНТТ"));

    
    Если ЗначениеЗаполнено(Основание) Тогда
        Если НЕ Основание.ОтражатьВБухгалтерскомУчете Тогда
            ОтражатьВБухгалтерскомУчете = Ложь;
            
        КонецЕсли;
    КонецЕсли;


Так же необходимо при том же условии скрыть доступность реквизита в ГТД по импорту. (с этим даже нет вариантов).
Заранее спасибо

Автор: Vofka 28.02.20, 14:55

Код можно сделать немного красивее:

Процедура ОбработкаЗаполнения(Основание)    
    Если ЗначениеЗаполнено(Основание) Тогда
        ОтражатьВБухгалтерскомУчете = Основание.ОтражатьВБухгалтерскомУчете;
    КонецЕсли;
//...
КонецПроцедуры

Но итоговый результат будет одинаковый.

Как звучит итоговая задача? Флажек ОтражатьВБухгалтерскомУчете должен иметь такое же значение, как в документе основании? Если да, то в ПередЗаписью просто прописать:
ОтражатьВБухгалтерскомУчете = Основание.ОтражатьВБухгалтерскомУчете;

Автор: SemenYU 28.02.20, 15:28

Vofka @ Сегодня, 14:55 * ,
Итоговая задача звучит так:
Поставить реквизит "ОтражатьВБухгалтерскомУчете" документа ГТД по импорту в состояние Ложь и убрать доступность, если данный документ создаётся на основании Поступления товаров и услуг и Поступление Товаров Услуг В НТТ и в этих документах реквизит "ОтражатьВБухгалтерскомУчете" в состояние Ложь.

Автор: SemenYU 28.02.20, 17:31

SemenYU @ Сегодня, 15:28 * ,
Важно именно прописать это при заполнении документа, чтоб пользователю не делать лишних движений и не обращать внимание на флажек бух. учёт

Автор: TohaMonster 02.03.20, 8:47

Флажок "ОтражатьВБухгалтерскомУчете" может установиться уже после ОбработкаЗаполнения(). См. модуль формы ПриОткрытии(). Там есть кусок типа

    Если ЭтоНовый() Тогда

        ...
        
        // Заполнить реквизиты значениями по умолчанию.            
        ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, "Покупка",ПараметрОбъектКопирования);

        ...
            
    КонецЕсли;


Если у Пользователя стоит в настройках заполнения документов "отражать в бух учете", у тебя флаг установится после этого заполнения. Надо тогда после ЗаполнениеДокументов.ЗаполнитьШапкуДокумента() вставить что-то типа

    Если ЗначениеЗаполнено(ПараметрОснование) Тогда

        ОтражатьВБухгалтерскомУчете = Основание.ОтражатьВБухгалтерскомУчете;
        ЭлементыФормы.ОтражатьВБухгалтерскомУчете.Доступность = ОтражатьВБухгалтерскомУчете;
            
    КонецЕсли;


Автор: SemenYU 22.04.20, 18:00

Всем большое пасибо! Получилось!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua