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

Как прописать в табличной части колонку добавленную чтобы при заполнении данные выгружались?

Автор alenabutenko, 06 сен 2024, 08:50

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

alenabutenko

alexandr_ll, нашла в обработке:

//ОБРАБОТКА РЕКВИЗИТИТОВ ТАБЛИЧНОЙ ЧАСТИ АВТОМОБИЛИ
    ИначеЕсли Имя = "Автомобили.Модель" Тогда
       
        Если ТекСтрока.Количество = 0 Тогда
            ТекСтрока.Количество = 1
        КонецЕсли;
        // Заполним ставку НДС
        Если дкПроверитьПринадленостьХозОперации(ЭтотОбъект, "Поступление") Тогда
            ОсвобожденОтНДС = ЭтотОбъект.Контрагент.ОсвобожденОтНДС ИЛИ
            ЭтотОбъект.Контрагент.ФормаСобственности = Перечисления.ФормыСобственности.ЧастноеЛицо;
        Иначе
            ОсвобожденОтНДС = ЭтотОбъект.ПодразделениеКомпании.ОсвобожденОтНДС ИЛИ
            ЭтотОбъект.Организация.ОсвобожденОтНДС;
        КонецЕсли;
       
        Если ОсвобожденОтНДС Тогда
            ТекСтрока.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
        Иначе
            ТекСтрока.СтавкаНДС = Справочники.СтавкиНДС.ОсновнаяСтавкаНДС;
        КонецЕсли;
       
        ТекСтрока.Цена = обПолучитьЦену(ТипЦен,Новый Структура("Автомобиль, ВариантКомплектации",ТекСтрока.Модель,ТекСтрока.ВариантКомплектации),ТекущаяДата(),,ВалютаДокумента,КурсДокумента);
        ОбработкаРеквизита("Автомобили.Цена",ТекСтрока,ЭтаФорма,ДопПараметры);
       
    ИначеЕсли Имя="Автомобили.ВариантКомплектации" Тогда
       
        ОбработкаРеквизита("Автомобили.Цена",ТекСтрока,ЭтаФорма,ДопПараметры);
        ОбработкаРеквизита("Автомобили.Модель",ТекСтрока,ЭтаФорма,ДопПараметры);
       
    ИначеЕсли Имя = "Автомобили.ТипСалона" Тогда
       
    ИначеЕсли Имя = "Автомобили.Цвет" Тогда
       
    ИначеЕсли Имя = "Автомобили.Автомобиль" Тогда
        Если Не (ТекСтрока.Автомобиль = Справочники.Автомобили.ПустаяСсылка()) Тогда
            ТекСтрока.Количество = 1;
            ОбработкаРеквизита("Автомобили.Количество", ТекСтрока, ЭтаФорма, ДопПараметры);
            Автомобиль                    = ТекСтрока.Автомобиль;
            ТекСтрока.Модель              = Автомобиль.Модель;
            Текстрока.ВариантКомплектации = Автомобиль.ВариантКомплектации;
            ТекСтрока.Цвет                = Автомобиль.Цвет;
        КонецЕсли;
       
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ЗаказыАвтомобилейОстатки.Автомобиль КАК Автомобиль,
                       |    ЗаказыАвтомобилейОстатки.КоличествоОстаток,
                       |    ЗаказыАвтомобилейОстатки.Заказ КАК Ссылка
                       |ИЗ
                       |    РегистрНакопления.ЗаказыАвтомобилей.Остатки(
                       |            ,
                       |            Заказ ССЫЛКА Документ.ЗаказНаАвтомобиль
                       |                И Автомобиль <> ЗНАЧЕНИЕ(Справочник.Автомобили.ПустаяСсылка)) КАК ЗаказыАвтомобилейОстатки";
       
        Выборка = Запрос.Выполнить().Выбрать();
        Результат = Ложь;
       
        Пока Выборка.Следующий() Цикл
            Если ТекСтрока.Автомобиль = Выборка.Автомобиль Тогда
                ТекСтрока.ЗаказПокупателя = Выборка.Ссылка;
                Результат = Истина;
            КонецЕсли;
        КонецЦикла;
       
        Если Не Результат Тогда
            ТекСтрока.ЗаказПокупателя = Документы.ЗаказНаАвтомобиль.ПустаяСсылка();
        КонецЕсли;
       
        ОбработкаРеквизита("Автомобили.Модель",ТекСтрока,ЭтаФорма,ДопПараметры);
        ОбработкаРеквизита("Автомобили.ЗаказПокупателя",ТекСтрока,ЭтаФорма,ДопПараметры);
       
    ИначеЕсли Имя = "Автомобили.Количество" Тогда
        Если ТекСтрока.Автомобиль <> Справочники.Автомобили.ПустаяСсылка() Тогда
            ТекСтрока.Количество = 1;
        КонецЕсли;
       
        Результат = ОбработкаРеквизита("Автомобили.Цена",ТекСтрока,ЭтаФорма,ДопПараметры);
       
    ИначеЕсли Имя = "Автомобили.Цена" Тогда
        ТекСтрока.Сумма=ТекСтрока.Цена*ТекСтрока.Количество;
        Результат = ОбработкаРеквизита("Автомобили.Сумма", ТекСтрока, ЭтаФорма, ДопПараметры);
        #Если Клиент Тогда
            дкВывестиЗаголовокСуммаДокумента(ЭтаФорма);
        #КонецЕсли         
       
       
                 
       
    ИначеЕсли Имя = "Автомобили.Сумма" Тогда
        ТекСтрока.Цена = ?(ТекСтрока.Количество=0,0,ТекСтрока.Сумма / ТекСтрока.Количество);
        Результат = ОбработкаРеквизита("Автомобили.СтавкаНДС", ТекСтрока, ЭтаФорма,ДопПараметры);
        #Если Клиент Тогда
            дкВывестиЗаголовокСуммаДокумента(ЭтаФорма);
        #КонецЕсли
       
    ИначеЕсли Имя = "Автомобили.СтавкаНДС" Тогда
       
        // Определим каким образом у нас вычисляется НДС
        ЦенаВключаетНДС=(обЗначениеНеЗаполнено(ТипЦен) ИЛИ ТипЦен.ЦенаВключаетНДС);
        // Расчет НДС
        Если ЦенаВключаетНДС Тогда
            ТекСтрока.СуммаНДС = Окр((ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка)/(100 + ТекСтрока.СтавкаНДС.Ставка) ,2);
        Иначе
            ТекСтрока.СуммаНДС = Окр(ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка/100,2);
        КонецЕсли;
        // В любом случаее идем в секцию "СуммаНДС", т.к. в ней будем произведен расчет суммы всего.
        Результат = ЭтотОбъект.ОбработкаРеквизита("Автомобили.СуммаНДС",ТекСтрока,ЭтаФорма,ДопПараметры);
       
    ИначеЕсли Имя = "Автомобили.СуммаНДС" Тогда
       
        // Определим каким образом у нас вычисляется НДС
        ЦенаВключаетНДС = (обЗначениеНеЗаполнено(ТипЦен) ИЛИ ТипЦен.ЦенаВключаетНДС);
        Если ЦенаВключаетНДС Тогда
            ТекСтрока.СуммаВсего=ТекСтрока.Сумма;
        Иначе
            ТекСтрока.СуммаВсего=ТекСтрока.Сумма + ТекСтрока.СуммаНДС;
        КонецЕсли;
       
    ИначеЕсли Имя = "Автомобили.СуммаВсего" Тогда
        // Определим включают ли в себя НДС цены документа
        ЦенаВключаетНДС = (обЗначениеНеЗаполнено(ТипЦен) ИЛИ ТипЦен.ЦенаВключаетНДС);
        // Рассчитаем значение реквизита "Сумма". Если расчет НДС не ведется, то ЦенаВключаетНДС будет всегда Истина.
        Если НЕ ЦенаВключаетНДС Тогда
            ТекСтрока.Сумма = Окр(ТекСтрока.СуммаВсего*100/(100+ТекСтрока.СтавкаНДС.Ставка),2);
        КонецЕсли;
        // Пересчитываем цену.
        ТекСтрока.Цена = ?(ТекСтрока.Количество = 0,0,ТекСтрока.Сумма/ТекСтрока.Количество);
       
        // Рассчитываем новую сумму НДС.
        Если ЦенаВключаетНДС Тогда
            ТекСтрока.Сумма=ТекСтрока.СуммаВсего;
            ТекСтрока.СуммаНДС = Окр((ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка) / (100 + ТекСтрока.СтавкаНДС.Ставка), 2);
        Иначе
            ТекСтрока.СуммаНДС = Окр(ТекСтрока.Сумма * ТекСтрока.СтавкаНДС.Ставка / 100,2);
            ТекСтрока.Сумма = (100 * ТекСтрока.СуммаВсего) / (100 + ТекСтрока.СтавкаНДС.Ставка);
        КонецЕсли;
       
        #Если Клиент Тогда
            дкВывестиЗаголовокСуммаДокумента(ЭтаФорма);
        #КонецЕсли

        Возврат ОбработкаРеквизита("Автомобили.Сумма",ТекСтрока,ЭтаФорма,ДопПараметры);
       
    ИначеЕсли Имя = "Автомобили.ЗаказПокупателя" Тогда
       
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказыАвтомобилейОстатки.Заказ КАК Ссылка,
        |    ЗаказыАвтомобилейОстатки.КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ЗаказыАвтомобилей.Остатки КАК ЗаказыАвтомобилейОстатки
        |ГДЕ
        |    ЗаказыАвтомобилейОстатки.КоличествоОстаток - ЗаказыАвтомобилейОстатки.РезервОстаток > 0
        |
        |УПОРЯДОЧИТЬ ПО
        |    Ссылка";
       
        Выборка = Запрос.Выполнить().Выбрать();
       
        ЗаказПокупателяПодходит = Ложь;
       
        Пока Выборка.Следующий() Цикл
            Если Выборка.Ссылка = ТекСтрока.ЗаказПокупателя Тогда
                ЗаказПокупателяПодходит = Истина;
            КонецЕсли;
        КонецЦикла;
       
        Если ЗаказПокупателяПодходит Тогда
            УдалениеСтрокОпций(ТекСтрока.ИдентификаторСтроки);
            ЗаказПокупателя = ТекСтрока.ЗаказПокупателя;
           
            ТекСтрока.Модель              = ЗаказПокупателя.Модель;
            ТекСтрока.ВариантКомплектации = ЗаказПокупателя.ВариантКомплектации;
            ТекСтрока.ТипСалона           = ЗаказПокупателя.ТипСалона;
            ТекСтрока.Цвет                = ЗаказПокупателя.Цвет;
            ТекСтрока.Автомобиль          = ЗаказПокупателя.Автомобиль;
            ТекСтрока.СрокПоставки        = ЗаказПокупателя.СрокПоставки;
            ТекСтрока.Количество          = 1;
           
            Если ЗаказПокупателя.ВалютаДокумента = ВалютаДокумента Тогда
                ТекСтрока.Цена       = ЗаказПокупателя.СуммаВсегоНаАвтомобиль;
                ТекСтрока.СуммаВсего = ЗаказПокупателя.СуммаВсегоНаАвтомобиль;
                ТекСтрока.Сумма      = ЗаказПокупателя.СуммаВсегоНаАвтомобиль;
                ТекСтрока.СуммаНДС   = ЗаказПокупателя.СуммаНДСНаАвтомобиль;
            Иначе
                ТекСтрока.Цена       = обПересчет(ЗаказПокупателя.СуммаВсегоНаАвтомобиль, ЗаказПокупателя.ВалютаДокумента, ТекущаяДата(), ВалютаДокумента, ТекущаяДата());
                ТекСтрока.СуммаВсего = обПересчет(ЗаказПокупателя.СуммаВсегоНаАвтомобиль, ЗаказПокупателя.ВалютаДокумента, ТекущаяДата(), ВалютаДокумента, ТекущаяДата());
                ТекСтрока.Сумма      = обПересчет(ЗаказПокупателя.СуммаВсегоНаАвтомобиль, ЗаказПокупателя.ВалютаДокумента, ТекущаяДата(), ВалютаДокумента, ТекущаяДата());
                ТекСтрока.СуммаНДС   = обПересчет(ЗаказПокупателя.СуммаНДСНаАвтомобиль,   ЗаказПокупателя.ВалютаДокумента, ТекущаяДата(), ВалютаДокумента, ТекущаяДата());
            КонецЕсли;
            ТекСтрока.СтавкаНДС      = ЗаказПокупателя.СтавкаНДСНаАвтомобиль;
           
            ОпцииЗаказПокупателя     = ЗаказПокупателя.Опции.Выгрузить();
           
            Для Каждого ТекЭлемент Из ОпцииЗаказПокупателя Цикл
               
                НоваяСтрокаОпции = Опции.Добавить();
               
                НоваяСтрокаОпции.ИдентификаторСтроки = ТекСтрока.ИдентификаторСтроки;
                НоваяСтрокаОпции.Количество          = ТекЭлемент.Количество;
                НоваяСтрокаОпции.Опция               = ТекЭлемент.Опция;
                НоваяСтрокаОпции.СтавкаНДС           = ТекЭлемент.СтавкаНДС;
                Если ЗаказПокупателя.ВалютаДокумента = ВалютаДокумента Тогда
                    НоваяСтрокаОпции.Сумма               = ТекЭлемент.Сумма;
                    НоваяСтрокаОпции.СуммаВсего          = ТекЭлемент.СуммаВсего;
                    НоваяСтрокаОпции.СуммаНДС            = ТекЭлемент.СуммаНДС;
                    НоваяСтрокаОпции.Цена                = ТекЭлемент.Цена;
                Иначе
                    НоваяСтрокаОпции.Сумма               = обПересчет(ТекЭлемент.Сумма,      ЗаказПокупателя.ВалютаДокумента, ТекущаяДата(), ВалютаДокумента, ТекущаяДата());
                    НоваяСтрокаОпции.СуммаВсего          = обПересчет(ТекЭлемент.СуммаВсего, ЗаказПокупателя.ВалютаДокумента, ТекущаяДата(), ВалютаДокумента, ТекущаяДата());
                    НоваяСтрокаОпции.СуммаНДС            = обПересчет(ТекЭлемент.СуммаНДС,   ЗаказПокупателя.ВалютаДокумента, ТекущаяДата(), ВалютаДокумента, ТекущаяДата());
                    НоваяСтрокаОпции.Цена                = обПересчет(ТекЭлемент.Цена,       ЗаказПокупателя.ВалютаДокумента, ТекущаяДата(), ВалютаДокумента, ТекущаяДата());
                КонецЕсли;
            КонецЦикла;
        Иначе
            ТекСтрока.ЗаказПокупателя = Документы.ЗаказПокупателя.ПустаяСсылка();
        КонецЕсли;
       

alexandr_ll

alenabutenko, Очень много буков. Не буду читать.
Как устанавливается комиссия? Произвольная сумма, процент от суммы или еще как-то?
У реквизита табличной части "Комиссия" присвойте событие "при изменинии" и напишите элементарную процедуру расчета реквизита шапки "Комиссия документа"
Процедура КомиссияПриИзменении()
   КомиссияДокумента=Автомобили.Итог("Комиссия");
КонецПроцедуры

alenabutenko


Теги:  

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

Рейтинг@Mail.ru

Поиск