Имя: Пароль:
1C
1С v8
после загрузки справочника выдает ошибку. Значение не является значением объектного типа
0 Sanekaa
 
17.09.15
16:57
Помогите кто-нибудь, заливала как обычно новый список номенклатуры из эксель с помощью обработки "загрузка данных из табличной части". Раньше уже заливала товары, сейчас залила услуги. Причем когда заливала сначала поставила вид номенклатуры товары, потом поменяла на услуги и еще раз перезалила, номенклатура изменилась на услуги.
Но теперь глючит в заказе покупателя, при выборе подбором услуг, даже старых, вылезает вот такая штука

Значение не является значением объектного типа ( Вид номенклатуры)
Подробнее

{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(934)}: Значение не является значением объектного типа (ВидНоменклатуры)
    СтрокаТабличнойЧасти.ВидНоменклатуры = СтрокаТабличнойЧасти.Номенклатура.ВидНоменклатуры;


Причем несмотря что в номенклатуре стоит услуга, а не товар, я могу эту услугу поставить в заказе покупателя в колонку товаров

что делать?(((((((
1 Ненавижу 1С
 
гуру
17.09.15
17:00
начнем с названия конфигурации и её версии
2 Sanekaa
 
17.09.15
17:02
Извияюсь,
1с 8.2
УТ 10.3
3 Живой Ископаемый
 
17.09.15
17:02
не, ну ты посмотри на угодника, с прелюдий начинает
4 Sanekaa
 
17.09.15
17:07
также загружала единицы товара и цены
настройки загрузок могу скинуть, они у меня сохранены
5 Ненавижу 1С
 
гуру
17.09.15
17:08
галка услуга стоит у этой номенклатуры?
6 Sanekaa
 
17.09.15
17:12
(5) галка - вы имеете ввиду выбрано ли в самой номенклатуре что это услуга, а не товар? - да, вид номенклатуры стоит "услуга"
7 Ненавижу 1С
 
гуру
17.09.15
17:20
(6) реквизит такой справочника номенклатура, называется "услуга"
8 Sanekaa
 
17.09.15
17:36
(7) в самом справочнике? не очень понимаю где можно галочку поставить, везде выбор из списка: товар, услуга или набор-комплект
9 Dmitriy_76
 
17.09.15
17:46
думаю ошибка тут : СтрокаТабличнойЧасти.ВидНоменклатуры

а не справа
10 Dmitriy_76
 
17.09.15
17:48
+(9) в СтрокаТабличнойЧасти есть колонка ВидНоменклатуры ?
11 Sanekaa
 
17.09.15
17:50
(7) просто не понимаю, старые уже заведенные давно услуги при подборе в заказе покупателя тоже выдают ошибку((((( раньше никогда такого не было
12 Sanekaa
 
17.09.15
17:51
(10) да, есть
13 Dmitriy_76
 
17.09.15
17:52
(12) отладчик ошибку показывает слева или справа ?
14 Dmitriy_76
 
17.09.15
17:53
(11) либо реквизита таб части нет...либо у справочника номенклатура...
15 Sanekaa
 
17.09.15
17:53
(13) как понять?
16 Sanekaa
 
17.09.15
17:56
(14) а почему он пропал? раньше же был? и где искать реквизиты? где их посмотреть?

все это произошло после того как загрузила номенклатуру 2 раза одну и туже, сначала как товары, потом как услуги и вот теперь глюк, ошибка
17 Dmitriy_76
 
17.09.15
17:56
(15) отладчик есть ?
18 Sanekaa
 
17.09.15
17:57
мне реквизиты и галочки искать в конфигурации? если да, я в конфигурацию еще не заходила
19 daniel63
 
17.09.15
17:57
Либо вместо номенклатуры в табличной части пустое значение, либо элемент является группой
20 Sanekaa
 
17.09.15
17:58
в конфигураторе пробовала: администрирование - тестирование и исправление, не помогло
21 Dmitriy_76
 
17.09.15
17:59
(19) f gjqvtv 'nj njkmrj d jnkflxbrt//f gjkmpjdfnmcz jnkflxbrjv//vs yt vj;tv///dct
22 Sanekaa
 
17.09.15
17:59
(17) не знаю, не пользовалась, где он должен быть?где его поискать?
23 Sanekaa
 
17.09.15
18:01
(19) после того как ошибку закрываешь, номенклатура добавляется в табличную часть заказа покупателя
24 Sanekaa
 
17.09.15
18:03
В окне с ошибкой есть кнопка конфигуратор, в конфигураторе открывает окно Документ ЗаказПокупателя: ФормаДокумента


Перем мОповещатьВладельцаОЗакрытии Экспорт;

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

// Хранит текущее значение учетной политики, организация является плательщиком ЕНВД
Перем мОрганизацияЯвляетсяПлательщикомЕНВД;

// Хранит текущее значение организации для контроля учетной политики, организация является плательщиком ЕНВД
Перем мТекущаяОрганизация;

Перем мКолонкиТовары, мКолонкиВозвратнаяТара, мИспользоватьТару, мКолонкиУслуги, мКолонкиТаблицаАвтоСкидок;

Перем мВидимостьЗакладкиУслуг;

Перем мРазрешитьНулевыеЦеныВОпте, мРазрешитьНулевыеЦеныВРознице;

// Устанавливается в значение "Истина", если пользователю можно менять цену
// в документе
Перем мМожноМенятьЦенуВДокументе;

Перем мЧас;
Перем мМинута;

Перем мОбработкаПоискаПоСтроке;
Перем мТекстПоискаПоСтроке;
Перем мПоследнееЗначениеЭлементаПоискаПоСтроке;

// Хранит суммарное количество товаров в табличной части Товары
Перем мТекущееКоличествоТоваров;

Перем мФормаСоставНабора, мТекущаяСтрокаНабор;

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

Перем мКартинкаНаборКомплект;

Перем мТерминалы;
Перем мИспользоватьВнутренниеЗаказы;

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

// Процедура выполняет необходимые действия при изменении дисконтной карты.
//
Процедура ПриИзмененииДисконтнойКарты()

    Если ЗначениеЗаполнено(ДисконтнаяКарта) Тогда
        Если ЗначениеЗаполнено(ДисконтнаяКарта.ВладелецКарты)
           И ДисконтнаяКарта.ВладелецКарты <> Контрагент Тогда
            Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
                Ответ = КодВозвратаДиалога.Да;
            Иначе
                Ответ = Вопрос("У выбранной дисконтной карты владелец " + СокрЛП(ДисконтнаяКарта.ВладелецКарты) + "."
                   + Символы.ПС + "Изменить контрагента в документе?", РежимДиалогаВопрос.ДаНет);
            КонецЕсли;

            Если Ответ = КодВозвратаДиалога.Да Тогда
                Контрагент = ДисконтнаяКарта.ВладелецКарты;
                ПриИзмененииКонтрагента();
                ПриИнтерактивномИзмененииДоговора();
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

    ПересчитатьАвтоматическиеСкидки();

КонецПроцедуры //ПриИзмененииДисконтнойКарты()

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

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

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

КонецПроцедуры // ПриИзмененииНоменклатурыТовары()

// Процедура выполняет необходимые действия при изменении количества в ТЧ "Товары".
//
// Параметры:
//  Элемент - ЭУ, для которого вызван обработчик.
//
Процедура ПриИзмененииКоличестваТовары(Элемент)

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

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

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

КонецПроцедуры // ПриИзмененииКоличестваТовары()

// Процедура выполняет необходимые действия перед удалением строки ТЧ "Товары".
//
// Параметры:
//  Элемент - ЭУ, для которого вызван обработчик.
//  Отказ - флаг отказа.
//
Процедура ПередУдалениемТовары(Элемент, Отказ)

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

    Если Элемент.ТекущиеДанные = мТекущаяСтрокаНабор И мФормаСоставНабора.Открыта() Тогда
        мФормаСоставНабора.Закрыть();
    КонецЕсли;

    УправлениеЗапасами.ОчиститьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);

КонецПроцедуры // ПередУдалениемТовары()

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

    ПересчитатьАвтоматическиеСкидки();

    // Итоговая информация об отклонение от плановой себестоимости.
    РаботаСДиалогами.СформироватьНадписьИтоговоеОтклонениеОтПлановойСебестоимости(ЭлементыФормы.ИнфНадписьИтоговоеОтклонениеОтПлановойСебестоимости, ЭтотОбъект);

КонецПроцедуры // ПослеУдаленияТовары()

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

// Процедура вызывается для обработки программного изменения строки.
//
// Параметры
//  СтрокаТабличнойЧасти - строка ТЧ "Товары", изменение которой нужно обработать.
//  ИзмененнаяКолонка - название колонки, обработчик изменения которой необходимо вызвать.
//
Процедура ИзменениеСтрокиПрограммное(СтрокаТабличнойЧасти, ИзмененнаяКолонка) Экспорт

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

    Если ИзмененнаяКолонка = "Номенклатура" Тогда
        ПриИзмененииНоменклатурыТовары(ЭлементыФормы.Товары);
    ИначеЕсли ИзмененнаяКолонка = "Количество" Тогда
        ПриИзмененииКоличестваТовары(ЭлементыФормы.Товары);
    КонецЕсли;

КонецПроцедуры // ИзменениеСтрокиПрограммное()

// Процедура вызывается для обработки программного удалениия строки.
//
// Параметры
//  СтрокаТабличнойЧасти - строка ТЧ "Товары", которую нужно удалить.
//
Процедура УдалениеСтрокиПрограммное(СтрокаТабличнойЧасти) Экспорт

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

    ПередУдалениемТовары(ЭлементыФормы.Товары, Ложь);

    Товары.Удалить(СтрокаТабличнойЧасти);

    ПослеУдаленияТовары(ЭлементыФормы.Товары);

КонецПроцедуры // УдалениеСтрокиПрограммное()

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

    СтруктураПараметров = Новый Структура;
    Если ЗначениеЗаполнено(Контрагент) Тогда
        СтруктураПараметров.Вставить("Владелец", Контрагент);
    КонецЕсли;
    
    Возврат СтруктураПараметров;

КонецФункции // ПолучитьСтруктуруПараметровПоискаПоСтроке()()

// Процедура выполняет необходимые действия при изменении договора взаиморасчетов
// с контрагентом.
//
Процедура ПриИнтерактивномИзмененииДоговора()

    ПриИзмененииДоговора();
    МеханизмНумерацииОбъектов.ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);
    РаботаСДиалогами.СформироватьНадписьДолга(ДоговорКонтрагента, Ссылка, ЭлементыФормы.ИнфНадписьДолга, , Истина);
    УстановитьЗаголовкиПоДоговору();

    // Услуги на комиссию не отдаем.
    мВидимостьЗакладкиУслуг = ДоговорКонтрагента.ВидДоговора <> Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;

    УстановитьВидимость();
    мТекущийДоговорКонтрагента = ДоговорКонтрагента;
КонецПроцедуры // ПриИнтерактивномИзмененииДоговора()

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

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

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

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

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

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

// Процедура обновляет параметры в форме подбора, если она открыта.
//
// Параметры:
//  Реквизит - измененный реквизит.
//
Процедура ОбновитьФормуПодбора(Реквизит)

    РаботаСДиалогами.ОбновитьПараметрыИФормуПодбора(ЭтотОбъект, ЭтаФорма, Реквизит);

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

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

    Перем Команда, Валюта;

    ЕстьЦена        = мМожноМенятьЦенуВДокументе;
    ЕстьСерия       = ТабличнаяЧасть = Товары
        И ЗначениеЗаполнено(ДоговорКонтрагента)
        И ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей
        И мРезервироватьПоСериям
        И (ЗначениеЗаполнено(СкладГруппа) и ТипЗнч(СкладГруппа)=Тип("СправочникСсылка.Склады"));
    СкрыватьХарактеристику = Ложь;
    Валюта          = ВалютаДокумента;
    ПодбиратьУслуги = Ложь;

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

        Команда           = "ПодборВТабличнуюЧастьТовары";
        ИмяТабличнойЧасти = "Товары";

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

        Команда           = "ПодборВТабличнуюЧастьВозвратнаяТара";
        ИмяТабличнойЧасти = "Тара";

    КонецЕсли;

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

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

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


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

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

    Перем Номенклатура;

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

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

    Если (ТабличнаяЧасть = Товары ИЛИ ТабличнаяЧасть = ВозвратнаяТара)
       И Номенклатура.Услуга Тогда
        Предупреждение("В данном контексте услуги не подбираются!");
        Возврат;
    ИначеЕсли ТабличнаяЧасть = Услуги И Не Номенклатура.Услуга Тогда
        Предупреждение("В данном контексте товары не подбираются!");
        Возврат;
    КонецЕсли;

    СтрокаТабличнойЧасти = ЗаполнитьТабличнуюЧастьИзПодбора(ТабличнаяЧасть, ЗначениеВыбора);
    Если ТабличнаяЧасть = Товары Тогда
        Если СтрокаТабличнойЧасти.СерияНоменклатуры <> Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда
            СтрокаТабличнойЧАсти.Размещение = СкладГруппа;
        КонецЕсли;
    КонецЕсли;

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

    ТабличнаяЧастьИмя = ?(ТабличнаяЧасть = Товары, "Товары","ВозвратнаяТара");
    ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока  = СтрокаТабличнойЧасти;
    ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяКолонка = ЭлементыФормы[ТабличнаяЧастьИмя].Колонки["Количество"];

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

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

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

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

КонецПроцедуры // ПриИзмененииХарактеристикиНоменклатурыТоваров()

// Обновляет текущее значение учетной политики розничная торговля облагается ЕНВД.
//
Процедура ПриИзмененииОблагаетсяЕНВД(РежимВызова = "")

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

КонецПроцедуры // ПриИзмененииОблагаетсяЕНВД()

Процедура ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента(ЗначениеВыбора)

    ТабличнаяЧасть = ЭтотОбъект[ЗначениеВыбора.ИмяТабличнойЧасти];
    ТабличнаяЧасть.Очистить();

    Для каждого Строка Из ЗначениеВыбора.ТаблицаДанных Цикл

        СтрокаТабличнойЧасти              = ТабличнаяЧасть.Добавить();
        СтрокаТабличнойЧасти.Номенклатура = Строка.Номенклатура;
        СтрокаТабличнойЧасти.Количество   = Строка.Количество;

        Если ЗначениеВыбора.ИмяТабличнойЧасти = "Товары" Тогда

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

        ИначеЕсли ЗначениеВыбора.ИмяТабличнойЧасти = "ВозвратнаяТара" Тогда

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

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

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

        КонецЕсли;
    КонецЦикла;

КонецПроцедуры // ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента()

// Очищает значение реквизита в табличных частях "Товары", "Возвратная тара".
//
Процедура ОчиститьРеквизитВТабличнойЧасти(ТабличнаяЧасть, ИмяРеквизита)

    // Очистим значения в строках
    Для Каждого Строка Из ТабличнаяЧасть Цикл
        Строка[ИмяРеквизита] = Неопределено;
    КонецЦикла;

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

// Процедура очищает колонку "Размещение" табличной части.
//
Процедура ОчиститьРазмещениеВТабличнойЧасти(ТабличнаяЧасть)

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

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

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

    // Определим текущий вид склада
    Если ЗначениеЗаполнено(СкладГруппа)
       И ТипЗнч(СкладГруппа) = Тип("СправочникСсылка.Склады") Тогда
        ВидСклада = СкладГруппа.ВидСклада;
    Иначе
        ВидСклада = Перечисления.ВидыСкладов.Оптовый;
    КонецЕсли;

    // Оформление колонок таблицы
    ФлагАвтоОтметкиНезаполненого = Истина;

    Если (ВидСклада = Перечисления.ВидыСкладов.Оптовый ИЛИ НЕ ЗначениеЗаполнено(ВидСклада)) И мРазрешитьНулевыеЦеныВОпте Тогда
        ФлагАвтоОтметкиНезаполненого = Ложь;
    ИначеЕсли ВидСклада = Перечисления.ВидыСкладов.Розничный И мРазрешитьНулевыеЦеныВРознице Тогда
        ФлагАвтоОтметкиНезаполненого = Ложь;
    КонецЕсли;

    мКолонкиТовары.Сумма.АвтоОтметкаНезаполненного         = ФлагАвтоОтметкиНезаполненого;
    мКолонкиТовары.Цена.АвтоОтметкаНезаполненного          = ФлагАвтоОтметкиНезаполненого;
    мКолонкиВозвратнаяТара.Сумма.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
    мКолонкиВозвратнаяТара.Цена.АвтоОтметкаНезаполненного  = ФлагАвтоОтметкиНезаполненого;

КонецПроцедуры // ПриИзмененииВидаСклада()


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

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

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

// Процедура устанавливает доступность кнопки "Заполнить и провести". Кнопка доступна,
// если документ - внешний заказ, его дата совпадает с текущей и установлен хотя бы один
// из флагов Авторазмещение или Авторезервирование.
//
// Параметры:
//    Нет.
//
Процедура УстановитьДоступностьКнопкиЗаполнитьИПровести()

    ЭлементыФормы.ДействияФормы.Кнопки.ПодменюЗаполнитьИПровести.Доступность =
        НачалоДня(Дата) = НачалоДня(ТекущаяДата());

КонецПроцедуры // УстановитьДоступностьКнопкиЗаполнитьИПровести

// Процедура устанавливает доступность кнопки "СоздатьРеализацию". Кнопка доступна,
// если документ уже был записан.
//
// Параметры:
//    Нет.
//
Процедура УстановитьДоступностьКнопкиДействиеСоздатьРеализацию()

    ДоступностьСозданияРеализации = НЕ Модифицированность() И  не ЭтаФорма.ТолькоПросмотр;

    ЭлементыФормы.ДействияФормы.Кнопки.ДействиеСоздатьРеализацию.Доступность = ДоступностьСозданияРеализации;

КонецПроцедуры // УстановитьДоступностьКнопкиДействиеСоздатьРеализацию()

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

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

    Если УчитыватьНДС <> мКолонкиТовары.СуммаНДС.Видимость Тогда
        ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СуммаНДС,    УчитыватьНДС);
    КонецЕсли;
    
    Если УчитыватьНДС <> мКолонкиУслуги.СтавкаНДС.Видимость Тогда
        ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиУслуги.СтавкаНДС,    УчитыватьНДС);
    КонецЕсли;

    Если УчитыватьНДС <> мКолонкиУслуги.СуммаНДС.Видимость Тогда
        ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиУслуги.СуммаНДС,    УчитыватьНДС);
    КонецЕсли;

    
    // Управление доступностью элементов формы в зависимости от вида операции
    КнопкиКоманднойПанели = ЭлементыФормы.ДействияФормы.Кнопки;
    
    ТолькоПросмотр = ЭтаФорма.ТолькоПросмотр;
    
    //для кнопок с неустановленным признаком "ИзменяетДанные" явно установим доступность
    //для кнопок Анализ и СоздатьРеализацию - есть отдельная логика, которая зависит еще и от других параметров
    КнопкиКоманднойПанели.Файлы1.Доступность = не ТолькоПросмотр;


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

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

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

    мКолонкиТовары.Размещение.ИзменятьВидимость           = истина;


    ЭлементыФормы.ОсновнаяПанель.Страницы.Услуги.Видимость = мВидимостьЗакладкиУслуг;
    
КонецПроцедуры // УстановитьВидимость()

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

    РаботаСДиалогами.УстановитьНадписьСуммыВзаиморасчетов(ЭтотОбъект, ЭтаФорма);

КонецПроцедуры // УстановитьЗаголовкиПоДоговору()

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

    // При изменении данных обновим суммы в подвале.

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

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

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

    КонецЕсли;

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

    Если ЗначениеЗаполнено(ДокументОбъект.УсловиеПродаж) Тогда
        ВременнаяСтрока = ВременнаяСтрока + ", Условие продаж: " + ДокументОбъект.УсловиеПродаж;
    КонецЕсли;

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

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

у тебя в СтрокаТабличнойЧасти.Номенклатура какаято хрень.
И у нее нет 'ВидНоменклатуры'
26 Sanekaa
 
17.09.15
18:05
Пардон, не все скопировала вот полностью



Перем мОповещатьВладельцаОЗакрытии Экспорт;

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

// Хранит текущее значение учетной политики, организация является плательщиком ЕНВД
Перем мОрганизацияЯвляетсяПлательщикомЕНВД;

// Хранит текущее значение организации для контроля учетной политики, организация является плательщиком ЕНВД
Перем мТекущаяОрганизация;

Перем мКолонкиТовары, мКолонкиВозвратнаяТара, мИспользоватьТару, мКолонкиУслуги, мКолонкиТаблицаАвтоСкидок;

Перем мВидимостьЗакладкиУслуг;

Перем мРазрешитьНулевыеЦеныВОпте, мРазрешитьНулевыеЦеныВРознице;

// Устанавливается в значение "Истина", если пользователю можно менять цену
// в документе
Перем мМожноМенятьЦенуВДокументе;

Перем мЧас;
Перем мМинута;

Перем мОбработкаПоискаПоСтроке;
Перем мТекстПоискаПоСтроке;
Перем мПоследнееЗначениеЭлементаПоискаПоСтроке;

// Хранит суммарное количество товаров в табличной части Товары
Перем мТекущееКоличествоТоваров;

Перем мФормаСоставНабора, мТекущаяСтрокаНабор;

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

Перем мКартинкаНаборКомплект;

Перем мТерминалы;
Перем мИспользоватьВнутренниеЗаказы;

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

// Процедура выполняет необходимые действия при изменении дисконтной карты.
//
Процедура ПриИзмененииДисконтнойКарты()

    Если ЗначениеЗаполнено(ДисконтнаяКарта) Тогда
        Если ЗначениеЗаполнено(ДисконтнаяКарта.ВладелецКарты)
           И ДисконтнаяКарта.ВладелецКарты <> Контрагент Тогда
            Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
                Ответ = КодВозвратаДиалога.Да;
            Иначе
                Ответ = Вопрос("У выбранной дисконтной карты владелец " + СокрЛП(ДисконтнаяКарта.ВладелецКарты) + "."
                   + Символы.ПС + "Изменить контрагента в документе?", РежимДиалогаВопрос.ДаНет);
            КонецЕсли;

            Если Ответ = КодВозвратаДиалога.Да Тогда
                Контрагент = ДисконтнаяКарта.ВладелецКарты;
                ПриИзмененииКонтрагента();
                ПриИнтерактивномИзмененииДоговора();
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

    ПересчитатьАвтоматическиеСкидки();

КонецПроцедуры //ПриИзмененииДисконтнойКарты()

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

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

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

КонецПроцедуры // ПриИзмененииНоменклатурыТовары()

// Процедура выполняет необходимые действия при изменении количества в ТЧ "Товары".
//
// Параметры:
//  Элемент - ЭУ, для которого вызван обработчик.
//
Процедура ПриИзмененииКоличестваТовары(Элемент)

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

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

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

КонецПроцедуры // ПриИзмененииКоличестваТовары()

// Процедура выполняет необходимые действия перед удалением строки ТЧ "Товары".
//
// Параметры:
//  Элемент - ЭУ, для которого вызван обработчик.
//  Отказ - флаг отказа.
//
Процедура ПередУдалениемТовары(Элемент, Отказ)

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

    Если Элемент.ТекущиеДанные = мТекущаяСтрокаНабор И мФормаСоставНабора.Открыта() Тогда
        мФормаСоставНабора.Закрыть();
    КонецЕсли;

    УправлениеЗапасами.ОчиститьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);

КонецПроцедуры // ПередУдалениемТовары()

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

    ПересчитатьАвтоматическиеСкидки();

    // Итоговая информация об отклонение от плановой себестоимости.
    РаботаСДиалогами.СформироватьНадписьИтоговоеОтклонениеОтПлановойСебестоимости(ЭлементыФормы.ИнфНадписьИтоговоеОтклонениеОтПлановойСебестоимости, ЭтотОбъект);

КонецПроцедуры // ПослеУдаленияТовары()

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

// Процедура вызывается для обработки программного изменения строки.
//
// Параметры
//  СтрокаТабличнойЧасти - строка ТЧ "Товары", изменение которой нужно обработать.
//  ИзмененнаяКолонка - название колонки, обработчик изменения которой необходимо вызвать.
//
Процедура ИзменениеСтрокиПрограммное(СтрокаТабличнойЧасти, ИзмененнаяКолонка) Экспорт

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

    Если ИзмененнаяКолонка = "Номенклатура" Тогда
        ПриИзмененииНоменклатурыТовары(ЭлементыФормы.Товары);
    ИначеЕсли ИзмененнаяКолонка = "Количество" Тогда
        ПриИзмененииКоличестваТовары(ЭлементыФормы.Товары);
    КонецЕсли;

КонецПроцедуры // ИзменениеСтрокиПрограммное()

// Процедура вызывается для обработки программного удалениия строки.
//
// Параметры
//  СтрокаТабличнойЧасти - строка ТЧ "Товары", которую нужно удалить.
//
Процедура УдалениеСтрокиПрограммное(СтрокаТабличнойЧасти) Экспорт

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

    ПередУдалениемТовары(ЭлементыФормы.Товары, Ложь);

    Товары.Удалить(СтрокаТабличнойЧасти);

    ПослеУдаленияТовары(ЭлементыФормы.Товары);

КонецПроцедуры // УдалениеСтрокиПрограммное()

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

    СтруктураПараметров = Новый Структура;
    Если ЗначениеЗаполнено(Контрагент) Тогда
        СтруктураПараметров.Вставить("Владелец", Контрагент);
    КонецЕсли;
    
    Возврат СтруктураПараметров;

КонецФункции // ПолучитьСтруктуруПараметровПоискаПоСтроке()()

// Процедура выполняет необходимые действия при изменении договора взаиморасчетов
// с контрагентом.
//
Процедура ПриИнтерактивномИзмененииДоговора()

    ПриИзмененииДоговора();
    МеханизмНумерацииОбъектов.ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);
    РаботаСДиалогами.СформироватьНадписьДолга(ДоговорКонтрагента, Ссылка, ЭлементыФормы.ИнфНадписьДолга, , Истина);
    УстановитьЗаголовкиПоДоговору();

    // Услуги на комиссию не отдаем.
    мВидимостьЗакладкиУслуг = ДоговорКонтрагента.ВидДоговора <> Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;

    УстановитьВидимость();
    мТекущийДоговорКонтрагента = ДоговорКонтрагента;
КонецПроцедуры // ПриИнтерактивномИзмененииДоговора()

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

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

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

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

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

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

// Процедура обновляет параметры в форме подбора, если она открыта.
//
// Параметры:
//  Реквизит - измененный реквизит.
//
Процедура ОбновитьФормуПодбора(Реквизит)

    РаботаСДиалогами.ОбновитьПараметрыИФормуПодбора(ЭтотОбъект, ЭтаФорма, Реквизит);

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

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

    Перем Команда, Валюта;

    ЕстьЦена        = мМожноМенятьЦенуВДокументе;
    ЕстьСерия       = ТабличнаяЧасть = Товары
        И ЗначениеЗаполнено(ДоговорКонтрагента)
        И ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей
        И мРезервироватьПоСериям
        И (ЗначениеЗаполнено(СкладГруппа) и ТипЗнч(СкладГруппа)=Тип("СправочникСсылка.Склады"));
    СкрыватьХарактеристику = Ложь;
    Валюта          = ВалютаДокумента;
    ПодбиратьУслуги = Ложь;

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

        Команда           = "ПодборВТабличнуюЧастьТовары";
        ИмяТабличнойЧасти = "Товары";

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

        Команда           = "ПодборВТабличнуюЧастьВозвратнаяТара";
        ИмяТабличнойЧасти = "Тара";

    КонецЕсли;

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

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

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


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

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

    Перем Номенклатура;

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

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

    Если (ТабличнаяЧасть = Товары ИЛИ ТабличнаяЧасть = ВозвратнаяТара)
       И Номенклатура.Услуга Тогда
        Предупреждение("В данном контексте услуги не подбираются!");
        Возврат;
    ИначеЕсли ТабличнаяЧасть = Услуги И Не Номенклатура.Услуга Тогда
        Предупреждение("В данном контексте товары не подбираются!");
        Возврат;
    КонецЕсли;

    СтрокаТабличнойЧасти = ЗаполнитьТабличнуюЧастьИзПодбора(ТабличнаяЧасть, ЗначениеВыбора);
    Если ТабличнаяЧасть = Товары Тогда
        Если СтрокаТабличнойЧасти.СерияНоменклатуры <> Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда
            СтрокаТабличнойЧАсти.Размещение = СкладГруппа;
        КонецЕсли;
    КонецЕсли;

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

    ТабличнаяЧастьИмя = ?(ТабличнаяЧасть = Товары, "Товары","ВозвратнаяТара");
    ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока  = СтрокаТабличнойЧасти;
    ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяКолонка = ЭлементыФормы[ТабличнаяЧастьИмя].Колонки["Количество"];

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

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

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

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

КонецПроцедуры // ПриИзмененииХарактеристикиНоменклатурыТоваров()

// Обновляет текущее значение учетной политики розничная торговля облагается ЕНВД.
//
Процедура ПриИзмененииОблагаетсяЕНВД(РежимВызова = "")

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

КонецПроцедуры // ПриИзмененииОблагаетсяЕНВД()

Процедура ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента(ЗначениеВыбора)

    ТабличнаяЧасть = ЭтотОбъект[ЗначениеВыбора.ИмяТабличнойЧасти];
    ТабличнаяЧасть.Очистить();

    Для каждого Строка Из ЗначениеВыбора.ТаблицаДанных Цикл

        СтрокаТабличнойЧасти              = ТабличнаяЧасть.Добавить();
        СтрокаТабличнойЧасти.Номенклатура = Строка.Номенклатура;
        СтрокаТабличнойЧасти.Количество   = Строка.Количество;

        Если ЗначениеВыбора.ИмяТабличнойЧасти = "Товары" Тогда

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

        ИначеЕсли ЗначениеВыбора.ИмяТабличнойЧасти = "ВозвратнаяТара" Тогда

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

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

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

        КонецЕсли;
    КонецЦикла;

КонецПроцедуры // ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента()

// Очищает значение реквизита в табличных частях "Товары", "Возвратная тара".
//
Процедура ОчиститьРеквизитВТабличнойЧасти(ТабличнаяЧасть, ИмяРеквизита)

    // Очистим значения в строках
    Для Каждого Строка Из ТабличнаяЧасть Цикл
        Строка[ИмяРеквизита] = Неопределено;
    КонецЦикла;

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

// Процедура очищает колонку "Размещение" табличной части.
//
Процедура ОчиститьРазмещениеВТабличнойЧасти(ТабличнаяЧасть)

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

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

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

    // Определим текущий вид склада
    Если ЗначениеЗаполнено(СкладГруппа)
       И ТипЗнч(СкладГруппа) = Тип("СправочникСсылка.Склады") Тогда
        ВидСклада = СкладГруппа.ВидСклада;
    Иначе
        ВидСклада = Перечисления.ВидыСкладов.Оптовый;
    КонецЕсли;

    // Оформление колонок таблицы
    ФлагАвтоОтметкиНезаполненого = Истина;

    Если (ВидСклада = Перечисления.ВидыСкладов.Оптовый ИЛИ НЕ ЗначениеЗаполнено(ВидСклада)) И мРазрешитьНулевыеЦеныВОпте Тогда
        ФлагАвтоОтметкиНезаполненого = Ложь;
    ИначеЕсли ВидСклада = Перечисления.ВидыСкладов.Розничный И мРазрешитьНулевыеЦеныВРознице Тогда
        ФлагАвтоОтметкиНезаполненого = Ложь;
    КонецЕсли;

    мКолонкиТовары.Сумма.АвтоОтметкаНезаполненного         = ФлагАвтоОтметкиНезаполненого;
    мКолонкиТовары.Цена.АвтоОтметкаНезаполненного          = ФлагАвтоОтметкиНезаполненого;
    мКолонкиВозвратнаяТара.Сумма.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
    мКолонкиВозвратнаяТара.Цена.АвтоОтметкаНезаполненного  = ФлагАвтоОтметкиНезаполненого;

КонецПроцедуры // ПриИзмененииВидаСклада()


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

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

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

// Процедура устанавливает доступность кнопки "Заполнить и провести". Кнопка доступна,
// если документ - внешний заказ, его дата совпадает с текущей и установлен хотя бы один
// из флагов Авторазмещение или Авторезервирование.
//
// Параметры:
//    Нет.
//
Процедура УстановитьДоступностьКнопкиЗаполнитьИПровести()

    ЭлементыФормы.ДействияФормы.Кнопки.ПодменюЗаполнитьИПровести.Доступность =
        НачалоДня(Дата) = НачалоДня(ТекущаяДата());

КонецПроцедуры // УстановитьДоступностьКнопкиЗаполнитьИПровести

// Процедура устанавливает доступность кнопки "СоздатьРеализацию". Кнопка доступна,
// если документ уже был записан.
//
// Параметры:
//    Нет.
//
Процедура УстановитьДоступностьКнопкиДействиеСоздатьРеализацию()

    ДоступностьСозданияРеализации = НЕ Модифицированность() И  не ЭтаФорма.ТолькоПросмотр;

    ЭлементыФормы.ДействияФормы.Кнопки.ДействиеСоздатьРеализацию.Доступность = ДоступностьСозданияРеализации;

КонецПроцедуры // УстановитьДоступностьКнопкиДействиеСоздатьРеализацию()

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

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

    Если УчитыватьНДС <> мКолонкиТовары.СуммаНДС.Видимость Тогда
        ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СуммаНДС,    УчитыватьНДС);
    КонецЕсли;
    
    Если УчитыватьНДС <> мКолонкиУслуги.СтавкаНДС.Видимость Тогда
        ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиУслуги.СтавкаНДС,    УчитыватьНДС);
    КонецЕсли;

    Если УчитыватьНДС <> мКолонкиУслуги.СуммаНДС.Видимость Тогда
        ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиУслуги.СуммаНДС,    УчитыватьНДС);
    КонецЕсли;

    
    // Управление доступностью элементов формы в зависимости от вида операции
    КнопкиКоманднойПанели = ЭлементыФормы.ДействияФормы.Кнопки;
    
    ТолькоПросмотр = ЭтаФорма.ТолькоПросмотр;
    
    //для кнопок с неустановленным признаком "ИзменяетДанные" явно установим доступность
    //для кнопок Анализ и СоздатьРеализацию - есть отдельная логика, которая зависит еще и от других параметров
    КнопкиКоманднойПанели.Файлы1.Доступность = не ТолькоПросмотр;


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

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

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

    мКолонкиТовары.Размещение.ИзменятьВидимость           = истина;


    ЭлементыФормы.ОсновнаяПанель.Страницы.Услуги.Видимость = мВидимостьЗакладкиУслуг;
    
КонецПроцедуры // УстановитьВидимость()

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

    РаботаСДиалогами.УстановитьНадписьСуммыВзаиморасчетов(ЭтотОбъект, ЭтаФорма);

КонецПроцедуры // УстановитьЗаголовкиПоДоговору()

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

    // При изменении данных обновим суммы в подвале.

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

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

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

    КонецЕсли;

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

    Если ЗначениеЗаполнено(ДокументОбъект.УсловиеПродаж) Тогда
        ВременнаяСтрока = ВременнаяСтрока + ", Условие продаж: " + ДокументОбъект.УсловиеПродаж;
    КонецЕсли;

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

    Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
        ЭлементыФормы.НадписьВсего.Заголовок = "Всего (<>):";
    Иначе
        ЭлементыФормы.НадписьВсего.Заголовок = "Всего (" + СокрЛП(ДокументОбъект.ВалютаДокумента) +"):";
    КонецЕсли;
    
    //+
    Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
        ЭлементыФормы.НадписьВсегоТовары.Заголовок = "Всего товары (<>):";
    Иначе
        ЭлементыФормы.НадписьВсегоТовары.Заголовок = "Всего товары (" + СокрЛП(ДокументОбъект.ВалютаДокумента) +"):";
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
        ЭлементыФормы.НадписьВсегоМатериалы.Заголовок = "Всего материалы (<>):";
    Иначе
        ЭлементыФормы.НадписьВсегоМатериалы.Заголовок = "Всего материалы (" + СокрЛП(ДокументОбъект.ВалютаДокумента) +"):";
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента)
27 Sanekaa
 
17.09.15
18:06
(25) что делать то?
28 daniel63
 
17.09.15
18:06
думаю можно через тимвювер показать
29 Sanekaa
 
17.09.15
18:24
(28) так в чем причина?
30 daniel63
 
17.09.15
18:37
в скайп alexuryn пишите, покажу как увидеть ошибку.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.