Имя: Пароль:
1C
1С v8
Добавление итоговой суммы НДС на форме списока Покупка-Счет-фактура полученный
0 rmuratuly
 
20.10.15
15:01
Подскажите, пожалуйста, пытаюсь вывести итоговую сумму НДС на форме списка документов Покупка-Счет-фактура полученный. Какую процедуру нужно добавить в модуле формы списка? Нужно что бы там отражался СуммаНДС взятое с СчетФактураПолученный - ФормаДокумента - ОбщаяСуммаНДС.

Скрин формы списка: http://postimg.org/image/f3d3tqjet/

1С:Предприятие 8.2
1 Михаил Козлов
 
20.10.15
15:15
Если обычные формы, попробуйте в событии табличного поля ПриПолученииДанных установить текст в ячейку НДС из реквизита документа СуммаНДСДокумента (или как он у Вас называется).
2 rmuratuly
 
20.10.15
15:24
ДД! Так как я новичок, опишите пожалуйста подробнее.
В событиях отсутствует мне нужная поля СуммаНДС.
3 Михаил Козлов
 
20.10.15
15:36
Реквизит документа, содержательно означающий сумму НДС есть?
Если есть - добавьте через размещение его на форму списка.
Если нет, то нужно смотреть, как он вычисляется на форме документа.
4 rmuratuly
 
20.10.15
15:46
Форма документа

////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ

// Хранит текущую дату документа - для проверки перехода документа в другой период установки номера
Перем мТекущаяДатаДокумента;

// Хранит дерево макетов печатных форм
Перем мДеревоМакетов;

// Хранит элемент управления подменю печати
Перем мПодменюПечати;

// Хранит элемент управления кнопку печать по умолчанию
Перем мПечатьПоУмолчанию;

// Хранит дерево кнопок подменю заполнение ТЧ
Перем мКнопкиЗаполненияТЧ;

// Хранит валюту взаиморасчетов, установленную в текущем договоре взаиморасчетов,
// используется для определения необходимости пересчетов при изменении договора.
Перем мТекущаяВалютаВзаиморасчетов;

// Хранит текущий договор контрагента
// используется для восстановления старого договора в случае некорректного выбора нового
Перем мТекущийДоговорКонтрагента;

// Хранит список видов договоров, доступных для данного документа
Перем мСписокВидовДоговоров;

// Хранит текущую форму подбора номенклатуры
Перем мФормаПодбораНоменклатуры;

//Хранит текущую организацию
Перем мИсходнаяОрганизация;

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

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

    СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов;

    Если Метаданные.Перечисления.ВидыДоговоровКонтрагентов.ЗначенияПеречисления.Найти("СКомиссионером") <> Неопределено Тогда
        Если ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов["СКомиссионером"] Тогда
            СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры;
        КонецЕсли;
    КонецЕсли;

    // Зададим, какие реквизиты надо редактировать.
    СтруктураРеквизитовДокумента = УправлениеЦенообразованием.ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(ЭтотОбъект);

    УправлениеВзаиморасчетами.ПриИзмененииЗначенияДоговора(ЭтотОбъект, мТекущаяВалютаВзаиморасчетов, мВалютаРегламентированногоУчета, СпособЗаполненияЦен, СтруктураРеквизитовДокумента, "Продажа", "Товары", мТекущийДоговорКонтрагента);

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

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

// Производит заполнение и установку необходимых полей при изменении товара в табличной части.
// Вызывается из:
//  ТоварыНоменклатураПриИзменении()
//  ВнешнееСобытие()
//
Процедура ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти)

    // Заполняем реквизиты табличной части.
    ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

    СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС",
                                               Контрагент, ТипЦен, ДоговорКонтрагента, Дата, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС);

    ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПокупкиТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, СтруктураШапкиДокумента, мВалютаРегламентированногоУчета);

    УстановитьСвойстваПоляВводаЦены(СтрокаТабличнойЧасти.Номенклатура);

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

// Функция формирует список запросов для передачи в форму подбора.
//
// Параметры:
//  ТабличнаяЧасть - табличная часть, для подбора в которую формируется список запросов.
//
// Возвращаемое значение:
//  Список значений - список запросов.
//
Функция СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть)

    СписокЗапросов = Новый СписокЗначений();
    СписокЗапросов.Добавить(,"По справочнику");
    
    ПустойТипЦен = НЕ ЗначениеЗаполнено(ТипЦен);

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

        Если НЕ ПустойТипЦен Тогда
            СписокЗапросов.Добавить("ЦеныУслуг", "Цены услуг");
        КонецЕсли;
        
    КонецЕсли;

    Возврат СписокЗапросов;

КонецФункции // СформироватьСписокЗапросовДляПодбора()

// Процедура вызывает сервисный механизм для подбора номеклатуры в табличную часть.
//
// Параметры:
//  ТабличнаяЧасть - табличная часть, в которую осуществляется подбор.
//
Процедура ДействиеПодбор(ТабличнаяЧасть)

    Перем Команда ;
    
    ЕстьЦена = Истина;

    Если ТабличнаяЧасть = Товары Тогда

        Команда         = "ПодборВТабличнуюЧастьТовары";
        Валюта          = ВалютаДокумента;
        СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов;
        ИмяТабличнойЧасти = "Товары";

    ИначеЕсли ТабличнаяЧасть = Услуги Тогда

        Команда           = "ПодборВТабличнуюЧастьУслуги";
        Валюта            = ВалютаДокумента;
        ИмяТабличнойЧасти = "Услуги";

    КонецЕсли;

    СписокВидовПодбора = СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть);
    ПредставлениеДок = Метаданные().Представление();

    СтруктураПараметровПодбора = Новый Структура();
    СтруктураПараметровПодбора.Вставить("Команда"            , Команда);
    СтруктураПараметровПодбора.Вставить("СписокВидовПодбора" , СписокВидовПодбора);

    // Параметры запросов.
    ВременнаяДатаРасчетов = ?(НачалоДня(Дата) = НачалоДня(ТекущаяДата()), Неопределено, Дата);
    СтруктураПараметровПодбора.Вставить("ДатаРасчетов"         , ВременнаяДатаРасчетов);
    СтруктураПараметровПодбора.Вставить("Склад"                , Неопределено);
    СтруктураПараметровПодбора.Вставить("ТипЦен"               , ТипЦен);
    СтруктураПараметровПодбора.Вставить("ДоговорКонтрагента"   , ДоговорКонтрагента);
    СтруктураПараметровПодбора.Вставить("Контрагент"           , Контрагент);
    СтруктураПараметровПодбора.Вставить("Организация"          , Организация);

    СтруктураПараметровПодбора.Вставить("СпособЗаполненияЦен"  , СпособЗаполненияЦен);
    СтруктураПараметровПодбора.Вставить("ЕстьЦена"             , ЕстьЦена);
    СтруктураПараметровПодбора.Вставить("ВыбиратьВсе"          , Истина);
    СтруктураПараметровПодбора.Вставить("ВалютаДокумента"      , Валюта);
    СтруктураПараметровПодбора.Вставить("ПеретаскиватьГруппы"  , Истина);
    СтруктураПараметровПодбора.Вставить("Заголовок", "Подбор номенклатуры в документ " +
                                        ПредставлениеДок + " № " + Номер + " (" + ИмяТабличнойЧасти + ")");

    ОбработкаТабличныхЧастей.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, мФормаПодбораНоменклатуры);
КонецПроцедуры // ДействиеПодбор()

// Производит заполнение документа переданными из формы подбора данными.
//
// Параметры:
//  ТабличнаяЧасть    - табличная часть, в которую надо добавлять подобранную позицию номенклатуры;
//  ЗначениеВыбора    - структура, содержащая параметры подбора.
//
Процедура ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) Экспорт

    Перем СпособЗаполненияЦен, ВалютаЦены;
    Перем Номенклатура, ЕдиницаИзмерения,  Количество, Цена;

    // Получим параметры подбора из структуры подбора.
    ЗначениеВыбора.Свойство("СпособЗаполненияЦен", СпособЗаполненияЦен);
    ЗначениеВыбора.Свойство("ВалютаЦены"         , ВалютаЦены);
    ЗначениеВыбора.Свойство("ЕдиницаИзмерения", ЕдиницаИзмерения);
    ЗначениеВыбора.Свойство("Номенклатура"    , Номенклатура);
    ЗначениеВыбора.Свойство("Количество"      , Количество);
    ЗначениеВыбора.Свойство("Цена"            , Цена);


    // Ищем выбранную позицию в таблице подобранной номенклатуры.
    //  Если найдем - увеличим количество; не найдем - добавим новую строку.
    СтруктураОтбора = Новый Структура();
    СтруктураОтбора.Вставить("Номенклатура",     Номенклатура);
    Если ТабличнаяЧасть = Товары Тогда
        СтруктураОтбора.Вставить("ЕдиницаИзмерения", ЕдиницаИзмерения);
    КонецЕсли;
    Если ЗначениеЗаполнено(Цена) Тогда
        СтруктураОтбора.Вставить("Цена", Цена);
    КонецЕсли;

    СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ТабличнаяЧасть, СтруктураОтбора);
    Если СтрокаТабличнойЧасти <> Неопределено Тогда

        // Нашли, увеличиваем количество в первой найденной строке.
        СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;

        Если ТабличнаяЧасть = Товары Тогда

            // Рассчитать реквизиты табличной части.
            ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
            УчетНДСИАкциза.РассчитатьОборотПоРеализацииТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
            ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

        ИначеЕсли ТабличнаяЧасть = Услуги Тогда

            // Рассчитать реквизиты табличной части.
            // Рассчитать реквизиты табличной части.
            ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
            УчетНДСИАкциза.РассчитатьОборотПоРеализацииТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
            ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

        КонецЕсли;
    Иначе

        // Не нашли - добавляем новую строку.
        СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
        СтрокаТабличнойЧасти.Номенклатура = Номенклатура;
        СтрокаТабличнойЧасти.Количество   = Количество;
        
        Если ТабличнаяЧасть = Товары Тогда            
            СтрокаТабличнойЧасти.ЕдиницаИзмерения = ЕдиницаИзмерения;
            СтрокаТабличнойЧасти.Коэффициент      = 1;

            ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
                    
            // Пересчитаем цену в валюту документа.
            Цена = УправлениеЦенообразованием.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, ОбщегоНазначения.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ОбщегоНазначения.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), Дата);

            СтрокаТабличнойЧасти.Цена = ОбработкаТабличныхЧастей.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
                                                             СпособЗаполненияЦен,
                                                            ?(ЗначениеЗаполнено(ТипЦен), ТипЦен.ЦенаВключаетНДС, СуммаВключаетНДС),
                                                             УчитыватьНДС,
                                                             СуммаВключаетНДС,
                                                             УчетНДСИАкциза.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));


            // Рассчитываем реквизиты табличной части.
            ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);            
            УчетНДСИАкциза.РассчитатьОборотПоРеализацииТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
            ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

        ИначеЕсли ТабличнаяЧасть = Услуги Тогда

            // Заполняем реквизиты табличной части.
            
            ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

            // Пересчитаем цену в валюту документа.
            Цена = УправлениеЦенообразованием.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, ОбщегоНазначения.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ОбщегоНазначения.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), Дата);

            СтрокаТабличнойЧасти.Цена       = ОбработкаТабличныхЧастей.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
                                                             СпособЗаполненияЦен,
                                                             ?(ЗначениеЗаполнено(ТипЦен), ТипЦен.ЦенаВключаетНДС, СуммаВключаетНДС),
                                                             УчитыватьНДС,
                                                             СуммаВключаетНДС,
                                                             УчетНДСИАкциза.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));

            ОбработкаТабличныхЧастей.ЗаполнитьСодержаниеТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
                                                
            // Рассчитываем реквизиты табличной части.
            ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
            УчетНДСИАкциза.РассчитатьОборотПоРеализацииТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
            ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
          
        КонецЕсли;

    КонецЕсли;

    ТабличнаяЧастьИмя = Метаданные.НайтиПоТипу(ТипЗнч(ТабличнаяЧасть)).Имя;
    ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока = СтрокаТабличнойЧасти;
    ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяКолонка = ЭлементыФормы[ТабличнаяЧастьИмя].Колонки["Количество"];

КонецПроцедуры // ОбработкаПодбора()

// Обработчик устанавливается динамически методом "ПодключитьОбработчикИзмененияДанных"
// в процедуре "ОткрытьПодборНоменклатуры" общего модуля "ОбработкаТабличныхЧастей"
// Процедура обновляет параметры в форме подбора, если она открыта.
//
// Параметры:
//  Реквизит - измененный реквизит.
//
Процедура ОбновитьФормуПодбора(Реквизит)

    ОбработкаТабличныхЧастей.ОбновитьПараметрыИФормуПодбора(ЭтотОбъект, ЭтаФорма, Реквизит);

КонецПроцедуры // ОбновитьФормуПодбора()

//Функция проверяет на соответствие выбранного документа "Авансовый отчет"
//если ссылка на данную счет-фактуру в данном документе.
//
Функция ПроверитьНаСоответствиеДокумента(ДокСсылка)
    ТабЧастьТовары = ДокСсылка.Товары;
    ТабЧастьУслуги = ДокСсылка.Прочее;
    
    СтруктураОтбора  = Новый Структура("СчетФактура", Ссылка);
    СтрокиТовары =  ТабЧастьТовары.НайтиСтроки(СтруктураОтбора);
    СтрокиУслуги =  ТабЧастьТовары.НайтиСтроки(СтруктураОтбора);
    
    Если СтрокиТовары.Количество() + СтрокиУслуги.Количество() = 0 Тогда
        Сообщить("Для выбранного авансового отчета, в табличной части ""Товары"" и ""Прочее"" """ + ДокСсылка + """ отсутствуют ссылки на данный Счет-фактуру..."
                + Символы.ВК + "Выбранный документ-основание будет очищен!", СтатусСообщения.Важное);
        Возврат Истина;
    КонецЕсли;
    
    Возврат Ложь;
    
КонецФункции // ПроверитьНаСоответствиеДокумента

// Процедура устанавливает подменю "Печать" и кнопку "Печать по умолчанию" при необходимости
//
Процедура УстановитьКнопкиПечати()
    
    мДеревоМакетов = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(Ссылка, ПолучитьСтруктуруПечатныхФорм(), Новый Действие("ОсновныеДействияФормыПечать"), Новый Действие("ОсновныеДействияФормыУстановитьПечатьПоУмолчанию"));

    УниверсальныеМеханизмы.УстановитьПодменюПечати    (мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов.Строки.Количество() > 0);
    УниверсальныеМеханизмы.УстановитьПечатьПоУмолчанию(мПечатьПоУмолчанию, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов, Метаданные().Имя,Новый Действие("ОсновныеДействияФормыПечатьПоУмолчанию"));

    Если Не мПодменюПечати = Неопределено Тогда
        УниверсальныеМеханизмы.СформироватьПодменю(мДеревоМакетов, мПодменюПечати,Истина,Истина);
    КонецЕсли;
    
КонецПроцедуры

//Процедура обрабатывает событие "ПриИзменении" поле ввода "Организация"
//
Процедура ПриИзмененииЗначенияОрганизации(ФлагИзмененияОрганизации = Истина)
    
    Оповестить("ПриИзмененииОрганизацииСтруктурногоПодразделенияПодборОС", ЭтотОбъект);
    
    Если (мИсходнаяОрганизация = Организация И ЗначениеЗаполнено(мИсходнаяОрганизация))
        ИЛИ НЕ ФлагИзмененияОрганизации Тогда
        Возврат;
    КонецЕсли;
    
    //при смене организации очищаем номер документа, если он не пустой
    Если Не ПустаяСтрока(Номер) Тогда
        РаботаСДиалогами.СброситьУстановленныйКодНомерОбъекта(ЭтотОбъект, "Номер", ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);        
    КонецЕсли;
    мИсходнаяОрганизация = Организация;
    
    Если Не ДокументыОснования.Количество() = 0  Тогда
        Предупреждение("Организация изменена, табличная часть ""Документы-основания"" будет очищена!");
        ДокументыОснования.Очистить();
    КонецЕсли;

    Если Организация <> ОсновнойСчетФактура.Организация
        И ОсновнойСчетФактура <> Документы.СчетФактураПолученный.ПустаяСсылка() Тогда
        Сообщить("Внимание! Организация основного счета-фактуры не соответствует организации документа! Поле ""Основной счет-фактура"" будет очищен!", СтатусСообщения.Внимание);
        ОсновнойСчетФактура = Документы.СчетФактураПолученный.ПустаяСсылка();
    КонецЕсли;
    
    // Выполняем общие действия для всех документов при изменении Организация.
    РаботаСДиалогами.ПриИзмененииЗначенияОрганизации(ЭтотОбъект, глТекущийПользователь, );
    Покупатель = УчетНДСИАкциза.ПолучитьПлательщикаНДСВСчетеФактуре(Организация);
    
    // Могли поменять договор.
    ПриИзмененииДоговора();
    
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ УПРАВЛЕНИЯ ВНЕШНИМ ВИДОМ ФОРМЫ

// Процедура формирует текст в информационной надписи об итогах документа.
//
// Параметры:
//  Нет.
//
Процедура ОбновитьПодвал()

    // При изменении данных обновим суммы в подвале.
    ОбщаяСумма       = УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект, "Товары") + УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект, "Услуги") + УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект, "ОС") + УчетНДСИАкциза.ПолучитьСуммуДокументаСНДС(ЭтотОбъект, "НМА");
    ОбщаяСуммаНДС = Товары.Итог("СуммаНДС")+Услуги.Итог("СуммаНДС") + ОС.Итог("СуммаНДС") + НМА.Итог("СуммаНДС");
    ЭлементыФормы.Всего.Значение      = ОбщегоНазначения.ФорматСумм(ОбщаяСумма);
    ЭлементыФормы.ВсегоНДС.Значение   = ОбщегоНазначения.ФорматСумм(ОбщаяСуммаНДС);
        
    ВременнаяСтрока = "";

    Если (ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента))
       И (ДокументОбъект.ВалютаДокумента <> мВалютаРегламентированногоУчета) Тогда

        ВременнаяСтрока = ВременнаяСтрока + ОбщегоНазначения.КратностьДокумента(ДокументОбъект, мВалютаРегламентированногоУчета)
                        + " " +  ДокументОбъект.ВалютаДокумента
                        + " = " + ОбщегоНазначения.КурсДокумента(ДокументОбъект, мВалютаРегламентированногоУчета)
                        + мВалютаРегламентированногоУчета + ", ";

    КонецЕсли;

    Если ЗначениеЗаполнено(ДокументОбъект.ТипЦен) Тогда
        ВременнаяСтрока = ВременнаяСтрока + "Тип цен: " + ДокументОбъект.ТипЦен;
    Иначе
        ВременнаяСтрока = ВременнаяСтрока + "Тип цен: Не заполнено!";
    КонецЕсли;

    ЭлементыФормы.ИнфНадписьТоварыИтоги.Заголовок = ВременнаяСтрока;

    Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
        ЭлементыФормы.НадписьВсего.Заголовок = "Всего (<>):";
    Иначе
        ЭлементыФормы.НадписьВсего.Заголовок = "Всего (" + СокрЛП(ДокументОбъект.ВалютаДокумента) +"):";
    КонецЕсли;

    Если СуммаВключаетНДС Тогда
        ЭлементыФормы.НадписьВсегоНДС.Заголовок = "НДС (в т. ч.):";
    Иначе
        ЭлементыФормы.НадписьВсегоНДС.Заголовок = "НДС (сверху):";
    КонецЕсли;
    
        
КонецПроцедуры // ОбновитьПодвал()

// Устанавливает соответстующие свойства поля ввода цены при изменении
// номенклатуры в текущей строке табличной части.
// Для оптового склада или услуг в рознице цена редактируется,
// Для товаров на розничном складе выбирается из списка наличия в регистре.
//
// Параметры:
//  Номенклатура - ссылка на справочник, элемент номенклатуры, для которого будем устанавливать цену
//
Процедура УстановитьСвойстваПоляВводаЦены(Номенклатура)

    ТекущаяСтрока     = ЭлементыФормы.Товары.ТекущиеДанные;
    ЭлементУправления = ЭлементыФормы.Товары.Колонки.Цена.ЭлементУправления;
    
    ЭлементУправления.КнопкаСпискаВыбора = Ложь;

КонецПроцедуры // УстановитьСвойстваПоляВводаЦены()

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

    КонецЕсли;
    
    УстановитьДоступностьОсновногоСчетаФактуры();
    
КонецПроцедуры

// Процедура устанавливает видимость для тех колонок в табличной части
// "Товары", видимость которых определяется реквизитами документа.
//
// Параметры:
//  Нет.
//
Процедура УстановитьВидимость()

    Колонки = ЭлементыФормы.Товары.Колонки;
    
    ЭлементыФормы.ОсновнаяПанель.Страницы.УчастникиСовместнойДеятельности.Видимость = ДоговорКонтрагента.ДоговорСовместнойДеятельности;

КонецПроцедуры // УстановитьВидимость()

// Устанавливает текущую страницу панели в зависимости от количества
// строк, занесенных в табличные части.
//
Процедура УстановитьТекущуюСтраницуОсновнойПанели()
    МаксКоличество = Макс(Товары.Количество(), Услуги.Количество(), ОС.Количество(), НМА.Количество());
    
    Если МаксКоличество = 0 ИЛИ МаксКоличество = Товары.Количество() Тогда
        ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанель.Страницы.Товары;            
    ИначеЕсли МаксКоличество = Услуги.Количество() Тогда
        ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанель.Страницы.Услуги;    
    ИначеЕсли МаксКоличество = ОС.Количество() Тогда
        ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанель.Страницы.ОС;        
    Иначе
        ЭлементыФормы.ОсновнаяПанель.Теку
5 rmuratuly
 
20.10.15
15:47
Форма Списка






Перем мВалютаРегламентированногоУчета;

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

    РаботаСДиалогами.ПоказатьСтруктуруПодчиненностиДокумента(ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка);
    
КонецПроцедуры

// Процедура - обработчик события "ПередОткрытием" формы
//
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
    // Установка подменю "Советы".
    РаботаСДиалогами.УстановитьПодменюСоветы(ЭлементыФормы.ДействияФормы, "СчетФактураПолученный");
    
    // обработка колонки ручной корректировки
    ДокументСписок.Колонки.Добавить("РучнаяКорректировка");    
    
КонецПроцедуры

// Процедура вызывается при нажатии кнопки "Советы" командной панели формы.
//
Процедура ДействияФормыОткрытьСоветы(Кнопка)
    
    РаботаСДиалогами.ОткрытьСоветы(Кнопка);
    
КонецПроцедуры //ДействияФормыОткрытьСоветы()

// Процедура открывает форму свойств документа
//
Процедура ДействияФормыДействиеОткрытьСвойства(Кнопка)
    Если ЭтаФорма.ЭлементыФормы.ДокументСписок.ТекущаяСтрока = Неопределено тогда
        Возврат
    КонецЕсли;
    РаботаСДиалогами.ОткрытьСвойстваДокумента(ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка, ЭтаФорма);
КонецПроцедуры

// Процедура открывает форму категорий документа
//
Процедура ДействияФормыДействиеОткрытьКатегории(Кнопка)
    Если ЭтаФорма.ЭлементыФормы.ДокументСписок.ТекущаяСтрока = Неопределено тогда
        Возврат
    КонецЕсли;
    РаботаСДиалогами.ОткрытьКатегорииДокумента(ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка, ЭтаФорма);
КонецПроцедуры

//Процедура - обработчик события "ПриОткрытии" формы
//
Процедура ПриОткрытии()

    // Проверка однофирменности
    РаботаСДиалогами.УстановитьОтборПоОрганизации(ЭтаФорма, УчетПоВсемОрганизациям, ОсновнаяОрганизация, "ДокументСписок");

    // Видимость колонки "СтруктурноеПодразделение"
    РаботаСДиалогами.ВидимостьКолонкиСтруктурногоПодразделения(ЭлементыФормы.ДокументСписок);

    ЭСФСервер.СписокСчетовФактурПриСозданииНаСервере(ЭтаФорма, Неопределено, Неопределено);
    
КонецПроцедуры

//Процедура - обработчик события "ОбработкаОповещения" формы
//
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    ЭСФКлиент.СписокСчетовФактурОбработкаОповещения(ЭтаФорма, "ДокументСписок", ИмяСобытия, Параметр, Источник);
КонецПроцедуры

//Процедура открывает форму движений документа
//
Процедура ОсновныеДействияФормыНастройка(Кнопка)

    Если ЭтаФорма.ЭлементыФормы.ДокументСписок.ТекущаяСтрока = Неопределено тогда
        Возврат
    КонецЕсли;

    ОбщегоНазначения.РучнаяКорректировкаОсновнаяФорма(Ложь,ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка, Истина);

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


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ ФОРМЫ

//Процедура-обработчик "ПриПолученииДанных" табличного поля "ДокументСписок"
//
Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    ОбщегоНазначения.РучнаяКорректировкаСписокПриПолученииДанных(ОформленияСтрок);
    
    ЭСФКлиент.СписокСчетовФактурПриПолученииДанных(Ложь, ЭлементыФормы.ДокументСписок, ОформленияСтрок);
    
КонецПроцедуры

// ЭСФ

Процедура ОткрытьЭСФ(Кнопка)
    ЭСФКлиент.ОткрытьЭСФ(ЭлементыФормы.ДокументСписок.ВыделенныеСтроки);    
КонецПроцедуры

Процедура СвязанныеЭСФ(Кнопка)
    ЭСФКлиент.СвязанныеЭСФ(ЭлементыФормы.ДокументСписок.ВыделенныеСтроки);    
КонецПроцедуры

Процедура СписокЭСФ(Кнопка)
    ЭСФКлиент.СписокЭСФ(ПредопределенноеЗначение("Перечисление.НаправленияЭСФ.Входящий"));    
КонецПроцедуры


// Конец ЭСФ

мВалютаРегламентированногоУчета   = Константы.ВалютаРегламентированногоУчета.Получить();
6 Михаил Козлов
 
20.10.15
15:58
(5) Я так и не понял, есть реквизит документа, отвечающий за сумму НДС или нет.
Посмотрите, что написано в ЭСФКлиент.СписокСчетовФактурПриПолученииДанных(Ложь, ЭлементыФормы.ДокументСписок, ОформленияСтрок);
и по аналогии установите Текст в ячейку "СуммаНДС" (если нет реквизита - см. выше), предварительно выяснив, как эта сумма вычисляется.
7 rmuratuly
 
21.10.15
06:17
ДД! Добавил СуммаНДС в Реквизиты Документа. В ФормаСписка добавил Колонку Сумма НДС. Что и где нужно добавить ещё?

Скрин: http://s23.postimg.org/o9ze6im57/image.jpg
8 Михаил Козлов
 
21.10.15
16:50
(7) Вам нужно обеспечить "правильное" заполнение этого реквизита. Например, в ПередЗаписью объекта.
9 rmuratuly
 
22.10.15
14:43
попробовал все варианты. Все равно результат 0. Чё ещё можно придумать?