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

Реализация товаров и услуг

Автор Menfis, 21 авг 2014, 09:41

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

Menfis

Добрый день всем, помогите новичку.
1С:Предприятие 8.3 (8.3.4.496)
Бухгалтерия предприятия, редакция 3.0 (3.0.34.18)

При переходе с 2.0 на 3.0 появилась ошибка при открытии не проведенного документа в Реализации товаров и услуг, если документ проведен открывается нормально.
Ошибка: {Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаОбщая.Форма(978)}: Преобразование значения к типу Булево не может быть выполнено
   РасчетыВУЕ = ДоговорУказан и РеквизитыДоговора.РасчетыВУсловныхЕдиницах;
В отладчике показывается на эту строку:
   РасчетыВУЕ = ДоговорУказан и РеквизитыДоговора.РасчетыВУсловныхЕдиницах;

Помогите разобраться плиз

TreeDogNight

Где-то в коде значению не Булевного типа, пытается присвоиться Истина или Ложь...

Menfis

если я код скину, поможете найти?

morph1991

Цитата: Menfis от 21 авг 2014, 11:09
если я код скину, поможете найти?

сюда код кидай

Menfis

&НаСервере
Процедура ПодготовитьФормуНаСервере() Экспорт

ТекущаяДатаДокумента          = Объект.Дата;
ДатыИзмененияОтветственныхЛиц = Новый ФиксированныйМассив(
ОтветственныеЛицаБППовтИсп.ДатыИзмененияОтветственныхЛицОрганизаций(Объект.Организация));

УстановитьФункциональныеОпцииФормы();

УстановитьСостояниеДокумента();

УстановитьТекстСостоянияЭДНаСервере();

ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();

ДоговорУказан = ЗначениеЗаполнено(Объект.ДоговорКонтрагента);
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ДоговорКонтрагента, "ВидДоговора, ВалютаВзаиморасчетов, РасчетыВУсловныхЕдиницах");

ЭтоКомиссия = ДоговорУказан И РеквизитыДоговора.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
ЭтоОтгрузка = Объект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности;

РасчетыВУЕ = ДоговорУказан и РеквизитыДоговора.РасчетыВУсловныхЕдиницах;

Если ДоговорУказан Тогда
ВалютаВзаиморасчетов = РеквизитыДоговора.ВалютаВзаиморасчетов;
Иначе

Если ЗначениеЗаполнено(Объект.Контрагент)
и НЕ ЗначениеЗаполнено(Объект.Ссылка)
и НЕ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
КонтрагентПриИзмененииНаСервере();
КонецЕсли;

КонецЕсли;

РеализацияТоваровУслугФормы.УстановитьПараметрыВыбора(ЭтаФорма);

ЗаполнитьДобавленныеКолонкиТаблиц();

РеализацияТоваровУслугФормы.ЗаполнитьСписокАдресовДоставки(ЭтаФорма, Объект.Контрагент, Объект.Грузополучатель);

РеализацияТоваровУслугФормы.ЗаполнитьСписокВыбораПатента(ЭтаФорма);


отладчик "отправляет" на эту часть кода, но могу и вообще весь скинуть!?

Kironten

Цитата: Menfis от 21 авг 2014, 13:24
&НаСервере
Процедура ПодготовитьФормуНаСервере() Экспорт

ТекущаяДатаДокумента          = Объект.Дата;
ДатыИзмененияОтветственныхЛиц = Новый ФиксированныйМассив(
ОтветственныеЛицаБППовтИсп.ДатыИзмененияОтветственныхЛицОрганизаций(Объект.Организация));

УстановитьФункциональныеОпцииФормы();

УстановитьСостояниеДокумента();

УстановитьТекстСостоянияЭДНаСервере();

ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();

ДоговорУказан = ЗначениеЗаполнено(Объект.ДоговорКонтрагента);
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ДоговорКонтрагента, "ВидДоговора, ВалютаВзаиморасчетов, РасчетыВУсловныхЕдиницах");

ЭтоКомиссия = ДоговорУказан И РеквизитыДоговора.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
ЭтоОтгрузка = Объект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности;

РасчетыВУЕ = ДоговорУказан и РеквизитыДоговора.РасчетыВУсловныхЕдиницах;

Если ДоговорУказан Тогда
ВалютаВзаиморасчетов = РеквизитыДоговора.ВалютаВзаиморасчетов;
Иначе

Если ЗначениеЗаполнено(Объект.Контрагент)
и НЕ ЗначениеЗаполнено(Объект.Ссылка)
и НЕ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
КонтрагентПриИзмененииНаСервере();
КонецЕсли;

КонецЕсли;

РеализацияТоваровУслугФормы.УстановитьПараметрыВыбора(ЭтаФорма);

ЗаполнитьДобавленныеКолонкиТаблиц();

РеализацияТоваровУслугФормы.ЗаполнитьСписокАдресовДоставки(ЭтаФорма, Объект.Контрагент, Объект.Грузополучатель);

РеализацияТоваровУслугФормы.ЗаполнитьСписокВыбораПатента(ЭтаФорма);

Посмотрите в отладчике, чему у вас на этой строке равен реквизит РеквизитыДоговора.РасчетыВУсловныхЕдиницах.
Похоже на него.
Если бы это был ДоговорУказан, то обматерилось бы еще на строке ЭтоКомиссия.

morph1991

Цитата: Menfis от 21 авг 2014, 13:24
&НаСервере
Процедура ПодготовитьФормуНаСервере() Экспорт

ТекущаяДатаДокумента          = Объект.Дата;
ДатыИзмененияОтветственныхЛиц = Новый ФиксированныйМассив(
ОтветственныеЛицаБППовтИсп.ДатыИзмененияОтветственныхЛицОрганизаций(Объект.Организация));

УстановитьФункциональныеОпцииФормы();

УстановитьСостояниеДокумента();

УстановитьТекстСостоянияЭДНаСервере();

ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();

ДоговорУказан = ЗначениеЗаполнено(Объект.ДоговорКонтрагента);
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ДоговорКонтрагента, "ВидДоговора, ВалютаВзаиморасчетов, РасчетыВУсловныхЕдиницах");

ЭтоКомиссия = ДоговорУказан И РеквизитыДоговора.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
ЭтоОтгрузка = Объект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности;

РасчетыВУЕ = ДоговорУказан и РеквизитыДоговора.РасчетыВУсловныхЕдиницах;

Если ДоговорУказан Тогда
ВалютаВзаиморасчетов = РеквизитыДоговора.ВалютаВзаиморасчетов;
Иначе

Если ЗначениеЗаполнено(Объект.Контрагент)
и НЕ ЗначениеЗаполнено(Объект.Ссылка)
и НЕ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
КонтрагентПриИзмененииНаСервере();
КонецЕсли;

КонецЕсли;

РеализацияТоваровУслугФормы.УстановитьПараметрыВыбора(ЭтаФорма);

ЗаполнитьДобавленныеКолонкиТаблиц();

РеализацияТоваровУслугФормы.ЗаполнитьСписокАдресовДоставки(ЭтаФорма, Объект.Контрагент, Объект.Грузополучатель);

РеализацияТоваровУслугФормы.ЗаполнитьСписокВыбораПатента(ЭтаФорма);


отладчик "отправляет" на эту часть кода, но могу и вообще весь скинуть!?
давай весь

Menfis

Извините, я не понял что именно и как это сделать.. я же вроде код скинул... или что-то в другом месте надо посмотреть?

Добавлено: 21 авг 2014, 14:05


Цитата: morph1991 от 21 авг 2014, 14:02
Цитата: Menfis от 21 авг 2014, 13:24
&НаСервере
Процедура ПодготовитьФормуНаСервере() Экспорт

ТекущаяДатаДокумента          = Объект.Дата;
ДатыИзмененияОтветственныхЛиц = Новый ФиксированныйМассив(
ОтветственныеЛицаБППовтИсп.ДатыИзмененияОтветственныхЛицОрганизаций(Объект.Организация));

УстановитьФункциональныеОпцииФормы();

УстановитьСостояниеДокумента();

УстановитьТекстСостоянияЭДНаСервере();

ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();

ДоговорУказан = ЗначениеЗаполнено(Объект.ДоговорКонтрагента);
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ДоговорКонтрагента, "ВидДоговора, ВалютаВзаиморасчетов, РасчетыВУсловныхЕдиницах");

ЭтоКомиссия = ДоговорУказан И РеквизитыДоговора.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
ЭтоОтгрузка = Объект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности;

РасчетыВУЕ = ДоговорУказан и РеквизитыДоговора.РасчетыВУсловныхЕдиницах;

Если ДоговорУказан Тогда
ВалютаВзаиморасчетов = РеквизитыДоговора.ВалютаВзаиморасчетов;
Иначе

Если ЗначениеЗаполнено(Объект.Контрагент)
и НЕ ЗначениеЗаполнено(Объект.Ссылка)
и НЕ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
КонтрагентПриИзмененииНаСервере();
КонецЕсли;

КонецЕсли;

РеализацияТоваровУслугФормы.УстановитьПараметрыВыбора(ЭтаФорма);

ЗаполнитьДобавленныеКолонкиТаблиц();

РеализацияТоваровУслугФормы.ЗаполнитьСписокАдресовДоставки(ЭтаФорма, Объект.Контрагент, Объект.Грузополучатель);

РеализацияТоваровУслугФормы.ЗаполнитьСписокВыбораПатента(ЭтаФорма);


отладчик "отправляет" на эту часть кода, но могу и вообще весь скинуть!?
давай весь

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

РеализацияТоваровУслугФормы.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

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

УстановитьЭлементыФормыПоВидуОперации();

ПолноеНаименованиеКонтрагента = ?(ЗначениеЗаполнено(Объект.Контрагент), Объект.Контрагент.НаименованиеПолное, "");

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

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

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

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

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

КонецЕсли;

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)

Если РасчетыВУЕ Тогда
ПодключитьОбработчикОжидания("УведомитьОбИзмененияхПравилПереоценкиЗадолженностейВУЕ", 0.60, Истина);
КонецЕсли;

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

РеализацияТоваровУслугФормы.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);

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

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

УстановитьТекстСостоянияЭДНаСервере();
ЗаполнитьДобавленныеКолонкиТаблиц();

РеализацияТоваровУслугФормы.УстановитьЗаголовокФормы(ЭтаФорма);

РеализацияТоваровУслугФормы.ПослеЗаписиНаСервере(ЭтаФорма, Объект, ПараметрыЗаписи);

УстановитьСостояниеДокумента();

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

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)

Если НачалоДня(Объект.Дата) = НачалоДня(ТекущаяДатаДокумента) Тогда
// Изменение времени не влияет на поведение документа.
ТекущаяДатаДокумента = Объект.Дата;
Возврат;
КонецЕсли;

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

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

// Запомним новую дату документа.
ТекущаяДатаДокумента = Объект.Дата;

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

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

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)

Если ЗначениеЗаполнено(Объект.Организация) Тогда
ОрганизацияПриИзмененииНаСервере();
КонецЕсли;

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

&НаКлиенте
Процедура СкладПриИзменении(Элемент)

Если ЗначениеЗаполнено(Объект.Склад) Тогда
СкладПриИзмененииНаСервере();
КонецЕсли;

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

&НаКлиенте
Процедура ДеятельностьНаПатентеПриИзменении(Элемент)

ДеятельностьНаПатентеПриИзмененииНаСервере();

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

&НаКлиенте
Процедура ПатентПриИзменении(Элемент)

РеализацияТоваровУслугФормыКлиент.ПатентПриИзменении(ЭтаФорма, Элемент);

УправлениеФормой(ЭтаФорма);

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

&НаКлиенте
Процедура КонтрагентПриИзменении()

Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
КонтрагентПриИзмененииНаСервере();
КонецЕсли;

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

&НаКлиенте
Процедура КонтрагентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени("ОткрытиеФормыВыбораКонтрагенты");

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

&НаКлиенте
Процедура ДоговорКонтрагентаПриИзменении(Элемент)

Если ЗначениеЗаполнено(Объект.ДоговорКонтрагента) Тогда

ДоговорКонтрагентаПриИзмененииНаСервере();

УведомитьОбИзмененияхПравилПереоценкиЗадолженностейВУЕ();

КонецЕсли;

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

&НаКлиенте
Процедура СпособЗачетаАвансовПриИзменении(Элемент)

Если Объект.ЗачетАвансов.Количество() > 0 Тогда
Объект.ЗачетАвансов.Очистить();
КонецЕсли;

УправлениеФормой(ЭтаФорма);

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

&НаКлиенте
Процедура ЦеныИВалютаНажатие(Элемент, СтандартнаяОбработка)

РеализацияТоваровУслугФормыКлиент.ЦеныИВалютаНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);

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

&НаКлиенте
Процедура СчетНаОплатуПокупателюПриИзменении(Элемент)

Если НЕ ЗначениеЗаполнено(Объект.СчетНаОплатуПокупателю) Тогда
Возврат;
КонецЕсли;

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

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

&НаКлиенте
Процедура ГрузополучательПриИзменении(Элемент)

ГрузополучательПриИзмененииНаСервере();

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

&НаКлиенте
Процедура ДоверенностьВыданаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Список = Новый СписокЗначений();
Список.Добавить(ПолноеНаименованиеКонтрагента);

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

&НаКлиенте
Процедура ДоверенностьЧерезКогоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Список = ПолучитьСписокКонтактныхЛиц(Объект.Контрагент);

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

&НаКлиенте
Процедура НадписьСчетФактураНажатие(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
БухгалтерскийУчетКлиентПереопределяемый.ОткрытьСчетФактуру(ЭтаФорма, СчетФактура, "СчетФактураВыданный");

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

&НаКлиенте
Процедура ОтветственныйПриИзменении(Элемент)

ОтветственныйПриИзмененииНаСервере();

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

&НаКлиенте
Процедура СостояниеЭДНажатие(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
ЭлектронныеДокументыКлиент.ОткрытьДеревоЭД(Объект.Ссылка);

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

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ Товары

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

ОбновитьИтоги(ЭтаФорма);

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

&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

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

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

&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)

Если НоваяСтрока И ОтменаРедактирования Тогда
ОбновитьИтоги(ЭтаФорма);
КонецЕсли;

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

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

ТекущиеДанные = Элементы.Товары.ТекущиеДанные;

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

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

ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(ЭтаФорма, ПараметрыОбработки.ДанныеОбъекта);

ТоварыНоменклатураПриИзмененииНаСервере(
ПараметрыОбработки.ДанныеСтрокиТаблицы, ПараметрыОбработки.ДанныеОбъекта);

ЗаполнитьЗначенияСвойств(ТекущиеДанные, ПараметрыОбработки.ДанныеСтрокиТаблицы);

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

&НаКлиенте
Процедура ТоварыНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени("ОткрытиеФормыВыбораНоменклатура");

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

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

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииКоличествоЦена(ЭтаФорма, "Товары");

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

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

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииКоличествоЦена(ЭтаФорма, "Товары");

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

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)

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

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

&НаКлиенте
Процедура ТоварыСчетУчетаПриИзменении(Элемент)

ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
СвойстваСчетаУчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(ТекущиеДанные.СчетУчета);
ТекущиеДанные.СчетУчетаЗабалансовый = СвойстваСчетаУчета.Забалансовый;

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

&НаКлиенте
Процедура ТоварыСчетДоходовПриИзменении(Элемент)

ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.СчетДоходовВедетсяУчетПоНоменклатурнымГруппам =
БухгалтерскийУчетВызовСервераПовтИсп.НаСчетеВедетсяУчетПоНоменклатурнымГруппам(ТекущиеДанные.СчетДоходов);

Если (НЕ ТекущиеДанные.СчетДоходовВедетсяУчетПоНоменклатурнымГруппам)
И БухгалтерскийУчетВызовСервераПовтИсп.НаСчетеВедетсяУчетПоПрочимДоходамИРасходам(ТекущиеДанные.СчетДоходов) Тогда

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

КонецЕсли;

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

&НаКлиенте
Процедура ТоварыНомерГТДНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

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

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

&НаКлиенте
Процедура ТоварыДокументОприходованияПриИзменении(Элемент)

РеализацияТоваровУслугФормыКлиент.ТоварыДокументОприходованияПриИзменении(ЭтаФорма, Элемент);

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

&НаКлиенте
Процедура ТоварыДокументОприходованияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

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

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

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ВозвратнаяТара

&НаКлиенте
Процедура ВозвратнаяТараПриИзменении(Элемент)

ОбновитьИтоги(ЭтаФорма);

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

&НаКлиенте
Процедура ВозвратнаяТараПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)

Если НоваяСтрока И ОтменаРедактирования Тогда
ОбновитьИтоги(ЭтаФорма);
КонецЕсли;

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

&НаКлиенте
Процедура ВозвратнаяТараНоменклатураПриИзменении(Элемент)

ТекущиеДанные = Элементы.ВозвратнаяТара.ТекущиеДанные;

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

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

ВозвратнаяТараНоменклатураПриИзмененииНаСервере(ДанныеСтрокиТаблицы, ДанныеОбъекта);

ЗаполнитьЗначенияСвойств(ТекущиеДанные, ДанныеСтрокиТаблицы);

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

&НаКлиенте
Процедура ВозвратнаяТараКоличествоПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииКоличествоЦена(ЭтаФорма, "ВозвратнаяТара");

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

&НаКлиенте
Процедура ВозвратнаяТараЦенаПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииКоличествоЦена(ЭтаФорма, "ВозвратнаяТара");

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

&НаКлиенте
Процедура ВозвратнаяТараСуммаПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииСумма(ЭтаФорма, "ВозвратнаяТара");

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

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ Услуги

&НаКлиенте
Процедура УслугиПриИзменении(Элемент)

ОбновитьИтоги(ЭтаФорма);

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

&НаКлиенте
Процедура УслугиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

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

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

&НаКлиенте
Процедура УслугиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)

Если НоваяСтрока И ОтменаРедактирования Тогда
ОбновитьИтоги(ЭтаФорма);
КонецЕсли;

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

&НаКлиенте
Процедура УслугиНоменклатураПриИзменении(Элемент)

ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;

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

// Дополнительные поля, требующиеся для заполнения добавленных колонок табличного поля текущей формы.
ПараметрыОбработки.ДанныеСтрокиТаблицы.Вставить("Всего", ТекущиеДанные.Всего);
ПараметрыОбработки.ДанныеСтрокиТаблицы.Вставить("СчетДоходовВедетсяУчетПоНоменклатурнымГруппам", ТекущиеДанные.СчетДоходовВедетсяУчетПоНоменклатурнымГруппам);

ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(ЭтаФорма, ПараметрыОбработки.ДанныеОбъекта);

УслугиНоменклатураПриИзмененииНаСервере(
ПараметрыОбработки.ДанныеСтрокиТаблицы, ПараметрыОбработки.ДанныеОбъекта);

ЗаполнитьЗначенияСвойств(ТекущиеДанные, ПараметрыОбработки.ДанныеСтрокиТаблицы);

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

&НаКлиенте
Процедура УслугиНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени("ОткрытиеФормыВыбораНоменклатура");

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

&НаКлиенте
Процедура УслугиКоличествоПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииКоличествоЦена(ЭтаФорма, "Услуги", 1);

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

&НаКлиенте
Процедура УслугиЦенаПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииКоличествоЦена(ЭтаФорма, "Услуги", 1);

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

&НаКлиенте
Процедура УслугиСуммаПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииСумма(ЭтаФорма, "Услуги", 1);

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

&НаКлиенте
Процедура УслугиСтавкаНДСПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииСтавкаНДС(ЭтаФорма, "Услуги");

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

&НаКлиенте
Процедура УслугиСуммаНДСПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииСуммаНДС(ЭтаФорма, "Услуги");

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

&НаКлиенте
Процедура УслугиСчетДоходовПриИзменении(Элемент)

СтрокаТаблицы = Элементы.Услуги.ТекущиеДанные;
СтрокаТаблицы.СчетДоходовВедетсяУчетПоНоменклатурнымГруппам =
БухгалтерскийУчетВызовСервераПовтИсп.НаСчетеВедетсяУчетПоНоменклатурнымГруппам(СтрокаТаблицы.СчетДоходов);

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

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ АгентскиеУслуги

&НаКлиенте
Процедура АгентскиеУслугиПриИзменении(Элемент)

ОбновитьИтоги(ЭтаФорма);

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

&НаКлиенте
Процедура АгентскиеУслугиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)

Если НоваяСтрока И ОтменаРедактирования Тогда
ОбновитьИтоги(ЭтаФорма);
КонецЕсли;

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

&НаКлиенте
Процедура АгентскиеУслугиНоменклатураПриИзменении(Элемент)

ТекущиеДанные = Элементы.АгентскиеУслуги.ТекущиеДанные;

ДанныеСтрокиТаблицы = Новый Структура("Номенклатура, Содержание, Количество,
|Цена, Сумма, СтавкаНДС, СуммаНДС,
|Всего");
ЗаполнитьЗначенияСвойств(ДанныеСтрокиТаблицы, ТекущиеДанные);

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

ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(ЭтаФорма, ДанныеОбъекта);

АгентскиеУслугиНоменклатураПриИзмененииНаСервере(ДанныеСтрокиТаблицы, ДанныеОбъекта);

ЗаполнитьЗначенияСвойств(ТекущиеДанные, ДанныеСтрокиТаблицы);

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

&НаКлиенте
Процедура АгентскиеУслугиНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени("ОткрытиеФормыВыбораНоменклатура");

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

&НаКлиенте
Процедура АгентскиеУслугиКоличествоПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииКоличествоЦена(ЭтаФорма, "АгентскиеУслуги", 1);

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

&НаКлиенте
Процедура АгентскиеУслугиЦенаПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииКоличествоЦена(ЭтаФорма, "АгентскиеУслуги", 1);

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

&НаКлиенте
Процедура АгентскиеУслугиСуммаПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииСумма(ЭтаФорма, "АгентскиеУслуги", 1);

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

&НаКлиенте
Процедура АгентскиеУслугиСтавкаНДСПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииСтавкаНДС(ЭтаФорма, "АгентскиеУслуги");

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

&НаКлиенте
Процедура АгентскиеУслугиСуммаНДСПриИзменении(Элемент)

ОбработкаТабличныхЧастейКлиентСервер.ПриИзмененииСуммаНДС(ЭтаФорма, "АгентскиеУслуги");

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

&НаКлиенте
Процедура АгентскиеУслугиКонтрагентПриИзменении(Элемент)

СтрокаТаблицы = Элементы.АгентскиеУслуги.ТекущиеДанные;

ДанныеСтрокаТаблицы = Новый Структура("Контрагент, ДоговорКонтрагента, СчетРасчетов");

ЗаполнитьЗначенияСвойств(ДанныеСтрокаТаблицы, СтрокаТаблицы);

ПараметрыОбъекта = Новый Структура("Организация, Дата, ПодразделениеОрганизации");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);

АгентскиеУслугиКонтрагентПриИзмененииНаСервере(ДанныеСтрокаТаблицы, ПараметрыОбъекта);

ЗаполнитьЗначенияСвойств(СтрокаТаблицы, ДанныеСтрокаТаблицы);

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

&НаКлиенте
Процедура АгентскиеУслугиДоговорКонтрагентаПриИзменении(Элемент)

СтрокаТаблицы = Элементы.АгентскиеУслуги.ТекущиеДанные;

ДанныеСтрокаТаблицы = Новый Структура("Контрагент, ДоговорКонтрагента, СчетРасчетов");

ЗаполнитьЗначенияСвойств(ДанныеСтрокаТаблицы, СтрокаТаблицы);

ПараметрыОбъекта = Новый Структура("Организация, Дата, ПодразделениеОрганизации");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);

АгентскиеУслугиДоговорКонтрагентаПриИзмененииНаСервере(ДанныеСтрокаТаблицы, ПараметрыОбъекта);

ЗаполнитьЗначенияСвойств(СтрокаТаблицы, ДанныеСтрокаТаблицы);

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


////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ЗачетАвансов

&НаКлиенте
Процедура ЗачетАвансовДокументАвансаПриИзменении(Элемент)

Строка = Элементы.ЗачетАвансов.ТекущиеДанные;
Строка.СуммаЗачета = 0;

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

&НаКлиенте
Процедура ЗачетАвансовДокументАвансаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ЗачетАвансов.ТекущиеДанные;

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

ПараметрыФормы = Новый Структура("ПараметрыОбъекта", ПараметрыОбъекта);
ОткрытьФорму("Документ.ДокументРасчетовСКонтрагентом.ФормаВыбора", ПараметрыФормы, Элемент);

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

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ КОМАНД ФОРМЫ

&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)

РеализацияТоваровУслугФормыКлиент.ПровестиИЗакрыть(ЭтаФорма, Команда);

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

&НаКлиенте
Процедура ДобавитьИзПоступления(Команда)

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

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

&НаКлиенте
Процедура ЗаполнитьПоПоступлению(Команда)

РеализацияТоваровУслугФормыКлиент.ОткрытьФормуВыбораПоступленияТоваровУслуг(ЭтаФорма, "Товары", "Заполнить");

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

&НаКлиенте
Процедура ДобавитьИзПоступленияТара(Команда)

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

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

&НаКлиенте
Процедура ЗаполнитьПоПоступлениюТара(Команда)

РеализацияТоваровУслугФормыКлиент.ОткрытьФормуВыбораПоступленияТоваровУслуг(ЭтаФорма, "ВозвратнаяТара", "Заполнить");

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

&НаКлиенте
Процедура ДобавитьИзПоступленияУслуги(Команда)

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

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

&НаКлиенте
Процедура ЗаполнитьПоПоступлениюУслуги(Команда)

РеализацияТоваровУслугФормыКлиент.ОткрытьФормуВыбораПоступленияТоваровУслуг(ЭтаФорма, "Услуги", "Заполнить");

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

&НаКлиенте
Процедура ЗаполнитьПоСчету(Команда)

ЗаполнитьТабличнуюЧастьПоСчету("Товары");

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

&НаКлиенте
Процедура ЗаполнитьПоСчетуТара(Команда)

ЗаполнитьТабличнуюЧастьПоСчету("ВозвратнаяТара");

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

&НаКлиенте
Процедура ЗаполнитьПоСчетуУслуги(Команда)

ЗаполнитьТабличнуюЧастьПоСчету("Услуги");

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

&НаКлиенте
Процедура ПодборТовары(Команда)

РеализацияТоваровУслугФормыКлиент.ПодборНоменклатуры(ЭтаФорма, "Товары", Команда);

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

&НаКлиенте
Процедура ПодборУслуги(Команда)

РеализацияТоваровУслугФормыКлиент.ПодборНоменклатуры(ЭтаФорма, "Услуги", Команда);

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

&НаКлиенте
Процедура ПодборВозвратнаяТара(Команда)

РеализацияТоваровУслугФормыКлиент.ПодборНоменклатуры(ЭтаФорма, "ВозвратнаяТара", Команда);

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

&НаКлиенте
Процедура ПеренестиВУслуги(Команда)

ТекущиеДанные = Элементы.АгентскиеУслуги.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ПоказатьПредупреждение( , НСтр("ru = 'Не выбрана строка.'"));
Возврат;
КонецЕсли;

НоваяСтрока = Объект.Услуги.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущиеДанные);
Объект.АгентскиеУслуги.Удалить(ТекущиеДанные);

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

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

ЗаполнитьСчетаУчетаУслуги(ДанныеСтрокиТаблицы, ДанныеОбъекта);
ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеСтрокиТаблицы);
КонецЕсли;

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

&НаКлиенте
Процедура ПеренестиВАгентскиеУслуги(Команда)

ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ПоказатьПредупреждение( , НСтр("ru = 'Не выбрана строка.'"));
Возврат;
КонецЕсли;

НоваяСтрока = Объект.АгентскиеУслуги.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущиеДанные);
Объект.Услуги.Удалить(ТекущиеДанные);

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

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

АдресХранилищаТовары = ПоместитьТоварыВоВременноеХранилищеНаСервере();

РеализацияТоваровУслугФормыКлиент.ИзменитьТовары(ЭтаФорма, Команда, АдресХранилищаТовары);

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

&НаКлиенте
Процедура ВыписатьСчетФактуру(Команда)

РеализацияТоваровУслугФормыКлиент.ВыписатьСчетФактуру(ЭтаФорма, Команда);
УправлениеФормой(ЭтаФорма);

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


////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ БСП

// СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки

&НаСервере
Процедура ДополнительныеОтчетыИОбработкиВыполнитьНазначаемуюКомандуНаСервере(ИмяЭлемента, РезультатВыполнения)

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

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьНазначаемуюКоманду(Команда)

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

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

// Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки

// СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)

УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект);

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

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

// Конец СтандартныеПодсистемы.Печать

////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС

&НаСервере
Процедура ЗаполнитьДобавленныеКолонкиТаблиц(ИмяТаблицы = "") Экспорт

ПараметрыОбъекта = Неопределено;
ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(ЭтаФорма, ПараметрыОбъекта);

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

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

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

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

&НаСервере
Процедура ОбновитьИтогиНаСервере() Экспорт

ОбновитьИтоги(ЭтаФорма);

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

&НаСервере
Процедура ПодготовитьФормуНаСервере() Экспорт

ТекущаяДатаДокумента          = Объект.Дата;
ДатыИзмененияОтветственныхЛиц = Новый ФиксированныйМассив(
ОтветственныеЛицаБППовтИсп.ДатыИзмененияОтветственныхЛицОрганизаций(Объект.Организация));

УстановитьФункциональныеОпцииФормы();

УстановитьСостояниеДокумента();

УстановитьТекстСостоянияЭДНаСервере();

ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();

ДоговорУказан = ЗначениеЗаполнено(Объект.ДоговорКонтрагента);
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ДоговорКонтрагента, "ВидДоговора, ВалютаВзаиморасчетов, РасчетыВУсловныхЕдиницах");

ЭтоКомиссия = ДоговорУказан И РеквизитыДоговора.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
ЭтоОтгрузка = Объект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности;

РасчетыВУЕ = ДоговорУказан и РеквизитыДоговора.РасчетыВУсловныхЕдиницах;

Если ДоговорУказан Тогда
ВалютаВзаиморасчетов = РеквизитыДоговора.ВалютаВзаиморасчетов;
Иначе

Если ЗначениеЗаполнено(Объект.Контрагент)
и НЕ ЗначениеЗаполнено(Объект.Ссылка)
и НЕ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
КонтрагентПриИзмененииНаСервере();
КонецЕсли;

КонецЕсли;

РеализацияТоваровУслугФормы.УстановитьПараметрыВыбора(ЭтаФорма);

ЗаполнитьДобавленныеКолонкиТаблиц();

РеализацияТоваровУслугФормы.ЗаполнитьСписокАдресовДоставки(ЭтаФорма, Объект.Контрагент, Объект.Грузополучатель);

РеализацияТоваровУслугФормы.ЗаполнитьСписокВыбораПатента(ЭтаФорма);

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

РеализацияТоваровУслугФормыКлиентСервер.ЗаполнитьТекстПроСчетФактуру(ЭтаФорма);

УправлениеФормой(ЭтаФорма);

РеализацияТоваровУслугФормы.УстановитьЗаголовокФормы(ЭтаФорма);

УстановитьВидЭД();

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

&НаСервере
Процедура УстановитьВидЭД()

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

Элементы.ВидЭД.СписокВыбора.Очистить();
Для Каждого ЭлементСписка Из ДоступныеЗначения Цикл
Элементы.ВидЭД.СписокВыбора.Добавить(ЭлементСписка.Значение, ЭлементСписка.Представление);
КонецЦикла;

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

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

&НаСервере
Процедура УстановитьСостояниеДокумента()

СостояниеДокумента = ОбщегоНазначенияБП.СостояниеДокумента(Объект);

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

&НаСервере
Функция ПолучитьМассивВидовДоговоров() Экспорт

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

Возврат СписокВидовДоговоров;

КонецФункции

&НаКлиенте
Процедура ПриИзмененииЦеныИВалюты(Знач ВалютаДоИзменения, КурсДоИзменения, КратностьДоИзменения, ПерезаполнитьЦены = Ложь, ПересчитатьЦены = Ложь, ПересчитатьНДС = Ложь) Экспорт

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

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

&НаСервере
Процедура УправлениеФормойНаСервере() Экспорт

УправлениеФормой(ЭтаФорма);

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

&НаСервере
Процедура УстановитьСпособЗачетаАвансов() Экспорт

// В текущей форме не используется, необходима для совместимости с другими формами документа.

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

&НаСервере
Процедура УстановитьФункциональныеОпцииФормы() Экспорт

ОбщегоНазначенияБПКлиентСервер.УстановитьПараметрыФункциональныхОпцийФормыДокумента(ЭтаФорма);

ПлательщикНДС = УчетнаяПолитика.ПлательщикНДС(Объект.Организация, Объект.Дата);
ПлательщикНДФЛ = УчетнаяПолитика.ПлательщикНДФЛ(Объект.Организация, Объект.Дата);
ПрименяетсяУСНПатент = УчетнаяПолитика.ПрименяетсяУСНПатент(Объект.Организация, Объект.Дата);
ПлательщикЕНВД = УчетнаяПолитика.ПлательщикЕНВД(Объект.Организация, Объект.Дата);
ПрименяетсяОсобыйПорядокНалогообложения
= УчетнаяПолитика.ПрименяетсяОсобыйПорядокНалогообложения(Объект.Организация, Объект.Дата);
ПрименяетсяТолькоУСНПатент = ПрименяетсяУСНПатент И НЕ ПлательщикЕНВД И ПрименяетсяОсобыйПорядокНалогообложения;

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

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

////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеФормой(Форма)

Элементы = Форма.Элементы;
Объект   = Форма.Объект;

ЭтоОборудование    = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРеализацияТоваров.Оборудование");
ЭтоПродажаКомиссия = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРеализацияТоваров.ПродажаКомиссия");

ПатентВидимость = Истина;
Если ЭтоПродажаКомиссия И Форма.ПрименяетсяТолькоУСНПатент Тогда
Элементы.ГруппаДеятельностьНаПатенте.ТекущаяСтраница = Элементы.ГруппаДекорацияДеятельностьНаПатенте;
ИначеЕсли ЭтоПродажаКомиссия И Форма.ПрименяетсяУСНПатент Тогда
Элементы.ГруппаДеятельностьНаПатенте.ТекущаяСтраница = Элементы.ГруппаВыборДеятельностиНаПатенте;
Иначе
Элементы.ГруппаДеятельностьНаПатенте.ТекущаяСтраница = Элементы.ГруппаДеятельностьНеНаПатенте;
ПатентВидимость = Ложь;
КонецЕсли;

Если Элементы.ГруппаПатент.Видимость <> ПатентВидимость Тогда
Элементы.ГруппаПатент.Видимость = ПатентВидимость;
КонецЕсли;

Элементы.Патент.Доступность = Объект.ДеятельностьНаПатенте ИЛИ Форма.ПрименяетсяТолькоУСНПатент;

Если ЭтоОборудование Тогда
Элементы.ГруппаТовары.Заголовок = "Оборудование";
Иначе
Элементы.ГруппаТовары.Заголовок = "Товары";
КонецЕсли;

Элементы.ГруппаАгентскиеУслуги.Видимость = НЕ (Форма.ЭтоКомиссия ИЛИ Форма.ЭтоОтгрузка);
Элементы.ГруппаУслуги.Видимость          = НЕ (Форма.ЭтоКомиссия ИЛИ Форма.ЭтоОтгрузка);

Элементы.СчетУчетаРасчетовПоАвансам.Доступность     = НЕ (Форма.ЭтоКомиссия ИЛИ Форма.ЭтоОтгрузка);
Элементы.СчетУчетаРасчетовСКонтрагентом.Доступность = НЕ (Форма.ЭтоКомиссия ИЛИ Форма.ЭтоОтгрузка);
Элементы.СпособЗачетаАвансов.Доступность            = НЕ (Форма.ЭтоКомиссия ИЛИ Форма.ЭтоОтгрузка);

ЗачетПоДокументу = НЕ (Форма.ЭтоКомиссия ИЛИ Форма.ЭтоОтгрузка)
И Объект.СпособЗачетаАвансов = ПредопределенноеЗначение("Перечисление.СпособыЗачетаАвансов.ПоДокументу");
Элементы.ГруппаДокументыЗачетаАванса.ТекущаяСтраница = ?(ЗачетПоДокументу, Элементы.ГруппаСписокДокументовЗачетаАванса, Элементы.ГруппаОписаниеДокументовЗачетаАванса);

// Доступность взаимосвязанных полей
Элементы.ДоговорКонтрагента.Доступность       = ЗначениеЗаполнено(Объект.Организация) И ЗначениеЗаполнено(Объект.Контрагент);
Элементы.ПодразделениеОрганизации.Доступность = ЗначениеЗаполнено(Объект.Организация);
Элементы.СпособЗачетаАвансов.Доступность      = ЗначениеЗаполнено(Объект.ДоговорКонтрагента) И НЕ (Форма.ЭтоКомиссия ИЛИ Форма.ЭтоОтгрузка);
КонтрагентДоставки = ?(ЗначениеЗаполнено(Объект.Грузополучатель), Объект.Грузополучатель, Объект.Контрагент);
Элементы.АдресДоставки.Доступность            = ЗначениеЗаполнено(КонтрагентДоставки);

// Счет-фактура
Если Форма.ТребуетсяСчетФактура И НЕ ЗначениеЗаполнено(Форма.СчетФактура) Тогда
Элементы.ГруппаСчетФактураСтраницы.ТекущаяСтраница = Элементы.ГруппаВыписатьСчетФактуру;
Иначе
Элементы.ГруппаСчетФактураСтраницы.ТекущаяСтраница = Элементы.ГруппаСчетФактураСсылка;
КонецЕсли;

Элементы.НадписьСчетФактура.Гиперссылка = Форма.ТребуетсяСчетФактура;

ОбновитьИтоги(Форма);
РеализацияТоваровУслугФормыКлиентСервер.СформироватьНадписьЦеныИВалюта(Форма);

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

&НаСервере
Процедура УстановитьЭлементыФормыПоВидуОперации()

// При создании формы сразу устанавливаем свойства элементов,
// которые зависят от вида операции и которые в дальнейшем менять не требуется.

ЭтоОборудование    = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРеализацияТоваров.Оборудование");

Если ЭтоОборудование Тогда
Элементы.ГруппаТовары.Заголовок = "Оборудование";
Иначе
Элементы.ГруппаТовары.Заголовок = "Товары";
КонецЕсли;

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

// Серверная обработка изменения реквизитов:

&НаСервере
Процедура ДатаПриИзмененииНаСервере()

РеализацияТоваровУслугФормы.ДатаПриИзменении(ЭтаФорма);

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

&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере()

РеализацияТоваровУслугФормы.ОрганизацияПриИзменении(ЭтаФорма);

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

&НаСервере
Процедура ДеятельностьНаПатентеПриИзмененииНаСервере()

РеализацияТоваровУслугФормыКлиентСервер.ДеятельностьНаПатентеПриИзменении(ЭтаФорма, Элементы.ДеятельностьНаПатенте);

РеализацияТоваровУслугФормы.УстановитьПараметрыВыбора(ЭтаФорма);

УправлениеФормой(ЭтаФорма);

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

&НаСервере
Процедура КонтрагентПриИзмененииНаСервере()

РеализацияТоваровУслугФормы.КонтрагентПриИзменении(ЭтаФорма);

ПолноеНаименованиеКонтрагента = ?(ЗначениеЗаполнено(Объект.Контрагент),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "НаименованиеПолное"), "");

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

&НаСервере
Процедура ДоговорКонтрагентаПриИзмененииНаСервере()

РеализацияТоваровУслугФормы.ДоговорКонтрагентаПриИзменении(ЭтаФорма);

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

&НаСервере
Процедура СкладПриИзмененииНаСервере()

РеализацияТоваровУслугФормы.СкладПриИзменении(ЭтаФорма);

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

&НаСервере
Процедура ГрузополучательПриИзмененииНаСервере()

ГрузополучательОбработатьИзменение();
УправлениеФормой(ЭтаФорма);

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

&НаСервере
Процедура ГрузополучательОбработатьИзменение()

РеализацияТоваровУслугФормы.ЗаполнитьСписокАдресовДоставки(ЭтаФорма, Объект.Контрагент, Объект.Грузополучатель);
Если Элементы.АдресДоставки.СписокВыбора.Количество() > 0 Тогда
Объект.АдресДоставки = Элементы.АдресДоставки.СписокВыбора[0].Значение;
Иначе
Объект.АдресДоставки = "";
КонецЕсли;

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

&НаСервере
Процедура ОтветственныйПриИзмененииНаСервере()

ОтветственныеЛицаБП.УстановитьОтветственныхЛиц(Объект);

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

// Пересчеты реквизитов в строках табличных частей

&НаСервереБезКонтекста
Процедура ТоварыНоменклатураПриИзмененииНаСервере(СтрокаТабличнойЧасти, Знач ДанныеОбъекта)

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

ЗаполнитьДобавленныеКолонкиСтрокиТаблицыТовары(СтрокаТабличнойЧасти, ДанныеОбъекта);

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

&НаСервереБезКонтекста
Процедура ВозвратнаяТараНоменклатураПриИзмененииНаСервере(СтрокаТабличнойЧасти, Знач ДанныеОбъекта)

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

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

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

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

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

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

&НаСервереБезКонтекста
Процедура УслугиНоменклатураПриИзмененииНаСервере(СтрокаТабличнойЧасти, Знач ДанныеОбъекта)

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

ЗаполнитьДобавленныеКолонкиСтрокиТаблицыУслуги(СтрокаТабличнойЧасти, ДанныеОбъекта);

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

&НаСервереБезКонтекста
Процедура АгентскиеУслугиНоменклатураПриИзмененииНаСервере(СтрокаТаблицы, Знач ДанныеОбъекта)

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

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

СтрокаТаблицы.Содержание = СведенияОНоменклатуре.НаименованиеПолное;
СтрокаТаблицы.Цена = СведенияОНоменклатуре.Цена;
СтрокаТаблицы.СтавкаНДС = СведенияОНоменклатуре.СтавкаНДС;

Если СтрокаТаблицы.Количество = 0 Тогда
СтрокаТаблицы.Количество = 1;
КонецЕсли;

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

ЗаполнитьДобавленныеКолонкиСтрокиТаблицыАгентскиеУслуги(СтрокаТаблицы, ДанныеОбъекта);

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

&НаСервереБезКонтекста
Процедура АгентскиеУслугиКонтрагентПриИзмененииНаСервере(СтрокаТаблицы, Знач ПараметрыОбъекта)

МассивВидовАгентскихДоговоров = Новый Массив;
МассивВидовАгентскихДоговоров.Добавить(Перечисления.ВидыДоговоровКонтрагентов.СКомитентом);

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

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

&НаСервереБезКонтекста
Процедура АгентскиеУслугиДоговорКонтрагентаПриИзмененииНаСервере(СтрокаТаблицы, Объект)

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьИтоги(Форма)

Объект = Форма.Объект;

Форма.ИтогиВсего    = Объект.Товары.Итог("Всего");
Форма.ИтогиВсегоНДС = Объект.Товары.Итог("СуммаНДС");

Если НЕ Форма.ЭтоОтгрузка Тогда
Форма.ИтогиВсего = Форма.ИтогиВсего
+ Объект.Услуги.Итог("Всего")
+ Объект.АгентскиеУслуги.Итог("Всего");
Форма.ИтогиВсегоНДС = Форма.ИтогиВсегоНДС
+ Объект.Услуги.Итог("СуммаНДС")
+ Объект.АгентскиеУслуги.Итог("СуммаНДС");
КонецЕсли;

Форма.ЕстьСтрокиВозвратнойТары   = Объект.ВозвратнаяТара.Количество() > 0;
Форма.ОтметкаНезаполненногоСклад = Форма.ЕстьСтрокиВозвратнойТары ИЛИ Объект.Товары.Количество() > 0;

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

// Прочий функционал:

&НаСервере
Процедура УстановитьТекстСостоянияЭДНаСервере()

ТекстСостоянияЭД = ЭлектронныеДокументыКлиентСервер.ПолучитьТекстСостоянияЭД(Объект.Ссылка, ЭтаФорма);

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

&НаСервере
Процедура ЗаполнитьТЧПоСчетуНаОплату()

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

Результат = Запрос.Выполнить().Выбрать();

Объект.Товары.Очистить();
Объект.ВозвратнаяТара.Очистить();
Объект.Услуги.Очистить();

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

РеализацияТоваровУслугФормы.ЗаполнитьСчетаУчетаВТабличнойЧасти(ЭтаФорма);

ОбновитьИтоги(ЭтаФорма);

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

&НаСервере
Функция СписокВидимыхТабличныхЧастей()

СписокТЧ = Новый СписокЗначений;

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

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

КонецФункции

&НаСервереБезКонтекста
Процедура ЗаполнитьДобавленныеКолонкиСтрокиТаблицыТовары(СтрокаТаблицы, Знач ПараметрыОбъекта)

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

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

&НаСервереБезКонтекста
Процедура ЗаполнитьДобавленныеКолонкиСтрокиТаблицыУслуги(СтрокаТаблицы, Знач ПараметрыОбъекта)

СтрокаТаблицы.Всего = СтрокаТаблицы.Сумма + ?(ПараметрыОбъекта.СуммаВключаетНДС, 0, СтрокаТаблицы.СуммаНДС);

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

&НаСервереБезКонтекста
Процедура ЗаполнитьДобавленныеКолонкиСтрокиТаблицыАгентскиеУслуги(СтрокаТаблицы, Знач ПараметрыОбъекта)

СтрокаТаблицы.Всего = СтрокаТаблицы.Сумма + ?(ПараметрыОбъекта.СуммаВключаетНДС, 0, СтрокаТаблицы.СуммаНДС);

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

&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПараметрыОбъектаДляЗаполненияДобавленныхКолонок(Знач Форма, ПараметрыОбъекта)

Объект = Форма.Объект;

Если ТипЗнч(ПараметрыОбъекта) <> Тип("Структура") Тогда
ПараметрыОбъекта = Новый Структура;
КонецЕсли;

ПараметрыОбъекта.Вставить("СуммаВключаетНДС", Объект.СуммаВключаетНДС);

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

&НаСервере
Процедура ПриИзмененииЦеныИВалютыНаСервере(Знач ВалютаДоИзменения, КурсДоИзменения, КратностьДоИзменения, ПерезаполнитьЦены = Ложь, ПересчитатьЦены = Ложь, ПересчитатьНДС = Ложь)

РеализацияТоваровУслугФормы.ЗаполнитьРассчитатьСуммы(
ЭтаФорма,
ВалютаДоИзменения,
КурсДоИзменения,
КратностьДоИзменения,
ПерезаполнитьЦены,
ПересчитатьЦены,
ПересчитатьНДС);

ОбновитьИтоги(ЭтаФорма);
УправлениеФормой(ЭтаФорма);

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

&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТаблицы)

РеализацияТоваровУслугФормы.ОбработкаВыбораПодбор(ЭтаФорма, ВыбранноеЗначение, ИмяТаблицы);

ЗаполнитьДобавленныеКолонкиТаблиц(ИмяТаблицы);

ОбновитьИтоги(ЭтаФорма);

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

&НаСервереБезКонтекста
Процедура ЗаполнитьСчетаУчетаУслуги(СтрокаТабличнойЧасти, Знач ДанныеОбъекта)

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

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

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

&НаКлиенте
Процедура ЗаполнитьТабличнуюЧастьПоСчету(ТабличнаяЧасть)

Если Объект[ТабличнаяЧасть].Количество() > 0 Тогда
ТекстВопроса = НСтр("ru = 'Перед заполнением табличная часть будет очищена. Заполнить?'");
Оповещение = Новый ОписаниеОповещения("ВопросПередЗаполнениемТабличнойЧастиЗавершение", ЭтотОбъект, ТабличнаяЧасть);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да);
Иначе
ОткрытьФормуВыбораСчетаНаОплату(ТабличнаяЧасть);
КонецЕсли;

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

&НаКлиенте
Процедура ОткрытьФормуВыбораСчетаНаОплату(ТабличнаяЧасть)

СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Организация", Объект.Организация);
СтруктураОтбора.Вставить("Проведен", Истина);

СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Отбор",              СтруктураОтбора);
СтруктураПараметров.Вставить("РежимВыбора",        Истина);
СтруктураПараметров.Вставить("МножественныйВыбор", Ложь);
СтруктураПараметров.Вставить("ИмяТаблицы",         ТабличнаяЧасть);

ОткрытьФорму("Документ.СчетНаОплатуПокупателю.ФормаВыбора", СтруктураПараметров, ЭтаФорма);

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

&НаКлиенте
Процедура ВопросПередЗаполнениемТабличнойЧастиЗавершение(Результат, ТабличнаяЧасть) Экспорт

Если Результат = КодВозвратаДиалога.Да Тогда
Объект[ТабличнаяЧасть].Очистить();
ОткрытьФормуВыбораСчетаНаОплату(ТабличнаяЧасть);
КонецЕсли;

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

&НаСервере
Процедура ОбработкаЗаполненияТабличнойЧастиНаСервере(ВыбранноеЗначение, ТабличнаяЧасть)

Если Объект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Оборудование
И ТабличнаяЧасть = "Товары" Тогда
ТабличнаяЧастьИсточника = "Оборудование";
Иначе
ТабличнаяЧастьИсточника = ТабличнаяЧасть;
КонецЕсли;

ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.ЗаполнитьПоПоступлению(ТабличнаяЧасть, "Добавить", ВыбранноеЗначение);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");

ЗаполнитьДобавленныеКолонкиТаблиц();

ОбновитьИтоги(ЭтаФорма);

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

&НаСервере
Процедура ОбработкаЗаполненияПоСчетуТабличнойЧастиНаСервере(ВыбранноеЗначение, ТабличнаяЧасть)

ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.ЗаполнитьПоСчету(ТабличнаяЧасть, ВыбранноеЗначение);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");

ЗаполнитьДобавленныеКолонкиТаблиц();

ОбновитьИтоги(ЭтаФорма);

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

&НаСервере
Функция ПоместитьТоварыВоВременноеХранилищеНаСервере()

Возврат ПоместитьВоВременноеХранилище(Объект.Товары.Выгрузить(), УникальныйИдентификатор);

КонецФункции

&НаСервере
Процедура ОбработкаОповещенияОбработкиТабличнойЧастиТоварыНаСервере(Параметры)

РеализацияТоваровУслугФормы.ОбработкаОповещенияОбработкиТабличнойЧастиТовары(ЭтаФорма, Параметры);

ЗаполнитьДобавленныеКолонкиТаблиц();

ОбновитьИтоги(ЭтаФорма);

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

&НаКлиенте
Процедура Подключаемый_НажатиеНаИнформационнуюСсылку(Элемент)

ИнформационныйЦентрКлиент.НажатиеНаИнформационнуюСсылку(ЭтаФорма, Элемент);

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

&НаКлиенте
Процедура Подключаемый_НажатиеНаСсылкуВсеИнформационныеСсылки(Элемент)

ИнформационныйЦентрКлиент.НажатиеНаСсылкуВсеИнформационныеСсылки(ЭтаФорма.ИмяФормы);

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

&НаСервереБезКонтекста
Функция ПолучитьСписокКонтактныхЛиц(Знач Контрагент)

Возврат РеализацияТоваровУслугФормы.СписокКонтактныхЛиц(Контрагент);

КонецФункции

&НаКлиенте
Процедура ПоказатьПредупреждениеОбИзменениях_УПД()

ОбщегоНазначенияБПКлиент.ПоказатьПредупреждениеОбИзменениях("УниверсальныеПередаточныйДокумент", , НастройкиПредупреждений);

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

&НаКлиенте
Процедура ВыборИзСпискаДоверенностьВыданаЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт

Если РезультатВыбора <> Неопределено Тогда
Объект.ДоверенностьВыдана = РезультатВыбора.Значение;
Модифицированность = Истина;
КонецЕсли;

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

&НаКлиенте
Процедура ВыборИзСпискаДоверенностьЧерезКогоЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт

Если РезультатВыбора <> Неопределено Тогда
Объект.ДоверенностьЧерезКого = РезультатВыбора.Значение;
Модифицированность = Истина;
КонецЕсли;

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

&НаКлиенте
Процедура ВопросЗаполнитьДокументПоСчетуЗавершение(Результат, ДополнительныеПараметры) Экспорт

Если Результат = КодВозвратаДиалога.Да Тогда
ЗаполнитьТЧПоСчетуНаОплату();
КонецЕсли;

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

&НаКлиенте
Процедура УведомитьОбИзмененияхПравилПереоценкиЗадолженностейВУЕ()

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

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

Добавлено: 23 авг 2014, 13:33


Вопрос еще актуален, помогите плиз

Теги:

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

Рейтинг@Mail.ru

Поиск