#Область ОписаниеПеременных
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем КэшированныеЗначения;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ИспользоватьКомиссиюПриПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах");
ИспользоватьПродажуАгентскихУслуг = ПолучитьФункциональнуюОпцию("ИспользоватьПродажуАгентскихУслуг");
УчетНДСУПСлужебный.НастроитьСовместныйВыборКонтрагентовОрганизаций(Элементы.Контрагент);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если Отказ Тогда
Возврат;
КонецЕсли;
ТекстСообщения = НСтр("ru = 'Поле ""Дата выставления"" не заполнено'");
Если Выставлен И НЕ ЗначениеЗаполнено(Объект.ДатаВыставления) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,,"ДатаВыставления","Объект",Отказ);
ИначеЕсли НЕ Выставлен Тогда
Объект.ДатаВыставления = '00010101';
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбновитьИнформациюПоСчетуФактуреОснованию();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИсправленииПриИзменении(Элемент)
ДатаПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования,
ЭтотОбъект,
"Объект.Комментарий");
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДокументОснованиеПриИзменении(Элемент)
УправлениеДоступностью(ЭтотОбъект, Выставлен);
Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
ДанныеОснования = ПолучитьДанныеОснованияНаСервере(Объект.ДокументОснование);
Оповещение = Новый ОписаниеОповещения("ДокументОснованиеПриИзмененииЗавершение", ЭтотОбъект, Новый Структура("ДанныеОснования", ДанныеОснования));
ПоказатьВопрос(Оповещение, НСтр("ru='Перезаполнить данные о платежно-расчетном документе?'"), РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыставленПриИзменении(Элемент)
Модифицированность = Истина;
УправлениеДоступностью(ЭтотОбъект, Выставлен);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ИсправлениеПриИзменении(Элемент)
Если Не Объект.Исправление Тогда
Объект.Номер = "";
Объект.НомерИсправления = "";
ОчиститьДокументыОснования();
Иначе
ОбновитьИнформациюПоСчетуФактуреОснованию();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТекстСчетФактураОснованиеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
Если НавигационнаяСсылка = "ОткрытьИсходныеСчетаФактуры" Тогда
СтандартнаяОбработка = Ложь;
ОткрытьСчетФактуруОснование();
ИначеЕсли НавигационнаяСсылка = "ВыборСчетаФактурыОснования" Тогда
СтандартнаяОбработка = Ложь;
ВыборСчетаФактуры();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыАвансы
&НаКлиенте
Процедура АвансыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Авансы.ТекущиеДанные;
СтруктураПересчетаСуммы = ПересчетСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура АвансыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Авансы.ТекущиеДанные;
СтруктураПересчетаСуммы = ПересчетСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура АвансыПриАктивизацииЯчейки(Элемент)
ТекущиеДанные = Элементы.Авансы.ТекущиеДанные;
Если Элемент.ТекущийЭлемент = Неопределено ИЛИ ТекущиеДанные = Неопределено Тогда
Возврат;
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "АвансыТипЗапасов" Тогда
СписокВыбора = СписокВыбораТипаЗапасов(ТекущиеДанные.Номенклатура);
Элементы.АвансыТипЗапасов.СписокВыбора.ЗагрузитьЗначения(СписокВыбора.ВыгрузитьЗначения());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура АвансыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Авансы.ТекущиеДанные;
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
СписокВыбора = СписокВыбораТипаЗапасов(ТекущаяСтрока.Номенклатура);
Если СписокВыбора.НайтиПоЗначению(ТекущаяСтрока.ТипЗапасов) = Неопределено Тогда
ТекущаяСтрока.ТипЗапасов = СписокВыбора[0].Значение;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоЗаказуКлиента(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("РаспределитьАвансыПоТоварам", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПлатежныйДокумент", Объект.ДокументОснование);
ОткрытьФорму("Документ.СчетФактураВыданныйАванс.Форма.ФормаВыбораТоваровПоЗаказамКлиентов",
ПараметрыФормы, , , , , ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтотОбъект, "АвансыСтавкаНДС", "АвансыСуммаНДС", "АвансыСуммаНДС");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПлатежноРасчетногоДокумента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НомерПлатежноРасчетногоДокумента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.НомерПлатежноРасчетногоДокумента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПлатежноРасчетногоДокумента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.НомерИсправления.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Ссылка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект, "АвансыХарактеристика", "Объект.Авансы.ХарактеристикиИспользуются");
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
#Область Прочее
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
Выставлен = ЗначениеЗаполнено(Объект.ДатаВыставления);
УправлениеДоступностью(ЭтотОбъект, Выставлен);
ПоСчетуФактуре = Объект.Исправление;
ЕстьПравоНаРедактирование = ПравоДоступа("Изменение", Метаданные.Документы.СчетФактураВыданныйАванс);
ОбновитьИнформациюПоСчетуФактуреОснованию();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеДоступностью(Форма, Выставлен)
Объект = Форма.Объект;
Элементы = Форма.Элементы;
ЭтоНовый = НЕ ЗначениеЗаполнено(Объект.Ссылка);
ТипОснования = ТипЗнч(Объект.ДокументОснование);
ТолькоПросмотрПоляКонтрагент = (Форма.Выставлен И НЕ ЭтоНовый)
Или Не (ТипОснования = Тип("ДокументСсылка.ВводОстатков")
Или ТипОснования = Тип("ДокументСсылка.ВводОстатковВзаиморасчетов")
Или ТипОснования = Тип("ДокументСсылка.ВзаимозачетЗадолженности")
Или ТипОснования = Тип("ДокументСсылка.СчетФактураПолученныйАванс"));
ТолькоПросмотрПоляИНН = (Форма.Выставлен И НЕ ЭтоНовый)
Или Не ЗначениеЗаполнено(Форма.Объект.Контрагент)
Или ТипЗнч(Форма.Объект.Контрагент) <> Тип("СправочникСсылка.Контрагенты");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Контрагент", "ТолькоПросмотр", ТолькоПросмотрПоляКонтрагент);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИННКонтрагента", "ТолькоПросмотр", ТолькоПросмотрПоляИНН);
Элементы.ГруппаРеквизитыИсправления.Видимость = Объект.Исправление;
Элементы.ГруппаНомерДатаПриИсправлении.Видимость = Объект.Исправление;
Элементы.ГруппаНомерДата.Видимость = Не Объект.Исправление;
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("Номер");
МассивИменЭлементов.Добавить("Дата");
МассивИменЭлементов.Добавить("Организация");
МассивИменЭлементов.Добавить("ДокументОснование");
МассивИменЭлементов.Добавить("КодВидаОперации");
МассивИменЭлементов.Добавить("Исправление");
МассивИменЭлементов.Добавить("Корректировочный");
МассивИменЭлементов.Добавить("ДатаПлатежноРасчетногоДокумента");
МассивИменЭлементов.Добавить("НомерПлатежноРасчетногоДокумента");
МассивИменЭлементов.Добавить("ПравилоОтбораАванса");
МассивИменЭлементов.Добавить("Авансы");
МассивИменЭлементов.Добавить("АвансыИтогСумма");
МассивИменЭлементов.Добавить("АвансыИтогСуммаНДС");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "ТолькоПросмотр", Форма.Выставлен И НЕ ЭтоНовый);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ВыставленВЭлектронномВиде", "Доступность", Форма.Выставлен);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДатаВыставления", "Доступность", Форма.Выставлен);
Элементы.ДатаВыставления.АвтоОтметкаНезаполненного = Выставлен;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьДанныеОснованияНаСервере(ДокументОснование)
ДанныеОснования = Документы.СчетФактураВыданныйАванс.ВходящийНомерИДатаДокумента(ДокументОснование);
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ВозвратТоваровМеждуОрганизациями") Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументОснование, "Контрагент,РасчетыЧерезОтдельногоКонтрагента,Организация");
Если ЗначенияРеквизитов.РасчетыЧерезОтдельногоКонтрагента Тогда
Контрагент = ЗначенияРеквизитов.Контрагент;
Иначе
Контрагент = ЗначенияРеквизитов.Организация;
КонецЕсли;
ДанныеОснования.Вставить("Контрагент", Контрагент);
ИначеЕсли ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ВводОстатков")
И ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ВводОстатковВзаиморасчетов")
И ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ВзаимозачетЗадолженности") Тогда
ДанныеОснования.Вставить("Контрагент", ДоходыИРасходыСервер.ПолучитьКонтрагентаИзОснования(ДокументОснование));
КонецЕсли;
Возврат ДанныеОснования;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПересчетСуммыНДСВСтрокеТЧ(Объект)
СтруктураЗаполненияЦены = Новый Структура;
СтруктураЗаполненияЦены.Вставить("ЦенаВключаетНДС", Истина);
СтруктураЗаполненияЦены.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
Возврат СтруктураЗаполненияЦены;
КонецФункции
#КонецОбласти
&НаКлиенте
Процедура ДатаПриИзмененииКлиент()
ДатаПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСчетФактуруОснование()
ПоказатьЗначение(, Объект.СчетФактураОснование);
КонецПроцедуры
&НаКлиенте
Процедура ВыборСчетаФактуры(ВыборОснования = Истина, МассивСтрок = Неопределено)
СтруктураПараметров = Новый Структура;
ЗначениеОтбора = Новый Структура;
ЗначениеОтбора.Вставить("ПометкаУдаления", Ложь);
ЗначениеОтбора.Вставить("Проведен", Истина);
Если ВыборОснования Тогда
ЗначениеОтбора.Вставить("Исправление", Ложь);
Иначе
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗначениеОтбора.Вставить("Контрагент", Объект.Контрагент)
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ЗначениеОтбора.Вставить("ИсключитьСчетФактуру", Объект.Ссылка);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗначениеОтбора.Вставить("Организация", Объект.Организация)
КонецЕсли;
СтруктураПараметров.Вставить("Отбор", ЗначениеОтбора);
ДополнительныеПараметры = Новый Структура("ВыборОснования,МассивСтрок", ВыборОснования, МассивСтрок);
Оповещение = Новый ОписаниеОповещения("ВыборСчетаФактурыЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму(
"Документ.СчетФактураВыданныйАванс.ФормаВыбора",
СтруктураПараметров,
ЭтотОбъект, , , ,
Оповещение,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыборСчетаФактурыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Модифицированность = Истина;
Если ДополнительныеПараметры.ВыборОснования Тогда
Объект.СчетФактураОснование = Результат;
ЗаполнитьНаОснованииСчетаФактуры();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОчиститьДокументыОснования()
Объект.СчетФактураОснование = Неопределено;
ОбновитьИнформациюПоСчетуФактуреОснованию();
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоСчетуФактуреОснованию()
МассивСтрок = Новый Массив;
РазрешеноИзменение = ЕстьПравоНаРедактирование
И Не (ЗначениеЗаполнено(Объект.Ссылка) И Выставлен);
Если Объект.Исправление И ЗначениеЗаполнено(Объект.СчетФактураОснование) Тогда
РеквизитыСФ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.СчетФактураОснование, "Номер, Дата");
СчетФактураОснованиеПредставление = Документы.СчетФактураВыданныйАванс.ПредставлениеСчетаФактуры(РеквизитыСФ.Номер, РеквизитыСФ.Дата);
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(
СчетФактураОснованиеПредставление, ,
ЦветаСтиля.ГиперссылкаЦвет, ,
ПолучитьНавигационнуюСсылку(Объект.СчетФактураОснование)));
КонецЕсли;
Если РазрешеноИзменение И Объект.Исправление Тогда
Если ЗначениеЗаполнено(Объект.СчетФактураОснование) Тогда
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(
НСтр("ru = 'Изменить'"), ,
ЦветаСтиля.ГиперссылкаЦвет, ,
"ВыборСчетаФактурыОснования"));
Иначе
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(
НСтр("ru = 'Не выбран счет-фактура'"), ,
WebЦвета.Кирпичный, ,
"ВыборСчетаФактурыОснования"));
КонецЕсли;
КонецЕсли;
ТекстСчетФактураОснование = Новый ФорматированнаяСтрока(МассивСтрок)
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаОснованииСчетаФактуры()
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.ЗаполнитьИсправлениеПоСчетуФактуре();
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
ОбновитьИнформациюПоСчетуФактуреОснованию();
УправлениеДоступностью(ЭтотОбъект, Выставлен);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииНаСервере()
ОчиститьДокументыОснования();
УправлениеДоступностью(ЭтотОбъект, Выставлен);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Авансы,ПараметрыЗаполненияРеквизитов);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтотОбъект, "Авансы");
КонецПроцедуры
&НаСервере
Функция СписокВыбораТипаЗапасов(Номенклатура)
ТипыЗапасов = Новый СписокЗначений();
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.СчетФактураПолученныйАванс") Тогда
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.ТоварНаХраненииСПравомПродажи);
Возврат ТипыЗапасов;
КонецЕсли;
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.Товар);
Если ИспользоватьКомиссиюПриПродажах Тогда
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.КомиссионныйТовар);
КонецЕсли;
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.Услуга);
Если ИспользоватьПродажуАгентскихУслуг Тогда
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.АгентскаяУслуга);
КонецЕсли;
Возврат ТипыЗапасов;
КонецЕсли;
Реквизиты = Новый Структура();
Реквизиты.Вставить("ТипНоменклатуры", "ТипНоменклатуры");
Реквизиты.Вставить("ОсобенностьУчета", "ОсобенностьУчета");
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, Реквизиты);
Если ЗначенияРеквизитов.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга Тогда
Если ИспользоватьПродажуАгентскихУслуг
И (ЗначенияРеквизитов.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.ОрганизациейПоАгентскойСхеме
ИЛИ ЗначенияРеквизитов.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.Партнером) Тогда
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.АгентскаяУслуга);
Иначе
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.Услуга);
КонецЕсли;
ИначеЕсли ЗначенияРеквизитов.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа Тогда
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.Услуга);
Иначе
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.Товар);
Если ИспользоватьКомиссиюПриПродажах Тогда
ТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.КомиссионныйТовар);
КонецЕсли;
КонецЕсли;
Возврат ТипыЗапасов;
КонецФункции
&НаКлиенте
Процедура РаспределитьАвансыПоТоварам(АдресВоВременномХранилище, ДополнительныеПараметры) Экспорт
Если АдресВоВременномХранилище = Неопределено Тогда
Возврат;
КонецЕсли;
РаспределитьАвансыПоТоварамНаСервере(АдресВоВременномХранилище);
КонецПроцедуры
&НаСервере
Процедура РаспределитьАвансыПоТоварамНаСервере(АдресВоВременномХранилище)
Товары = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Авансы = Объект.Авансы.Выгрузить();
Документы.СчетФактураВыданныйАванс.РаспределитьАвансыПоТоварам(Авансы, Товары, Объект.ДокументОснование);
Объект.Авансы.Загрузить(Авансы);
Для Каждого СтрокаАвансов Из Объект.Авансы Цикл
СтрокаАвансов.ИндексНабора = ?(ЗначениеЗаполнено(СтрокаАвансов.НоменклатураНабора), 1, 0);
КонецЦикла;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
КонецПроцедуры
&НаКлиенте
Процедура ДокументОснованиеПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ДанныеОснования = ДополнительныеПараметры.ДанныеОснования;
Ответ = РезультатВопроса;
Если Ответ <> КодВозвратаДиалога.Да Тогда
ИсключаяСвойства = "НомерПлатежноРасчетногоДокумента,ДатаПлатежноРасчетногоДокумента";
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, ДанныеОснования,, ИсключаяСвойства);
КонецПроцедуры
#КонецОбласти