Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Автозаполнение пустого поля ввода табличного поля
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Veizdem
Устроился на работу, досталась не очень хорошая конфигурация для сопровождения. Изначально была под версию 7.7, затем в несколько заходов мигрировала до 8.2, приложение обычное. Вопрос заключается в следующем: каким образом заполнять автоматически определенными значениями пустое поле ввода табличного поля на форме, когда форма заполняется либо вручную, либо автоматически на основе выбранного заказа?

По сути я уже так думал, нужно реализовать механизм типа такого: после создании новой строки, если данное поле остается пустым - установить значение по умолчанию, иначе - не трогать. Значения заполняются из перечисления. Я с 1С знаком не так уж и давно, так что знаю далеко не все педали.

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


Если код подходит, в какую процедуру его совать тогда, чтоб работало именно в нужных мне случаях?

Как редактировать сообщение не нашел, потому дописываю сюда.

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


Осталось только понять в какую процедуру поместить, чтобы срабатывало когда пользователь добавляет новую строку в табличное поле или когда табличное поле само заполняется из заказа.
Rayne
В случае, когда новая строка:

// Процедура - обработчик события "ПриНачалеРедактирования" табличной части
Процедура СоставПриНачалеРедактирования(Элемент, НоваяСтрока)

    СтрокаТабличнойЧасти = ЭлементыФормы.Состав.ТекущиеДанные;

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


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


А табличное поле на основании заполняется из заказа? Если да - то процедура ОбработкаЗаполнения в модуле документа.
Veizdem
Цитата(Rayne @ 17.07.14, 11:03) необходимо зарегистрироваться для просмотра ссылки
В случае, когда новая строка:

// Процедура - обработчик события "ПриНачалеРедактирования" табличной части
Процедура СоставПриНачалеРедактирования(Элемент, НоваяСтрока)

    СтрокаТабличнойЧасти = ЭлементыФормы.Состав.ТекущиеДанные;

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


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


А табличное поле на основании заполняется из заказа? Если да - то процедура ОбработкаЗаполнения в модуле документа.


Спасибо, все работает как надо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.