#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ПредыдущиеРеквизитыСтрокиТЧТовары;
&НаКлиенте
Перем ПредыдущиеРеквизитыСтрокиТЧРасхождения;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ПараметрыДляВыбора = ПараметрыДляВыбораСтатейИАналитик();
ПараметрыВыбораСтатейИАналитик = Документы.КорректировкаРеализации.ПараметрыВыбораСтатейИАналитик(ПараметрыДляВыбора);
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Расхождения);
КонецЕсли;
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
УстановитьДоступностьКомандБуфераОбмена();
УстановитьЗаголовокРеквизитовПечати();
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор");
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
ФормированиеФискальныхЧековСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
Элементы.ТоварыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
ЭтоКорректировкаОтчетаДавальцу = Ложь;
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД")
И Не ЭтоКорректировкаОтчетаДавальцу;
ЭлектронноеАктированиеЕИСУТ.УстановкаВидимостиГруппыГосконтракта(ЭтотОбъект);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УстановитьСвязьПараметровВыбораДляЕдиницИзмерений();
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ПриЧтенииСозданииНаСервере();
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриЧтенииНаСервере(ЭтотОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
ИспользуютсяРасхождения =
(Объект.ВидКорректировки <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно")
И Объект.ВидКорректировки <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно"));
Если ИспользуютсяРасхождения И НЕ РасхожденияАктуальны Тогда
Если Объект.ВидКорректировки = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияПерепоставленногоТовара")
ИЛИ Объект.ВидКорректировки = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара") Тогда
ЗаполнитьРасхожденияСервер();
Иначе
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить(КодВозвратаДиалога.Да, Нстр("ru='Перезаполнить'"));
СписокКнопок.Добавить(КодВозвратаДиалога.Отмена,Нстр("ru='Отмена'"));
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
ПоказатьВопрос(
Новый ОписаниеОповещения("ПередЗаписьюВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
НСтр("ru='Табличная часть ""Товары"" была изменена. Перезаполнить расхождения?'"),
СписокКнопок, , КодВозвратаДиалога.Да);
Возврат;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЭлектронноеАктированиеЕИСУТ.ПередЗаписьюНаСервереДокумент(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбновитьСлужебныеРеквизитыТабличныхЧастей();
УстановитьПредставлениеСебестоимости();
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
ОбновитьТекстДокументыНаОсновании();
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
ЭлектронноеАктированиеЕИС.ЗаполнитьПараметрыАктированияДокументаПоУмолчанию(Объект.Организация, Объект.Ссылка);
СобытияФорм.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
УчетПодакцизныхТоваров.ОбновитьЭлементыУчетаПодакцизныхТоваров(ЭтотОбъект, Ложь, ДатаОснования);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ИмяСобытия = "Закрытие_РедактированиеКомплекта"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПриОкончанииРедактированияНабора(Параметр.АдресВоВременномХранилище);
КонецЕсли;
Если ИмяСобытия = "РедактироватьНабор"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабора());
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Истина);
Иначе
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
КонецЕсли;
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
Если ИмяСобытия = "Запись_СчетФактураВыданный"
И (Параметр.Свойство("ФормаВладелец") И Параметр.ФормаВладелец = УникальныйИдентификатор
Или Параметр.Свойство("СписокОснований") И Параметр.СписокОснований.НайтиПоЗначению(Объект.Ссылка) <> Неопределено) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если ИмяСобытия = "ОбновитьСостояниеЭД" Тогда
ОбновитьТекстСчетаФактурыВыданные();
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
ОбработкаОповещенияЛокализация(ИмяСобытия, Параметр, Источник);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Документ.КорректировкаРеализации.Форма.ФормаПодбораТоваровИзЗаказа" Тогда
ОбработкаПодбораТоваровИзЗаказа(ВыбранноеЗначение.АдресТоваровВХранилище);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыВыданного(ВыбранноеЗначение, ИсточникВыбора) Тогда
ОбновитьТекстДокументыНаОсновании();
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(ВыбранноеЗначение, ИсточникВыбора) Тогда
ОбновитьТекстДокументыНаОсновании();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Документ.КорректировкаРеализации.Форма.ФормаПодбораДокументовРеализации" Тогда
ДобавитьДокументРеализацииВТаблицуКорректировкаЗадолженности(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Документ.КорректировкаРеализации.Форма.ФормаПодбораИсправляемогоДокумента" Тогда
ОбработкаПодбораИсправляемогоДокумента(ВыбранноеЗначение);
ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
ИЛИ ТипЗнч(ВыбранноеЗначение) = Тип("ДокументСсылка.АктВыполненныхРабот")
ИЛИ ТипЗнч(ВыбранноеЗначение) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов")
Тогда
ОбработкаВыбораДокументаОснованияСервер(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.РеквизитыПечатиРеализации" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.СтруктураПредприятия.Форма.ФормаВыбора" Тогда
ПродажиКлиент.ОбработкаВыбораПодразделения(Объект.Товары, Элементы.Товары.ВыделенныеСтроки, ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект,
ПараметрыУказанияСерий[ВыбранноеЗначение.ИмяТЧ],
ВыбранноеЗначение);
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("ДокументОснование", Объект.ДокументОснование);
Оповестить("Запись_КорректировкаРеализации", ПараметрыЗаписи, Объект.Ссылка);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтаФорма, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
СобытияФормКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПредыдущиеРеквизитыСтрокиТЧРасхождения = Новый Структура;
ПредыдущиеРеквизитыСтрокиТЧРасхождения.Вставить("Склад");
ПредыдущиеРеквизитыСтрокиТЧТовары = Новый Структура;
ПредыдущиеРеквизитыСтрокиТЧТовары.Вставить("Склад");
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ЗаполнитьПризнакУчетаСебестоимости();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииСервер();
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииНаСервере();
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаОсновное" Тогда
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтаФорма);
КонецЕсли;
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПредставлениеДокументаОснованияНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
ПоказатьЗначение(Неопределено, Объект.ДокументОснование);
Иначе
СписокТипов = Новый СписокЗначений;
ТипОснования = ТипЗнч(Объект.ДокументОснование);
Если Не ТипОснования = Тип("Неопределено") Тогда
СписокТипов.Добавить(ТипОснования);
ИначеЕсли Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту") Тогда
СписокТипов.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
СписокТипов.Добавить(Тип("ДокументСсылка.АктВыполненныхРабот"));
СписокТипов.Добавить(Тип("ДокументСсылка.РеализацияУслугПрочихАктивов"));
ИначеЕсли Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
СписокТипов.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ПредставлениеДокументаОснованияНажатиеЗавершение", ЭтотОбъект);
ПоказатьВыборИзСписка(ОписаниеОповещения, СписокТипов, Элементы.ПредставлениеДокументаОснования);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПредставлениеДокументаОснованияНажатиеЗавершение(ВыбранноеЗначение, Параметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
СтруктураОтбор = Новый Структура;
СтруктураОтбор.Вставить("Проведен", Истина);
СписокХозяйственнаяОперация = Новый СписокЗначений;
СтруктураОтбор.Вставить("ХозяйственнаяОперация", СписокХозяйственнаяОперация);
СписокХозяйственнаяОперация.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту"));
Если ВыбранноеЗначение.Значение = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ИмяФормыВыбора = "Документ.РеализацияТоваровУслуг.ФормаВыбора";
СтруктураОтбор.Вставить("Статус", ПредопределенноеЗначение("Перечисление.СтатусыРеализацийТоваровУслуг.Отгружено"));
СписокХозяйственнаяОперация.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионера"));
СписокХозяйственнаяОперация.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности"));
СписокХозяйственнаяОперация.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности"));
СписокХозяйственнаяОперация.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
ИначеЕсли ВыбранноеЗначение.Значение = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
ИмяФормыВыбора = "Документ.АктВыполненныхРабот.ФормаВыбора";
ИначеЕсли ВыбранноеЗначение.Значение = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
ИмяФормыВыбора = "Документ.РеализацияУслугПрочихАктивов.ФормаВыбора";
КонецЕсли;
ОткрытьФорму(
ИмяФормыВыбора,
Новый Структура("Отбор", СтруктураОтбор),
ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПредставлениеДокументаОснованияАктаПриемкиНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Объект.АктОРасхожденияхПослеОтгрузкиОснование) Тогда
ПоказатьЗначение(,Объект.АктОРасхожденияхПослеОтгрузкиОснование);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяДоходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяДоходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
РасхожденияАктуальны = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
РасхожденияАктуальны = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ОперацияПриИзменении(Элемент)
ОперацияПриИзмененииНаСервере();
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовДополнительноНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовДополнительноАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовДополнительноОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьВалютыНажатиеЗавершение", ЭтотОбъект);
ВзаиморасчетыКлиент.ВалютыИКурсДокументаНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатиеЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия)
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
Если Объект.Валюта <> ТекущаяВалюта
ИЛИ Объект.ВалютаВзаиморасчетов <> ТекущаяВалютаВзаиморасчетов Тогда
ТекущаяВалюта = Объект.Валюта;
ТекущаяВалютаВзаиморасчетов = Объект.ВалютаВзаиморасчетов;
ОчиститьТабличныеЧастиДокументаПриИзмененииКлючевыхРеквизитовШапки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для документа с операцией ""Переход права собственности"" отправка/получение по ЭДО не предусмотрено.'"));
Возврат;
КонецЕсли;
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактур();
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыВыданные(ЭтаФорма,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка,
ПараметрыРегистрации.Выданные);
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыПолученные(ЭтаФорма,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка,
ПараметрыРегистрации.Полученные);
ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
ТекстДокументыНаОснованииОбработкаНавигационнойСсылкиЛокализация(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтаФорма,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура КлиентПартнерПриИзменении(Элемент)
КлиентПартнерПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КлиентКонтрагентПриИзменении(Элемент)
КлиентКонтрагентПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ВыборЭтапаГосКонтактаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЭтапГосконтрактаЕИС = Результат.ЭтапГосконтрактаЕИС;
Объект.ЭтапГосконтрактаЕИС = ЭтапГосконтрактаЕИС;
ПредставлениеЭтапаГосконтрактаЕИС = ЭлектронноеВзаимодействиеУТКлиент.СформироватьПредставлениеЭтапаГосконтракта(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЭтапГосконтрактаЕИСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Госконтракт", ГосКонтракт);
ОткрытьФорму("Справочник.ГосударственныеКонтракты.Форма.ФормаВыбораЭтапаГосконтракта", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ВыборЭтапаГосКонтактаЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ЭтапГосконтрактаЕИСОчистка(Элемент, СтандартнаяОбработка)
Объект.ЭтапГосконтрактаЕИС = "";
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияФайлыЕИСНажатие(Элемент, СтандартнаяОбработка)
ЭлектронноеАктированиеЕИСКлиент.ОткрытьСписокПриложенныхФайловДокумента(Объект.Ссылка, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПредставлениеИсправляемогоДокументаНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Объект.ИсправляемыйДокумент) Тогда
ПоказатьЗначение(, Объект.ИсправляемыйДокумент);
Иначе
ПодобратьИсправляемыйДокумент();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОблагаетсяАкцизомПриИзменении(Элемент)
УчетПодакцизныхТоваровКлиентСервер.НастроитьПолеПодразделениеПроизводства(ЭтотОбъект);
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Поле = Элементы.ТоварыСумма Тогда
Если ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) И НЕ Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования суммы очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущаяСтрока.НомерСтроки, "ВидЦены"),);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыСуммаСНДС Тогда
Если ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) И НЕ Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования суммы с НДС очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущаяСтрока.НомерСтроки, "ВидЦены"),);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыЗаказКлиента Тогда
Если ЗначениеЗаполнено(ТекущаяСтрока.ЗаказКлиента) Тогда
ПоказатьЗначение(Неопределено, ТекущаяСтрока.ЗаказКлиента);
КонецЕсли;
ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПараметрОповещения = Новый Структура;
ПараметрОповещения.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.НоменклатураНабора);
ИначеЕсли Поле = Элементы.ТоварыЦена Тогда
Если ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) И НЕ Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущаяСтрока.НомерСтроки, "ВидЦены"),);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПродажиКлиент.СтрокаНоменклатурыПриНачалеРедактирования(ЭтотОбъект, "Товары", ТекущаяСтрока, НоваяСтрока, Копирование);
Если НоваяСтрока И НЕ Копирование Тогда
ЗаполнитьЗаказКлиента(ЭтотОбъект, ТекущаяСтрока);
Если НЕ СкладГруппа Тогда
ТекущаяСтрока.Склад = Объект.Склад;
КонецЕсли;
ТекущаяСтрока.Подразделение = Объект.Подразделение;
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
РасхожденияАктуальны = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
РасхожденияАктуальны = Ложь;
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
ТоварыПослеУдаленияСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
СтрокаТаблицы = Элементы.Товары.ТекущиеДанные;
Если СтрокаТаблицы = Неопределено Тогда
Возврат;
КонецЕсли;
Если Элемент.ТекущийЭлемент <> Неопределено
И Элемент.ТекущийЭлемент = Элементы.ТоварыВариантОтражения Тогда
ДобавлятьВернутьВПуть =
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5
И Не РеализацияЧерезКомиссионера
И (Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту")
Или Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
СписокВыбора = Элементы.ТоварыВариантОтражения.СписокВыбора;
СписокВыбора.Очистить();
Если Объект.ВидКорректировки = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияПерепоставленногоТовара") Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ОтразитьНаПрочихДоходах"));
Если СтрокаТаблицы.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации"));
Иначе
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки"));
КонецЕсли;
Иначе
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы"));
Если СтрокаТаблицы.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации"));
Иначе
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки"));
КонецЕсли;
Если ДобавлятьВернутьВПуть Тогда
СписокВыбора.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ВернутьВПуть"));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если Копирование Тогда
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "Товары", Отказ, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "Товары", Отказ);
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") И
(Объект.ВидКорректировки = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияПерепоставленногоТовара")
ИЛИ Объект.ВидКорректировки = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара")) Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
НастроитьОтображениеЭлементовПоИтогамРасхождений();
ИначеЕсли ЗначениеЗаполнено(ТекущиеДанные.ВариантОтражения)
И Объект.ВидКорректировки = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара") Тогда
НастроитьОтображениеЭлементовПоИтогамРасхождений();
КонецЕсли;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы.Товары, ДополнительныеПараметры);
Если ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Тогда
ПодключитьОбработчикОжидания("ТоварыПриОкончанииРедактированияДляСерверногоВызова", 0.5, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтрокиТЧТовары, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполнитьСтавкуНДС.Дата = ДатаОснования;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПересчитатьСумму", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Истина));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Товары));
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый",
Новый Структура("ИмяФормы, ИмяТабличнойЧасти", ИмяФормы, "Товары"));
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполнитьСтавкуНДС.Дата = ДатаОснования;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПересчитатьСумму", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Истина));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Товары));
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ИмяФормы, "Товары"));
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПересчитатьСумму", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
Если Не КорректировкаУслугПрочихАктивов Тогда
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
КонецЕсли;
Если ТекущаяСтрока.Количество > 0 И Не ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
ИначеЕсли ТекущаяСтрока.Количество > 0 И ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ИначеЕсли (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.Номенклатура);
ТекущаяСтрока.Вставить("Упаковка", ТекущиеДанные.Упаковка);
ТекущаяСтрока.Вставить("Количество", ?(ТекущиеДанные.Количество <> 0, ТекущиеДанные.Количество, 1));
ТекущаяСтрока.Вставить("КоличествоУпаковок", ?(ТекущиеДанные.КоличествоУпаковок <> 0, ТекущиеДанные.КоличествоУпаковок, 1));
ТекущаяСтрока.Вставить("Цена", ТекущиеДанные.Цена);
ТекущаяСтрока.Вставить("Сумма", ТекущиеДанные.Сумма);
ТекущаяСтрока.Вставить("СтавкаНДС", ТекущиеДанные.СтавкаНДС);
ТекущаяСтрока.Вставить("СуммаНДС", ТекущиеДанные.СуммаНДС);
ТекущаяСтрока.Вставить("СуммаНДСРегл", ТекущиеДанные.СуммаНДСРегл);
ТекущаяСтрока.Вставить("СуммаНДСУпр", ТекущиеДанные.СуммаНДСУпр);
ТекущаяСтрока.Вставить("СуммаСНДС", ТекущиеДанные.СуммаСНДС);
ТекущаяСтрока.Вставить("БезВозвратнойТары", ТекущиеДанные.БезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаБезВозвратнойТары", ТекущиеДанные.СуммаБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаСНДСБезВозвратнойТары", ТекущиеДанные.СуммаСНДСБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаНДСБезВозвратнойТары", ТекущиеДанные.СуммаНДСБезВозвратнойТары);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ТекущиеДанные.КоличествоУпаковок = 0 Тогда
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ТекущаяСтрока, , "Количество,КоличествоУпаковок");
Иначе
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ТекущаяСтрока);
КонецЕсли;
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.Номенклатура);
ТекущаяСтрока.Вставить("Упаковка", ТекущиеДанные.Упаковка);
ТекущаяСтрока.Вставить("Количество", ?(ТекущиеДанные.Количество <> 0, ТекущиеДанные.Количество, 1));
ТекущаяСтрока.Вставить("КоличествоУпаковок", ?(ТекущиеДанные.КоличествоУпаковок <> 0, ТекущиеДанные.КоличествоУпаковок, 1));
ТекущаяСтрока.Вставить("Цена", ТекущиеДанные.Цена);
ТекущаяСтрока.Вставить("Сумма", ТекущиеДанные.Сумма);
ТекущаяСтрока.Вставить("СтавкаНДС", ТекущиеДанные.СтавкаНДС);
ТекущаяСтрока.Вставить("СуммаНДС", ТекущиеДанные.СуммаНДС);
ТекущаяСтрока.Вставить("СуммаНДСРегл", ТекущиеДанные.СуммаНДСРегл);
ТекущаяСтрока.Вставить("СуммаНДСУпр", ТекущиеДанные.СуммаНДСУпр);
ТекущаяСтрока.Вставить("СуммаСНДС", ТекущиеДанные.СуммаСНДС);
ТекущаяСтрока.Вставить("БезВозвратнойТары", ТекущиеДанные.БезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаБезВозвратнойТары", ТекущиеДанные.СуммаБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаСНДСБезВозвратнойТары", ТекущиеДанные.СуммаСНДСБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаНДСБезВозвратнойТары", ТекущиеДанные.СуммаНДСБезВозвратнойТары);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ТекущиеДанные.Количество = 0 Тогда
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ТекущаяСтрока, , "Количество,КоличествоУпаковок");
ИначеЕсли ТекущиеДанные.КоличествоУпаковок = 0 Тогда
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ТекущаяСтрока, , "КоличествоУпаковок");
Иначе
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ТекущаяСтрока);
КонецЕсли;
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПересчитатьСумму", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.Номенклатура);
ТекущаяСтрока.Вставить("Упаковка", ТекущиеДанные.Упаковка);
ТекущаяСтрока.Вставить("Количество", ?(ТекущиеДанные.Количество <> 0, ТекущиеДанные.Количество, 1));
ТекущаяСтрока.Вставить("КоличествоУпаковок", ?(ТекущиеДанные.КоличествоУпаковок <> 0, ТекущиеДанные.КоличествоУпаковок, 1));
ТекущаяСтрока.Вставить("Цена", ТекущиеДанные.Цена);
ТекущаяСтрока.Вставить("Сумма", ТекущиеДанные.Сумма);
ТекущаяСтрока.Вставить("СтавкаНДС", ТекущиеДанные.СтавкаНДС);
ТекущаяСтрока.Вставить("СуммаНДС", ТекущиеДанные.СуммаНДС);
ТекущаяСтрока.Вставить("СуммаНДСРегл", ТекущиеДанные.СуммаНДСРегл);
ТекущаяСтрока.Вставить("СуммаНДСУпр", ТекущиеДанные.СуммаНДСУпр);
ТекущаяСтрока.Вставить("СуммаСНДС", ТекущиеДанные.СуммаСНДС);
ТекущаяСтрока.Вставить("БезВозвратнойТары", ТекущиеДанные.БезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаБезВозвратнойТары", ТекущиеДанные.СуммаБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаСНДСБезВозвратнойТары", ТекущиеДанные.СуммаСНДСБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаНДСБезВозвратнойТары", ТекущиеДанные.СуммаНДСБезВозвратнойТары);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПересчитатьСумму", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ТекущаяСтрока, , "Количество,КоличествоУпаковок");
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.Номенклатура);
ТекущаяСтрока.Вставить("Упаковка", ТекущиеДанные.Упаковка);
ТекущаяСтрока.Вставить("Количество", ?(ТекущиеДанные.Количество <> 0, ТекущиеДанные.Количество, 1));
ТекущаяСтрока.Вставить("КоличествоУпаковок", ?(ТекущиеДанные.КоличествоУпаковок <> 0, ТекущиеДанные.КоличествоУпаковок, 1));
ТекущаяСтрока.Вставить("Цена", ТекущиеДанные.Цена);
ТекущаяСтрока.Вставить("Сумма", ТекущиеДанные.Сумма);
ТекущаяСтрока.Вставить("СтавкаНДС", ТекущиеДанные.СтавкаНДС);
ТекущаяСтрока.Вставить("СуммаНДС", ТекущиеДанные.СуммаНДС);
ТекущаяСтрока.Вставить("СуммаНДСРегл", ТекущиеДанные.СуммаНДСРегл);
ТекущаяСтрока.Вставить("СуммаНДСУпр", ТекущиеДанные.СуммаНДСУпр);
ТекущаяСтрока.Вставить("СуммаСНДС", ТекущиеДанные.СуммаСНДС);
ТекущаяСтрока.Вставить("БезВозвратнойТары", ТекущиеДанные.БезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаБезВозвратнойТары", ТекущиеДанные.СуммаБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаСНДСБезВозвратнойТары", ТекущиеДанные.СуммаСНДСБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаНДСБезВозвратнойТары", ТекущиеДанные.СуммаНДСБезВозвратнойТары);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ТекущаяСтрока, , "Количество,КоличествоУпаковок");
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.Номенклатура);
ТекущаяСтрока.Вставить("Упаковка", ТекущиеДанные.Упаковка);
ТекущаяСтрока.Вставить("Количество", ?(ТекущиеДанные.Количество <> 0, ТекущиеДанные.Количество, 1));
ТекущаяСтрока.Вставить("КоличествоУпаковок", ?(ТекущиеДанные.КоличествоУпаковок <> 0, ТекущиеДанные.КоличествоУпаковок, 1));
ТекущаяСтрока.Вставить("Цена", ТекущиеДанные.Цена);
ТекущаяСтрока.Вставить("Сумма", ТекущиеДанные.Сумма);
ТекущаяСтрока.Вставить("СтавкаНДС", ТекущиеДанные.СтавкаНДС);
ТекущаяСтрока.Вставить("СуммаНДС", ТекущиеДанные.СуммаНДС);
ТекущаяСтрока.Вставить("СуммаНДСРегл", ТекущиеДанные.СуммаНДСРегл);
ТекущаяСтрока.Вставить("СуммаНДСУпр", ТекущиеДанные.СуммаНДСУпр);
ТекущаяСтрока.Вставить("СуммаСНДС", ТекущиеДанные.СуммаСНДС);
ТекущаяСтрока.Вставить("БезВозвратнойТары", ТекущиеДанные.БезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаБезВозвратнойТары", ТекущиеДанные.СуммаБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаСНДСБезВозвратнойТары", ТекущиеДанные.СуммаСНДСБезВозвратнойТары);
ТекущаяСтрока.Вставить("СуммаНДСБезВозвратнойТары", ТекущиеДанные.СуммаНДСБезВозвратнойТары);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПересчитатьСумму", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ТекущаяСтрока, , "Количество,КоличествоУпаковок");
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Товары));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказКлиентаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
РеквизитыДокументаОснования = РеквизитыДокументаОснования(Объект.ДокументОснование);
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока <> Неопределено Тогда
ОтборПоНалогообложениюНДС = РеквизитыДокументаОснования.НалогообложениеНДС;
Если ОтборПоНалогообложениюНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт") Тогда
ОтборПоНалогообложениюНДС = Новый СписокЗначений();
ОтборПоНалогообложениюНДС.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров"));
ОтборПоНалогообложениюНДС.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг"));
КонецЕсли;
ХозяйственнаяОперацияПараметр =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту");
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ХозяйственнаяОперацияПараметр = Объект.ХозяйственнаяОперация;
КонецЕсли;
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Валюта", Объект.Валюта);
ПараметрыОтбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыОтбора.Вставить("Договор", Объект.Договор);
ПараметрыОтбора.Вставить("НалогообложениеНДС", ОтборПоНалогообложениюНДС);
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
ПараметрыОтбора.Вставить("Партнер", Объект.Партнер);
ПараметрыОтбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОтбора.Вставить("ХозяйственнаяОперация", ХозяйственнаяОперацияПараметр);
ПараметрыОтбора.Вставить("ЦенаВключаетНДС", РеквизитыДокументаОснования.ЦенаВключаетНДС);
ОткрытьФорму(
"Документ.КорректировкаРеализации.Форма.ФормаВыбораРаспоряжения",
Новый Структура("Отбор,Склад,ДокументОснование", ПараметрыОтбора, Объект.Склад, Объект.ДокументОснование),
Элемент,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказКлиентаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока.ЗаказКлиента = ВыбранноеЗначение;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элементы.Товары.Имя, Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
СерияПриИзменении(Элементы.Товары.Имя);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОтраженияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТипЗнч(ВыбранноеЗначение) = Тип("ПеречислениеСсылка.ВариантыОтраженияКорректировокРеализаций") Тогда
ТекущаяСтрока.ВариантОтражения = ВыбранноеЗначение;
Иначе
ТекущаяСтрока.ВариантОтражения = ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ПустаяСсылка");
КонецЕсли;
НастроитьОтображениеЭлементовПоИтогамРасхождений();
РасхожденияАктуальны = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяДоходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяДоходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСписатьНаРасходыПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(
ЭтаФорма, ТекущиеДанные, "Объект.Товары");
НастройкаСчетовУчетаКлиентСервер.ПриИзмененииРеквизитаДоступностиСчетаУчетаВСтроке(
ЭтаФорма, ТекущиеДанные, "Объект.Товары");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(
ЭтаФорма, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(
ЭтаФорма, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРасхождения
&НаКлиенте
Процедура РасхожденияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущаяСтрока = Элементы.Расхождения.ТекущиеДанные;
Если Поле = Элементы.РасхожденияЗаказКлиента Тогда
Если ЗначениеЗаполнено(ТекущаяСтрока.ЗаказКлиента) Тогда
ПоказатьЗначение(Неопределено, ТекущаяСтрока.ЗаказКлиента);
КонецЕсли;
ИначеЕсли Поле = Элементы.РасхожденияСпособОпределенияСебестоимостиСтрокой Тогда
ЗаполнитьСебестоимостьВТаблице();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияПриАктивизацииЯчейки(Элемент)
СтрокаТаблицы = Элементы.Расхождения.ТекущиеДанные;
Если СтрокаТаблицы = Неопределено Тогда
Возврат;
КонецЕсли;
Если Элемент.ТекущийЭлемент <> Неопределено
И Элемент.ТекущийЭлемент = Элементы.РасхожденияВариантОтражения Тогда
ДобавлятьВернутьВПуть =
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5
И Не РеализацияЧерезКомиссионера
И (Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту")
Или Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
СписокВыбора = Элементы.РасхожденияВариантОтражения.СписокВыбора;
СписокВыбора.Очистить();
Если СтрокаТаблицы.КоличествоУпаковок > 0 Тогда
Если Не СтрокаТаблицы.Сумма = 0
И Истина Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ОтразитьНаПрочихДоходах"));
КонецЕсли;
Если СтрокаТаблицы.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
Или СтрокаТаблицы.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализацию"));
ИначеЕсли СтрокаТаблицы.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации"));
Иначе
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки"));
КонецЕсли;
ИначеЕсли СтрокаТаблицы.КоличествоУпаковок < 0 Тогда
Если
СтрокаТаблицы.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализацию"));
ИначеЕсли СтрокаТаблицы.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа") Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализацию"));
Если Не СтрокаТаблицы.Сумма = 0 Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы"));
КонецЕсли;
Иначе
Если Не СтрокаТаблицы.Сумма = 0 Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы"));
КонецЕсли;
Если СтрокаТаблицы.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации"));
Иначе
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки"));
КонецЕсли;
Если ДобавлятьВернутьВПуть Тогда
СписокВыбора.Добавить(
ПредопределенноеЗначение(
"Перечисление.ВариантыОтраженияКорректировокРеализаций.ВернутьВПуть"));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтрокиТЧРасхождения, Элементы.Расхождения.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияСерияПриИзменении(Элемент)
СерияПриИзменении(Элементы.Расхождения.Имя);
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияСерияНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элементы.Расхождения.Имя, Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияСкладПриИзменении(Элемент)
ТекущиеДанные = Элементы.Расхождения.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач =
ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач(ТекущиеДанные.Склад, Объект.Дата);
Если ТекущиеДанные.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач Тогда
Если ТекущиеДанные.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки") Тогда
ТекущиеДанные.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации");
ИначеЕсли ТекущиеДанные.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки") Тогда
ТекущиеДанные.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации");
КонецЕсли;
Иначе
Если ТекущиеДанные.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации") Тогда
ТекущиеДанные.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки");
ИначеЕсли ТекущиеДанные.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации") Тогда
ТекущиеДанные.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки");
КонецЕсли;
КонецЕсли;
Если ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5
И (Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности")) Тогда
СкладУчетаСерий = ?(Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"),
Объект.Договор,
ТекущиеДанные.Склад);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий",
СкладУчетаСерий,
ПараметрыУказанияСерий.Расхождения));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(
ТекущиеДанные,
СтруктураДействий,
КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияВариантОтраженияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Расхождения.ТекущиеДанные;
Если ТипЗнч(ВыбранноеЗначение) = Тип("ПеречислениеСсылка.ВариантыОтраженияКорректировокРеализаций") Тогда
ТекущаяСтрока.ВариантОтражения = ВыбранноеЗначение;
Если ЗначениеЗаполнено(ТекущаяСтрока.СпособОпределенияСебестоимости) Тогда
ТекущаяСтрока.СпособОпределенияСебестоимостиСтрокой = "";
ТекущаяСтрока.СпособОпределенияСебестоимости = ПредопределенноеЗначение("Перечисление.СпособыОпределенияСебестоимостиВозврата.ПустаяСсылка");
КонецЕсли;
Иначе
ТекущаяСтрока.ВариантОтражения = ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ПустаяСсылка");
КонецЕсли;
Если ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5
И (Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности")) Тогда
ОбработатьВыборВариантаОтраженияРасхождения();
Иначе
НастроитьОтображениеЭлементовПоИтогамРасхождений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияСтатьяДоходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияСтатьяДоходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущаяСтрока = Элементы.Расхождения.ТекущиеДанные;
Если НоваяСтрока И НЕ Копирование Тогда
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, "Объект.Расхождения");
УстановитьПредставлениеСебестоимостиВСтроке(ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияСпособОпределенияСебестоимостиСтрокойПриИзменении(Элемент)
УстановитьПредставлениеСебестоимости();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыКорректировкаЗадолженности
&НаКлиенте
Процедура КорректировкаЗадолженностиСуммаКорректировкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.КорректировкаЗадолженности.ТекущиеДанные;
ТекущаяСтрока.СуммаНДСКорректировки =
ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(
ТекущаяСтрока.СуммаКорректировки,
ТекущаяСтрока.СтавкаНДС,
Истина,
Объект.НалогообложениеНДС);
ТекущаяСтрока.СуммаВзаиморасчетов = 0;
КонецПроцедуры
&НаКлиенте
Процедура КорректировкаЗадолженностиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.КорректировкаЗадолженностиДокументРеализации
ИЛИ Поле = Элементы.КорректировкаЗадолженностиОбъектРасчетов
ИЛИ Поле = Элементы.КорректировкаЗадолженностиСуммаСНДС Тогда
ПоказатьЗначение(, Элементы.КорректировкаЗадолженности.ТекущиеДанные.ДокументРеализации);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КорректировкаЗадолженностиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если Не ОтменаРедактирования Тогда
НастроитьОтображениеЭлементовПоИтогамРасхождений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КорректировкаЗадолженностиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура КорректировкаЗадолженностиСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.КорректировкаЗадолженности.ТекущиеДанные;
ТекущаяСтрока.СуммаНДС =
ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(
ТекущаяСтрока.СуммаСНДС,
ТекущаяСтрока.СтавкаНДС,
Истина,
Объект.НалогообложениеНДС);
ТекущаяСтрока.СуммаНДСКорректировки =
ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(
ТекущаяСтрока.СуммаКорректировки,
ТекущаяСтрока.СтавкаНДС,
Истина,
Объект.НалогообложениеНДС);
ТекущаяСтрока.СуммаВзаиморасчетов = 0;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоИсходнымДанным(Команда)
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ТабличнаяЧасть = Объект.Товары;
ПараметрыПроверки.ПроверятьРаспроведенность = Ложь;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьПоИсходнымДаннымЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыИзЗаказа(Команда)
ПодборТовараИУслугИзЗаказа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыРазбитьСтроку(Команда)
РазбитьСтрокуТЧ(Элементы.Товары.Имя);
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияРазбитьСтроку(Команда)
РазбитьСтрокуТЧ(Элементы.Расхождения.Имя);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоСоглашению(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(ТекстОшибки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
РасхожденияАктуальны = Ложь;
КонецЕсли;
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения("ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораЦен.ИспользоватьПриПродаже = Истина;
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтроках(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(Объект, Объект.Товары, НСтр("ru='Товары'"), ВыделенныеСтроки) Тогда
СтруктураОтбора = Новый Структура("ВыборГруппы,ЭтоГруппа", ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"), Ложь);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Отбор", СтруктураОтбора);
СтруктураПараметров.Вставить("ГруппаСкладов", Объект.Склад);
СтруктураПараметров.Вставить("ОтображениеТаблицы", ОтображениеТаблицы.Список);
ОткрытьФорму("Справочник.Склады.ФормаВыбора", СтруктураПараметров, ЭтаФорма,,,, Новый ОписаниеОповещения("ЗаполнитьСкладВВыделенныхСтрокахЗавершение", ЭтотОбъект, Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияЗаполнитьСкладВВыделенныхСтроках(Команда)
ВыделенныеСтроки = Элементы.Расхождения.ВыделенныеСтроки;
ВозможноЗаполнениеСклада = СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(
Объект,
Объект.Расхождения,
НСтр("ru='Расхождения'"),
ВыделенныеСтроки);
Если ВозможноЗаполнениеСклада Тогда
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ЭтоГруппа", Ложь);
СтруктураОтбора.Вставить("ВыборГруппы",
ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"));
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Отбор", СтруктураОтбора);
СтруктураПараметров.Вставить("ГруппаСкладов", Объект.Склад);
СтруктураПараметров.Вставить("ОтображениеТаблицы", ОтображениеТаблицы.Список);
ОписаниеОповещения = Новый ОписаниеОповещения(
"РасхожденияЗаполнитьСкладВВыделенныхСтрокахЗавершение",
ЭтотОбъект,
Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки));
ОткрытьФорму(
"Справочник.Склады.ФормаВыбора",
СтруктураПараметров,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере("Товары", ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(ВыбранныйСклад, ЗаполненоСтрок, ВыделенныеСтроки.Количество());
РасхожденияАктуальны = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасхожденияЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере("Расхождения", ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(
ВыбранныйСклад,
ЗаполненоСтрок,
ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьРасхождения(Команда)
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ТабличнаяЧасть = Объект.Расхождения;
ПараметрыПроверки.ПроверятьРаспроведенность = Ложь;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьРасхожденияЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтотОбъект, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВариантыОтраженияТовары(Команда)
УстановитьВариантыОтражения("Товары");
РасхожденияАктуальны = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВариантыОтраженияРасхождения(Команда)
УстановитьВариантыОтражения("Расхождения");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодбор(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.КорректировкаРеализации.ФормаДокумента.Команда.ОткрытьПодбор");
Отказ = Ложь;
Если (ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение))
ИЛИ Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'");
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);
Иначе
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru = 'корректировку реализации'"));
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыФормы.Вставить("ВозвращатьМногооборотнуюТару", ВернутьМногооборотнуюТару);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("РежимПодбораИсключитьГруппыДоступныеВЗаказах", Истина);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
МассивТиповНоменклатуры = Новый Массив;
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", МассивТиповНоменклатуры);
ПараметрыФормы.Вставить("СкрыватьКомандуОстаткиНаСкладах", Истина);
Иначе
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("СкрыватьПодакцизныеТовары", Объект.НалогообложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД"));
ПараметрыФормы.Вставить("ОтображатьФлагСкрыватьПодакцизныеТовары", Объект.НалогообложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД"));
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий.Товары);
КонецЕсли;
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечати(Элемент)
ОткрытьРеквизитыПечатиРеализации();
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для документа с операцией ""Переход права собственности"" отправка/получение по ЭДО не предусмотрено.'"));
Возврат;
КонецЕсли;
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоАктуПриемки(Команда)
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ТабличнаяЧасть = Объект.Товары;
ПараметрыПроверки.ПроверятьРаспроведенность = Ложь;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьПоАктуПриемкиЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияИС()
СоответствиеТребованиямГИСМТКлиент.ПроверитьВыполнениеЗадания(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СоставНабора(Команда)
ВыбраннаяСтрока = Элементы.Товары.ТекущаяСтрока;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Не ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для набора.'"));
Возврат;
КонецЕсли;
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабора());
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Истина);
Иначе
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
КонецЕсли;
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
Если "ПробитьЧек" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ОчиститьСообщения();
Если ПроверкаДанныхПередФискальнойОперациейНаСервере() Тогда
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
Иначе
Возврат;
КонецЕсли;
ИначеЕсли "ОткрытьЗаписьФискальнойОперации" = Лев(НавигационнаяСсылка, 31) Тогда
СтандартнаяОбработка = Ложь;
ИдентификаторЗаписи = Сред(НавигационнаяСсылка, 32);
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка, ИдентификаторЗаписи);
ИначеЕсли "НастроитьОборудование" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФорму("Обработка.ПредпросмотрЧека.Форма.ОшибкаПодключенияККТ");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ФискальнаяОперацияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбновитьТекстДокументыНаОсновании();
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьДокументы(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Контрагент", Объект.Контрагент);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("ВалютаВзаиморасчетов", Объект.ВалютаВзаиморасчетов);
ВыбранныеДокументы = Новый Массив();
Для каждого СтрокаТаблицы Из Объект.КорректировкаЗадолженности Цикл
ВыбранныеДокументы.Добавить(СтрокаТаблицы.ДокументРеализации);
КонецЦикла;
ПараметрыФормы.Вставить("ВыбранныеДокументы", ВыбранныеДокументы);
ОткрытьФорму("Документ.КорректировкаРеализации.Форма.ФормаПодбораДокументовРеализации", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПричинуКорректировкиЗадолженности(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ВводПричиныКорректировкиЗадолженностиЗавершение", ЭтотОбъект);
ЗаголовокФормыВвода = НСтр("ru = 'Введите причину корректировки'");
ПоказатьВводСтроки(ОписаниеОповещения, , ЗаголовокФормыВвода, 500);
КонецПроцедуры
&НаКлиенте
Процедура РаспределитьОбщуюСуммуКорректировки(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ВводСуммыКорректировкиЗавершение", ЭтотОбъект);
ЗаголовокФормыВвода = НСтр("ru = 'Введите сумму корректировки'");
ПоказатьВводЧисла(ОписаниеОповещения, 0, ЗаголовокФормыВвода, 31, 2);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСуммуКорректировкиПоПроценту(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ВводПроцентаКорректировкиЗавершение", ЭтотОбъект);
ЗаголовокФормыВвода = НСтр("ru = 'Введите процент корректировки'");
ПоказатьВводЧисла(ОписаниеОповещения, 0, ЗаголовокФормыВвода, 5, 2);
КонецПроцедуры
&НаКлиенте
Процедура ВсеИсправления(Команда)
ИсправляемыйДокумент = ИсправляемыйДокумент();
ИсправлениеДокументовКлиент.ОткрытьСписокИсправлений(ИсправляемыйДокумент, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьИсправляемыйДокумент(Команда)
ПодобратьИсправляемыйДокумент();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер()
ПриИзмененииСкладаВТабличнойЧастиСервер();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
УчетНДСУП.УстановитьУсловноеОформлениеКодаТНВЭДПоНалогообложениюПродажи(ЭтотОбъект);
УчетНДСУП.УстановитьУсловноеОформлениеКодаТНВЭДПоНалогообложениюПродажи(ЭтотОбъект, "Расхождения");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодТНВЭД.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВидКорректировки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ИсправлениеОшибок;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтотОбъект);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтотОбъект,
"РасхожденияСтавкаНДС",
"РасхожденияСуммаНДС",
"РасхожденияСуммаСНДС");
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтотОбъект,,
"РасхожденияСуммаНДСУпр");
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтотОбъект,,
"РасхожденияСуммаНДСРегл");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтотОбъект);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтотОбъект, "РасхожденияСуммаСНДС");
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "РасхожденияНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.Расхождения.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект, ПараметрыУсловногоОформления);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтотОбъект, "РасхожденияСклад");
ВариантыОтраженийСОбязательнымСкладом = Документы.КорректировкаРеализации.ВариантыОтраженийСОбязательнымСкладом();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ВариантОтражения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ВариантыОтраженийСОбязательнымСкладом;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Ложь);
СкладыСервер.УстановитьУсловноеОформлениеПодразделенияВТЧ(ЭтотОбъект);
ТипыНоменклатурыСАналитикойПодразделение = ПродажиСервер.ТипыНоменклатурыСАналитикойПодразделение();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.Подразделение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ТипыНоменклатурыСАналитикойПодразделение;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияЧерезКомиссионера");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияПодразделение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = ТипыНоменклатурыСАналитикойПодразделение;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияПодразделение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = ТипыНоменклатурыСАналитикойПодразделение;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для работ>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияЗаказКлиента.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПродажаПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияЗаказКлиента.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПродажаПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьЗаказыВТабличнойЧасти");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияВариантОтражения.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.КоличествоУпаковок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВариантОтражения.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КоличествоУпаковок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КорректировкаУслугПрочихАктивов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВернутьМногооборотнуюТару");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сумма");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КорректировкаУслугПрочихАктивов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВернутьМногооборотнуюТару");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВернутьМногооборотнуюТару");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект, "СерииВсегдаВТЧТовары");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект,
"СерииВсегдаВТЧТовары",
Элементы.РасхожденияСерия.Имя,
"Объект.Расхождения.СтатусУказанияСерий",
"Объект.Расхождения.ТипНоменклатуры");
Если ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5") Тогда
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияСерия.Имя);
ГруппаОтбораИЛИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбораИ = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности");
ЗначенияВариантовОтражения = Новый СписокЗначений;
ЗначенияВариантовОтражения.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации"));
ЗначенияВариантовОтражения.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки"));
ЗначенияВариантовОтражения.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации"));
ЗначенияВариантовОтражения.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки"));
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ВариантОтражения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ЗначенияВариантовОтражения;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.СтатусУказанияСерийНаСкладах");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.СтатусУказанияСерийПереданныхТоваров");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ГруппаОтбораИ = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту");
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ВариантОтражения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ВернутьВПуть");
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.СтатусУказанияСерийНаСкладах");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.СтатусУказанияСерийПереданныхТоваров");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Ложь);
КонецЕсли;
НаборыСервер.УстановитьУсловноеОформление(ЭтотОбъект, "Товары");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКоличествоУпаковок.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКоличество.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КорректировкаУслугПрочихАктивов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияСпособОпределенияСебестоимостиСтрокой.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.Количество");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Расхождения.ВариантОтражения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы");
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<при корректировке товара/работы в минус по количеству без списания>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияСпособОпределенияСебестоимостиСтрокой.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьУчетСебестоимости");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("УчетСебестоимостиВОсновании");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияСуммаНДСРегл.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасхожденияСуммаНДСУпр.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности");
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
РасхожденияАктуальны = Ложь;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
СтрокиНаУдаление = Новый Массив;
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
Если СтрокаТабличнойЧасти.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара И ВернутьМногооборотнуюТару Тогда
СтрокиНаУдаление.Добавить(СтрокаТабличнойЧасти);
Продолжить;
КонецЕсли;
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
Для каждого СтрокаНаУдаление Из СтрокиНаУдаление Цикл
ВыделенныеСтроки.Удалить(ВыделенныеСтроки.Найти(СтрокаНаУдаление));
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаКлиенте
Процедура ТоварыПриОкончанииРедактированияДляСерверногоВызова()
ТоварыПриОкончанииРедактированияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияНаСервере()
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Ложь, ВернутьМногооборотнуюТару));
КэшированныеЗначенияРасхождения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Расхождения, СтруктураДействий, КэшированныеЗначенияРасхождения);
КэшированныеЗначенияТовары = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначенияТовары);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполнитьСтавкуНДС.Дата = ДатаОснования;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияРасхождения.ОбработанныеСтроки,
СтруктураДействий,
Объект.Расхождения,
Неопределено);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияТовары.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСПродажи()
Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
УстановитьПривилегированныйРежим(Истина);
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ПараметрыЗаполнения = Документы.РеализацияТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект.ДокументОснование);
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
ПараметрыЗаполнения = Документы.АктВыполненныхРабот.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект.ДокументОснование);
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
ПараметрыЗаполнения = Документы.РеализацияУслугПрочихАктивов.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект.ДокументОснование);
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
Если КорректировкаУслугПрочихАктивов Тогда
КорректировкаПрошлогоПериодаДоИзменения = КорректировкаПрошлогоПериода;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
КорректировкаПрошлогоПериода = НачалоГода(ДатаДокумента) > НачалоГода(ДатаОснования);
Если КорректировкаПрошлогоПериодаДоИзменения <> КорректировкаПрошлогоПериода Тогда
РасхожденияАктуальны = Ложь;
УстановитьВидимостьЭлементовПоОснованию();
КонецЕсли;
КонецЕсли;
НастроитьОтображениеЭлементовПоИтогамРасхождений();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Дата");
ИспользоватьУчетСебестоимости = РасчетСебестоимостиПовтИсп.ВозможенРасчетСебестоимости(Объект.Дата);
КонецПроцедуры
&НаСервере
Процедура ОперацияПриИзмененииНаСервере()
РеализацияЧерезКомиссионера = КомиссионнаяТорговляСервер.РеализацияЧерезКомиссионера(Операция);
ОбновитьНадписиПоОперации();
УстановитьВидимостьПоОперации();
ОбновитьПредставлениеЭлементыИсправляемогоДокумента();
ОбновитьТекстДокументыНаОсновании();
РасхожденияАктуальны = Ложь;
Если Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара
ИЛИ Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара Тогда
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
СтрокаТЧ.ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокРеализаций.ПустаяСсылка();
КонецЦикла;
КонецЕсли;
Если Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно
ИЛИ Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно Тогда
Объект.Товары.Очистить();
Объект.Расхождения.Очистить();
Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
ДобавитьДокументРеализацииВТаблицуКорректировкаЗадолженности(Объект.ДокументОснование);
Объект.ДокументОснование = Неопределено;
КонецЕсли;
Объект.Соглашение = Неопределено;
Объект.Договор = Неопределено;
Объект.Склад = Неопределено;
Иначе
Объект.КорректировкаЗадолженности.Очистить();
КонецЕсли;
Если Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.ИсправлениеОшибок Тогда
Объект.ИсправляемыйДокумент = Неопределено;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
НастроитьОтображениеЭлементовПоИтогамРасхождений();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
УстановитьПредставлениеДокументаОснования();
НастроитьОтображениеЭлементовПоИтогамРасхождений();
ОбменСКонтрагентамиУТ.ОбновитьКодСпециальныхОбстоятельств(Объект);
КонецПроцедуры
&НаСервере
Процедура КлиентПартнерПриИзмененииНаСервере()
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.КлиентПартнер, Объект.КлиентКонтрагент);
КлиентКонтрагентПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура КлиентКонтрагентПриИзмененииНаСервере()
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ПредложениеЗаполнитьПоГосконтрактуЕИС()
Если ЭтоГосконтрактЕИС Тогда
ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗаполнитьПоГосконтрактуЗавершение", ЭтотОбъект);
ТекстПредупреждения = НСтр("ru = 'Заполнить документ по данным госконтракта?'");
ПоказатьВопрос(ОповещениеОЗавершении, ТекстПредупреждения, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоГосконтрактуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ЗаполнитьПоГосконтрактуСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоГосконтрактуСервер()
ЭлектронноеАктированиеЕИСУТ.ЗаполнитьТабличнуюЧастьДокументаПоДаннымГосконтракта(Объект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ПриИзмененииСкладаВТабличнойЧастиСервер();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПризнакУчетаСебестоимости()
ИспользоватьУчетСебестоимости = РасчетСебестоимостиПовтИсп.ВозможенРасчетСебестоимости(Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСебестоимостьВТаблице()
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Контрагент", Объект.Контрагент);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("ВалютаДокумента", Объект.Валюта);
ПараметрыФормы.Вставить("ТипНалогообложения", Объект.НалогообложениеНДС);
ВыделенныеСтроки = Элементы.Расхождения.ВыделенныеСтроки;
СтрокиТаблицыТовары = Новый Массив();
Для Каждого ТекущийИдентификаторСтроки Из ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Расхождения.НайтиПоИдентификатору(ТекущийИдентификаторСтроки);
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("Идентификатор", ТекущийИдентификаторСтроки);
ПараметрыСтроки.Вставить("СпособОпределенияСебестоимости", СтрокаТаблицы.СпособОпределенияСебестоимости);
ПараметрыСтроки.Вставить("ВидЦены", СтрокаТаблицы.ВидЦеныСебестоимости);
ПараметрыСтроки.Вставить("ДатаЗаполненияСебестоимостиПоВидуЦены", СтрокаТаблицы.ДатаЗаполненияСебестоимостиПоВидуЦены);
ПараметрыСтроки.Вставить("КоличествоУпаковок", ?(СтрокаТаблицы.КоличествоУпаковок > 0,
СтрокаТаблицы.КоличествоУпаковок, -СтрокаТаблицы.КоличествоУпаковок));
ПараметрыСтроки.Вставить("Упаковка", СтрокаТаблицы.Упаковка);
ПараметрыСтроки.Вставить("Номенклатура", СтрокаТаблицы.Номенклатура);
ПараметрыСтроки.Вставить("Характеристика", СтрокаТаблицы.Характеристика);
ПараметрыСтроки.Вставить("СтавкаНДС", СтрокаТаблицы.СтавкаНДС);
ПараметрыСтроки.Вставить("СуммаСНДС", СтрокаТаблицы.Себестоимость);
ПараметрыСтроки.Вставить("СуммаБезНДС", СтрокаТаблицы.СебестоимостьБезНДС);
ПараметрыСтроки.Вставить("СуммаРегл", СтрокаТаблицы.СебестоимостьРегл);
ПараметрыСтроки.Вставить("СуммаПР", СтрокаТаблицы.СебестоимостьПР);
ПараметрыСтроки.Вставить("СуммаВР", СтрокаТаблицы.СебестоимостьВР);
СтрокиТаблицыТовары.Добавить(ПараметрыСтроки);
КонецЦикла;
ПараметрыФормы.Вставить("СтрокиТаблицыТовары", СтрокиТаблицыТовары);
ОткрытьФорму("Документ.КорректировкаРеализации.Форма.ФормаВыбораСпособаОпределенияСебестоимости",
ПараметрыФормы,
ЭтотОбъект,,,,
Новый ОписаниеОповещения("ВыборСпособаОпределенияСебестоимостиЗавершение",
ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыборСпособаОпределенияСебестоимостиЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатВыбора) = Тип("Структура") Тогда
Строки = РезультатВыбора.СтрокиТаблицыТовары;
Для Каждого Строка Из Строки Цикл
СтрокаТаблицы = Объект.Расхождения.НайтиПоИдентификатору(Строка.Идентификатор);
Если СтрокаТаблицы <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Строка);
КонецЕсли;
КонецЦикла;
УстановитьПредставлениеСебестоимости();
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Заполнение
&НаСервере
Процедура ЗаполнитьПоИсходнымДаннымСервер()
Если Не ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Документ-основание"" не заполнено'"),
,
"ПредставлениеДокументаОснования");
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Документы.КорректировкаРеализации.ЗаполнитьТоварыПоИсходнымДанным(
Объект.ДокументОснование,
Объект.Товары,
Объект.Расхождения,
Объект.Ссылка);
УстановитьПривилегированныйРежим(Ложь);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Товары,
СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ДанныеСкладов = ПолучитьДанныеПоСкладам();
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
ДанныеСклада = ДанныеСкладов.Найти(СтрокаТЧ.Склад);
Если ДанныеСклада <> Неопределено Тогда
СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = ДанныеСклада.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
КонецЕсли;
КонецЦикла;
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, ВернутьМногооборотнуюТару);
РасхожденияАктуальны = (Объект.Расхождения.Количество() = 0);
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоАктуПриемкиСервер()
ДокументОбъект = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.КорректировкаРеализации"));
Документы.КорректировкаРеализации.ЗаполнитьТоварыПоАктуПриемки(ДокументОбъект);
ЗначениеВДанныеФормы(ДокументОбъект, Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Товары,
СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ДанныеСкладов = ПолучитьДанныеПоСкладам();
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
ДанныеСклада = ДанныеСкладов.Найти(СтрокаТЧ.Склад);
Если ДанныеСклада <> Неопределено Тогда
СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = ДанныеСклада.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
КонецЕсли;
КонецЦикла;
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, ВернутьМногооборотнуюТару);
РасхожденияАктуальны = Истина;
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ТекстОшибки = "")
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.Товары, МассивСтрок);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Партнер", Объект.Партнер);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
Если РеализацияЧерезКомиссионера Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВидЦенПродажи"));
Иначе
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
КонецЕсли;
Если НЕ ИспользуетсяКоличествоУпаковок Тогда
ПараметрыЗаполнения.Вставить("КолонкиПоЗначению", Новый Структура("Упаковка", Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка()));
КонецЕсли;
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен)
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.Товары, МассивСтрок);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", ?(ИспользуетсяКоличествоУпаковок, "КоличествоУпаковок", "Количество"));
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦен);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
Если НЕ ИспользуетсяКоличествоУпаковок Тогда
ПараметрыЗаполнения.Вставить("КолонкиПоЗначению", Новый Структура("Упаковка", Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка()));
КонецЕсли;
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьСкладВВыделенныхСтрокахНаСервере(ИмяТЧ, Знач МассивВыделенныхСтрок, Склад)
ЗаполненоСтрок = СкладыСервер.ЗаполнитьСкладыВВыделенныхСтроках(Объект[ИмяТЧ], МассивВыделенныхСтрок, Склад);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ДанныеСкладов = ПолучитьДанныеПоСкладам();
Для Каждого СтрокаТЧ Из Объект[ИмяТЧ] Цикл
ДанныеСклада = ДанныеСкладов.Найти(СтрокаТЧ.Склад);
Если ДанныеСклада <> Неопределено Тогда
СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = ДанныеСклада.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
КонецЕсли;
КонецЦикла;
Возврат ЗаполненоСтрок;
КонецФункции
&НаСервере
Процедура ЗаполнитьРасхожденияСервер()
Если Не ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Поле ""Документ-основание"" не заполнено'"),
,
"ПредставлениеДокументаОснования");
Возврат;
КонецЕсли;
НоменклатураСервер.ОкруглитьКоличествоШтучныхТоваров(Объект);
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.ЗаполнитьРасхождения();
Объект.Товары.Загрузить(ДокументОбъект.Товары.Выгрузить());
Объект.Расхождения.Загрузить(ДокументОбъект.Расхождения.Выгрузить());
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Расхождения, Истина);
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Расхождения);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Расхождения, СтруктураДействий, КэшированныеЗначения);
ОбновитьСлужебныеРеквизитыТабличныхЧастей();
РасхожденияАктуальны = Истина;
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Наборы
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабора()
Колонки = Новый Массив;
Колонки.Добавить("Номенклатура");
Колонки.Добавить("Характеристика");
Колонки.Добавить("Цена");
Колонки.Добавить("ВидЦены");
Колонки.Добавить("Упаковка");
Колонки.Добавить("Количество");
Колонки.Добавить("КоличествоУпаковок");
Колонки.Добавить("СтавкаНДС");
Колонки.Добавить("СуммаНДС");
Колонки.Добавить("СуммаСНДС");
Колонки.Добавить("Сумма");
Возврат Колонки;
КонецФункции
&НаКлиенте
Процедура ПриУдаленииКомплектующих(Действие, ДополнительныйПараметр) Экспорт
Если НаборыКлиент.ДействиеРедактироватьНабор(Действие) Тогда
НаборыКлиент.ПриУдаленииКомплектующих(ЭтаФорма, "Товары", ДополнительныйПараметр);
РасхожденияАктуальны = Ложь;
ИначеЕсли НаборыКлиент.ДействиеУдалитьВесьНабор(Действие) Тогда
ПриУдаленииКомплектующихНаСервере("Товары", ДополнительныйПараметр);
РасхожденияАктуальны = Ложь;
КонецЕсли;
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
НаборыСервер.ПриУдаленииКомплектующих(ЭтаФорма, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры
&НаСервере
Функция АдресНабораВоВременномХранилище(Параметры)
Возврат НаборыСервер.АдресНабораВоВременномХранилище(ЭтаФорма, Параметры, "Товары");
КонецФункции
&НаСервере
Процедура ПриОкончанииРедактированияНабора(АдресВоВременномХранилище)
РасхожденияАктуальны = Ложь;
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСИзмененнымиСтроками.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("ПараметрыУказанияСерий",
ПараметрыУказанияСерий.Товары));
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("ПараметрыУказанияСерий",
ПараметрыУказанияСерий.Товары));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьХарактеристикуПоВладельцу", Неопределено);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", Неопределено);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Истина));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПараметрыДанных = Новый Структура;
ПараметрыДанных.Вставить("Данные", ПолучитьИзВременногоХранилища(АдресВоВременномХранилище));
ПараметрыДанных.Вставить("СтруктураДействийСИзмененнымиСтроками", СтруктураДействийСИзмененнымиСтроками);
ПараметрыДанных.Вставить("СтруктураДействийСДобавленнымиСтроками", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных.Вставить("КолонкиНабора", КолонкиНабора());
НаборыСервер.ПриОкончанииРедактированияНабора(ЭтотОбъект, "Товары", ПараметрыДанных);
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиРеализации(Форма)
Если Форма.ТребуетсяЗалогЗаТару Тогда
Форма.СуммаВсего = Форма.Объект.Товары.Итог("СуммаСНДС");
Форма.СуммаНДС = Форма.Объект.Товары.Итог("СуммаНДС");
Иначе
Форма.СуммаВсего = Форма.Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары");
Форма.СуммаНДС = Форма.Объект.Товары.Итог("СуммаНДСБезВозвратнойТары");
КонецЕсли;
ОтображатьИтогСуммыНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Форма.Объект.НалогообложениеНДС);
Если ОтображатьИтогСуммыНДС Тогда
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
Иначе
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьСоглашенияСКлиентами =
Истина
И ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ВалютаУправленческогоУчета = ЗначениеНастроекПовтИсп.ВалютаУправленческогоУчета();
ИспользоватьРеглУчет = ПолучитьФункциональнуюОпцию("ИспользоватьРеглУчет");
Если ИспользоватьСоглашенияСКлиентами Тогда
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5 =
ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5")
И ОбщегоНазначенияУТ.ЗначениеРеквизитаОбъектаТипаБулево(Объект.Соглашение,
"ИспользуютсяДоговорыКонтрагентов");
Иначе
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5 =
ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5");
КонецЕсли;
ЗаполнитьПризнакУчетаСебестоимости();
Если Не ЗначениеЗаполнено(Объект.ДокументОснование)
И Параметры.Свойство("Основание") Тогда
Параметры.Свойство("Основание",Объект.ДокументОснование);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
УстановитьПривилегированныйРежим(Истина);
ДатаОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДокументОснование, "Дата");
УстановитьПривилегированныйРежим(Ложь);
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
КорректировкаПрошлогоПериода = НачалоГода(ДатаДокумента) > НачалоГода(ДатаОснования);
КорректировкаУслугПрочихАктивов = ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов");
Иначе
КорректировкаПрошлогоПериода = Ложь;
КорректировкаУслугПрочихАктивов = Ложь;
ДатаОснования = Объект.Дата;
КонецЕсли;
УчетСебестоимостиВОсновании = РасчетСебестоимостиПовтИсп.ВозможенРасчетСебестоимости(ДатаОснования);
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьОперацииСводнойКорректировкиЗадолженностиПоРеализации") Тогда
СписокВыбораОпераций = Элементы.Операция.СписокВыбора;
УвеличениеЗадолженности = СписокВыбораОпераций.НайтиПоЗначению(
Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно);
Если УвеличениеЗадолженности <> Неопределено
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно Тогда
СписокВыбораОпераций.Удалить(УвеличениеЗадолженности);
КонецЕсли;
УменьшениеЗадолженности = СписокВыбораОпераций.НайтиПоЗначению(
Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно);
Если УменьшениеЗадолженности <> Неопределено
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно Тогда
СписокВыбораОпераций.Удалить(УменьшениеЗадолженности);
КонецЕсли;
КонецЕсли;
ЗаполнитьХозяйственнуюОперациюДокументаОснования();
РеализацияЧерезКомиссионера = КомиссионнаяТорговляСервер.РеализацияЧерезКомиссионера(Операция);
Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
УстановитьПредставлениеДокументаОснования();
ПараметрыДляВыбора = ПараметрыДляВыбораСтатейИАналитик();
ПараметрыВыбораСтатейИАналитик = Документы.КорректировкаРеализации.ПараметрыВыбораСтатейИАналитик(ПараметрыДляВыбора);
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
УстановитьВидимостьЭлементовПоОснованию();
УстановитьДоступностьЭлементовПоСтатусуСервер();
УстановитьВидимостьПоЗаказам();
ЗаполнитьСписокВыбораОпераций();
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
Склад = Объект.Склад;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
УстановитьОтметкуНезаполненногоСклада();
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовПродажи") И Не ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения") Тогда
Элементы.ТоварыГруппаОтправитель.Видимость = Ложь;
Элементы.РасхожденияГруппаОтправитель.Видимость = Ложь;
ИначеЕсли Не СкладГруппа Тогда
Элементы.ТоварыГруппаОтправитель.Заголовок = НСтр("ru = 'Подразделение-отправитель'");
Элементы.РасхожденияГруппаОтправитель.Заголовок = НСтр("ru = 'Подразделение-отправитель'");
КонецЕсли;
Элементы.ГруппаКартинкаИНадписьНесколькоСкладов.Видимость = СкладГруппа;
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.КорректировкаРеализации);
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.Товары.ИспользоватьСерииНоменклатуры;
Элементы.РасхожденияСерия.Видимость = ПараметрыУказанияСерий.Расхождения.ИспользоватьСерииНоменклатуры;
НастроитьОтображениеЭлементовПоИтогамРасхождений();
ПриИзмененииСкладаВТабличнойЧастиСервер();
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
Элементы.РасхожденияЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
УстановитьПараметрыВыбораТоварыСклад();
УстановитьПараметрыВыбораНоменклатура();
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.ГруппаДоговор.Видимость);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОбновитьТекстДокументыНаОсновании();
ИспользоватьЗаказыВТабличнойЧасти = ПолучитьФункциональнуюОпцию("ИспользоватьРеализациюПоНесколькимЗаказам")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьАктыВыполненныхРаботПоНесколькимЗаказам");
ОбновитьСлужебныеРеквизитыТабличныхЧастей();
ОснованиеИзменено = Ложь;
Если ПравоДоступа("Изменение", Метаданные.Документы.КорректировкаРеализации) И ЗначениеЗаполнено(Объект.Основание) Тогда
Если ЗначениеЗаполнено(Объект.Основание) Тогда
СтруктураОснования = Документы.КорректировкаРеализации.СтруктураОснованияДляПечати(Объект);
ОснованиеИзменено = (СокрЛП(Объект.Основание) <> СтруктураОснования.Основание)
ИЛИ (СокрЛП(Объект.ОснованиеНомер) <> СтруктураОснования.ОснованиеНомер)
ИЛИ (Объект.ОснованиеДата <> СтруктураОснования.ОснованиеДата);
КонецЕсли;
КонецЕсли;
ТаблицаОснованийДляПечати.Загрузить(Документы.КорректировкаРеализации.ТаблицаОснованийДляПечати(Объект));
РасхожденияАктуальны = Истина;
ВернутьМногооборотнуюТару = Ложь;
Если ЗначениеЗаполнено(Объект.ДокументОснование)
И ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
УстановитьПривилегированныйРежим(Истина);
ВернутьМногооборотнуюТару = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДокументОснование,"ВернутьМногооборотнуюТару");
ТребуетсяЗалогЗаТару = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДокументОснование,"ТребуетсяЗалогЗаТару");
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
МассивТиповНоменклатуры = Новый Массив;
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ПараметрВыбора = Новый ПараметрВыбора("Отбор.ТипНоменклатуры", Новый ФиксированныйМассив(МассивТиповНоменклатуры));
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(ПараметрВыбора);
Элементы.ТоварыНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецЕсли;
ОбновитьНадписиПоОперации();
УстановитьВидимостьПоОперации();
ОбновитьПредставлениеЭлементыИсправляемогоДокумента();
УстановитьПредставлениеСебестоимости();
Элементы.ВариантОформленияПродажи.Видимость = ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг");
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Расхождения);
ПараметрыЗаполнения = Документы.КорректировкаРеализации.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ТекущаяОрганизация = Объект.Организация;
ТекущаяВалюта = Объект.Валюта;
ТекущаяВалютаВзаиморасчетов = Объект.ВалютаВзаиморасчетов;
ТекущийКонтрагент = Объект.Контрагент;
ТекущийПартнер = Объект.Партнер;
КонецПроцедуры
&НаСервере
Процедура УстановитьПредставлениеДокументаОснования()
Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ПредставлениеДокументаОснования = Строка(Объект.ДокументОснование) + " (" + Операция + ")";
Иначе
ПредставлениеДокументаОснования = Объект.ДокументОснование;
КонецЕсли;
Элементы.ПредставлениеДокументаОснования.ЦветТекста = ЦветаСтиля.ГиперссылкаЦвет;
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ПредставлениеДокументаОснования = НСтр("ru='Реализация товаров и услуг <не выбран>'");
Элементы.ПредставлениеДокументаОснования.ЦветТекста = ЦветаСтиля.ЦветОсобогоТекста;
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
ПредставлениеДокументаОснования = НСтр("ru='Акт выполненных работ <не выбран>'");
Элементы.ПредставлениеДокументаОснования.ЦветТекста = ЦветаСтиля.ЦветОсобогоТекста;
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
ПредставлениеДокументаОснования = НСтр("ru='Реализация услуг и прочих активов <не выбран>'");
Элементы.ПредставлениеДокументаОснования.ЦветТекста = ЦветаСтиля.ЦветОсобогоТекста;
Иначе
ПредставлениеДокументаОснования = НСтр("ru='Выберите документ-основание'");
Элементы.ПредставлениеДокументаОснования.ЦветТекста = ЦветаСтиля.ЦветОсобогоТекста;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.АктОРасхожденияхПослеОтгрузкиОснование) Тогда
ПредставлениеДокументаОснованияАктаПриемки = Объект.АктОРасхожденияхПослеОтгрузкиОснование;
Элементы.ПредставлениеДокументаОснования.ЦветТекста = ЦветаСтиля.ГиперссылкаЦвет;
Иначе
Элементы.ТоварыЗаполнитьПоАктуПриемки.Видимость = Ложь;
Элементы.ГруппаОснованияАктаОРасхождениях.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОснованию()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Документы.КорректировкаРеализации.ЗаполнитьИменаРеквизитовПоОснованию(
Объект.ДокументОснование,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ИспользуетсяКоличествоУпаковок = Элементы.ТоварыКоличествоУпаковок.Видимость;
ИспользуетсяУпаковка = Элементы.ТоварыУпаковка.Видимость;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыКоличество", "Видимость", НЕ ИспользуетсяУпаковка);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыКоличествоУпаковок", "Видимость", ИспользуетсяУпаковка);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыНоменклатураЕдиницаИзмерения", "Видимость", Элементы.ТоварыНоменклатура.Видимость);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыОткрытьПодбор", "Видимость", Элементы.ТоварыНоменклатура.Видимость);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыЗаполнитьЦеныПоСоглашению", "Видимость", ИспользоватьСоглашенияСКлиентами И Элементы.ТоварыНоменклатура.Видимость);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен", "Видимость", Элементы.ТоварыНоменклатура.Видимость);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РасхожденияКоличество", "Видимость", НЕ ИспользуетсяУпаковка);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РасхожденияКоличествоУпаковок", "Видимость", ИспользуетсяУпаковка);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РасхожденияУпаковка", "Видимость", ИспользуетсяУпаковка);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РасхожденияНоменклатураЕдиницаИзмерения", "Видимость", Элементы.РасхожденияНоменклатура.Видимость);
Если КорректировкаУслугПрочихАктивов Тогда
Если КорректировкаПрошлогоПериода Тогда
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("ТекстНаПрочиеРасходы");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость", Истина);
Иначе
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("ТекстНаПрочиеРасходы");
МассивИменЭлементов.Добавить("ПодразделениеДоходы");
МассивИменЭлементов.Добавить("ПодразделениеРасходы");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость", Ложь);
КонецЕсли;
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("ТоварыСоставНабора");
МассивИменЭлементов.Добавить("ТоварыИндексНабора");
МассивИменЭлементов.Добавить("ТоварыНоменклатураНабора");
МассивИменЭлементов.Добавить("ТоварыХарактеристикаНабора");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость", Ложь);
КонецЕсли;
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("КартинкаНесколькоСкладов");
МассивИменЭлементов.Добавить("НадписьНесколькоСкладов");
МассивИменЭлементов.Добавить("ТоварыЗаполнитьСкладВВыделенныхСтроках");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость", Элементы.ТоварыСклад.Видимость);
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("РасхожденияЗаполнитьСкладВВыделенныхСтроках");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость",
Элементы.РасхожденияСклад.Видимость);
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("СуммаНаПрочиеРасходы");
МассивИменЭлементов.Добавить("ВалютаНаПрочиеРасходы");
МассивИменЭлементов.Добавить("ОтступНаПрочиеРасходы");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость",
Элементы.СтатьяРасходов.Видимость);
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("СуммаНаПрочиеРасходыДополнительно");
МассивИменЭлементов.Добавить("ВалютаНаПрочиеРасходыДополнительно");
МассивИменЭлементов.Добавить("ОтступНаПрочиеРасходыДополнительно");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость",
Элементы.СтатьяРасходовДополнительно.Видимость);
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("СуммаНаПрочиеДоходыДополнительно");
МассивИменЭлементов.Добавить("ВалютаНаПрочиеДоходыДополнительно");
МассивИменЭлементов.Добавить("ОтступНаПрочиеДоходыДополнительно");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость",
Элементы.СтатьяДоходовДополнительно.Видимость);
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("СуммаНаПрочиеДоходыДополнительно");
МассивИменЭлементов.Добавить("ВалютаНаПрочиеДоходыДополнительно");
МассивИменЭлементов.Добавить("ОтступНаПрочиеДоходыДополнительно");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивИменЭлементов, "Видимость",
Элементы.СтатьяДоходовДополнительно.Видимость);
Элементы.ЦенаВключаетНДС.ОтображениеПредупрежденияПриРедактировании = ?(Элементы.ТоварыВидЦены.Видимость,
ОтображениеПредупрежденияПриРедактировании.Отображать,
ОтображениеПредупрежденияПриРедактировании.НеОтображать);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Объект.Согласован;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Операция");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("Товары;ПередНачаломДобавления,ПередУдалением,ПередНачаломИзменения;ТоварыСтатьяДоходов,ТоварыАналитикаДоходов");
МассивЭлементов.Добавить("Расхождения;;РасхожденияСтатьяДоходов,РасхожденияАналитикаДоходов");
МассивЭлементов.Добавить("ТоварыЗаполнить");
МассивЭлементов.Добавить("ТоварыОткрытьПодбор");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыИзЗаказа");
МассивЭлементов.Добавить("ТоварыРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен");
МассивЭлементов.Добавить("ТоварыЗаполнитьСкладВВыделенныхСтроках");
МассивЭлементов.Добавить("ТоварыУстановитьВариантыОтражения");
МассивЭлементов.Добавить("РасхожденияРазбитьСтроку");
МассивЭлементов.Добавить("РасхожденияЗаполнитьРасхождения");
МассивЭлементов.Добавить("РасхожденияУстановитьВариантыОтражения");
МассивЭлементов.Добавить("РасхожденияЗаполнитьСкладВВыделенныхСтроках");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтотОбъект, МассивЭлементов, УстановитьПодписку);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПоЗаказам()
Если Объект.ПродажаПоЗаказам Тогда
Элементы.ТоварыДобавить.Заголовок = НСтр("ru='Добавить товары сверх заказа'");
Иначе
Элементы.ТоварыДобавить.Заголовок = НСтр("ru='Добавить'");
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыПодобратьТоварыИзЗаказа", "Видимость", Объект.ПродажаПоЗаказам);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций()
Если ЗначениеЗаполнено(Объект.ДокументОснование)
И ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов")
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
ЭлементСписка = Элементы.Операция.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара);
Если ЭлементСписка <> Неопределено Тогда
Элементы.Операция.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
ЭлементСписка = Элементы.Операция.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара);
Если ЭлементСписка <> Неопределено Тогда
Элементы.Операция.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыДляВыбораСтатейИАналитик()
ПараметрыДляВыбора = Документы.КорректировкаРеализации.ПараметрыОпределенияДоступностиВыбораСтатейИАналитик();
ПараметрыДляВыбора.ХозяйственнаяОперация = Объект.ВидКорректировки;
ПараметрыДляВыбора.ДокументОснование = Объект.ДокументОснование;
ПараметрыДляВыбора.ДатаДокумента = Объект.Дата;
ОтразитьНаПрочихДоходах = Ложь;
СписатьНаРасходы = Ложь;
Если Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно Тогда
ОтразитьНаПрочихДоходах = Ложь;
СписатьНаРасходы = Истина;
ИначеЕсли Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно Тогда
ОтразитьНаПрочихДоходах = Истина;
СписатьНаРасходы = Ложь;
ИначеЕсли Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара
Или Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара Тогда
ОтразитьНаПрочихДоходах = СуммаНаПрочиеДоходы > 0;
СписатьНаРасходы = СуммаНаПрочиеРасходы > 0;
Иначе
ОтразитьНаПрочихДоходах = СуммаНаПрочиеДоходы > 0;
СписатьНаРасходы = СуммаНаПрочиеРасходы > 0;
КонецЕсли;
ПараметрыДляВыбора.ОтразитьНаПрочихДоходах = ОтразитьНаПрочихДоходах;
ПараметрыДляВыбора.СписатьНаРасходы = СписатьНаРасходы;
Возврат ПараметрыДляВыбора;
КонецФункции
&НаСервере
Процедура НастроитьОтображениеЭлементовПоИтогамРасхождений()
СуммаНаПрочиеДоходы = 0;
СуммаНаПрочиеРасходы = 0;
ИтогСуммаСНДСУвеличение = 0;
ИтогСуммаСНДСУменьшение = 0;
ИтогСуммаНДСУвеличение = 0;
ИтогСуммаНДСУменьшение = 0;
Если Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно Тогда
РассчитатьИтоговыеСуммыПоТаблицеКорректировкаЗадолженности();
ИначеЕсли Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно Тогда
РассчитатьИтоговыеСуммыПоТаблицеКорректировкаЗадолженности();
ИначеЕсли Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара
ИЛИ Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара Тогда
РассчитатьИтоговыеСуммыПоТаблицеТоваров(Объект.Товары);
Иначе
РассчитатьИтоговыеСуммыПоТаблицеТоваров(Объект.Расхождения);
КонецЕсли;
ПараметрыДляВыбора = ПараметрыДляВыбораСтатейИАналитик();
ПараметрыВыбораСтатейИАналитик = Документы.КорректировкаРеализации.ПараметрыВыбораСтатейИАналитик(ПараметрыДляВыбора);
ДоходыИРасходыСервер.ПриИзмененииПараметровВыбораСтатей(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ТекстНаПрочиеРасходы = СтрШаблон(НСтр("ru = 'Прочие расходы: %1 %2'"),
Формат(СуммаНаПрочиеРасходы, "ЧДЦ=2; ЧН="),
Объект.Валюта);
ТекстНаПрочиеДоходы = СтрШаблон(НСтр("ru = 'Прочие доходы: %1 %2'"),
Формат(СуммаНаПрочиеДоходы, "ЧДЦ=2; ЧН="),
Объект.Валюта);
ДоступностьРасходы = ЗначениеЗаполнено(СуммаНаПрочиеРасходы);
Элементы.ПодразделениеРасходы.Доступность = ДоступностьРасходы;
Элементы.ПодразделениеРасходыДополнительно.Доступность = ДоступностьРасходы;
ДоступностьДоходы = ЗначениеЗаполнено(СуммаНаПрочиеДоходы);
Элементы.ПодразделениеДоходы.Доступность = ДоступностьДоходы;
Элементы.ПодразделениеДоходыДополнительно.Доступность = ДоступностьДоходы;
ДанныеОснования = Новый Структура("ХозяйственнаяОперация", Операция);
ИспользоватьПодакцизныеТовары = ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
И Документы.РеализацияТоваровУслуг.ИспользуютсяПодакцизныеТовары(ДанныеОснования);
УчетПодакцизныхТоваров.ОбновитьЭлементыУчетаПодакцизныхТоваров(ЭтотОбъект, , ДатаОснования);
КонецПроцедуры
&НаСервере
Процедура РассчитатьИтоговыеСуммыПоТаблицеТоваров(ТабличнаяЧасть)
Для Каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
ИтогСуммаСНДСУвеличение = ИтогСуммаСНДСУвеличение + ?(СтрокаТЧ.СуммаСНДС > 0, СтрокаТЧ.СуммаСНДС, 0);
ИтогСуммаСНДСУменьшение = ИтогСуммаСНДСУменьшение + ?(СтрокаТЧ.СуммаСНДС < 0, -СтрокаТЧ.СуммаСНДС, 0);
ИтогСуммаНДСУвеличение = ИтогСуммаНДСУвеличение + ?(СтрокаТЧ.СуммаНДС > 0, СтрокаТЧ.СуммаНДС, 0);
ИтогСуммаНДСУменьшение = ИтогСуммаНДСУменьшение + ?(СтрокаТЧ.СуммаНДС < 0, -СтрокаТЧ.СуммаНДС, 0);
Если СтрокаТЧ.ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокРеализаций.ОтразитьНаПрочихДоходах Тогда
Если КорректировкаУслугПрочихАктивов И Не КорректировкаПрошлогоПериода Тогда
СуммаНаПрочиеДоходы = СуммаНаПрочиеДоходы + СтрокаТЧ.СуммаСНДС;
Иначе
СуммаНаПрочиеДоходы = СуммаНаПрочиеДоходы + ?(СтрокаТЧ.СуммаСНДС<0, -СтрокаТЧ.СуммаСНДС, СтрокаТЧ.СуммаСНДС);
КонецЕсли;
ИначеЕсли СтрокаТЧ.ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы
ИЛИ СтрокаТЧ.ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюСписатьНаРасходы Тогда
СуммаНаПрочиеРасходы = СуммаНаПрочиеРасходы + ?(СтрокаТЧ.СуммаСНДС<0, -СтрокаТЧ.СуммаСНДС, СтрокаТЧ.СуммаСНДС);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура РассчитатьИтоговыеСуммыПоТаблицеКорректировкаЗадолженности()
Для Каждого СтрокаТЧ Из Объект.КорректировкаЗадолженности Цикл
Если Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно Тогда
ИтогСуммаСНДСУменьшение = ИтогСуммаСНДСУменьшение + СтрокаТЧ.СуммаКорректировки;
ИтогСуммаНДСУменьшение = ИтогСуммаНДСУменьшение + СтрокаТЧ.СуммаНДСКорректировки;
СуммаНаПрочиеРасходы = СуммаНаПрочиеРасходы + СтрокаТЧ.СуммаКорректировки - СтрокаТЧ.СуммаНДСКорректировки;
ИначеЕсли Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно Тогда
ИтогСуммаСНДСУвеличение = ИтогСуммаСНДСУвеличение + СтрокаТЧ.СуммаКорректировки;
ИтогСуммаНДСУвеличение = ИтогСуммаНДСУвеличение + СтрокаТЧ.СуммаНДСКорректировки;
СуммаНаПрочиеДоходы = СуммаНаПрочиеДоходы + СтрокаТЧ.СуммаКорректировки - СтрокаТЧ.СуммаНДСКорректировки;
КонецЕсли
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСлужебныеРеквизитыТабличныхЧастей()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "Товары");
ДанныеСкладов = ПолучитьДанныеПоСкладам();
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
ДанныеСклада = ДанныеСкладов.Найти(СтрокаТЧ.Склад);
Если ДанныеСклада <> Неопределено Тогда
СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = ДанныеСклада.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
КонецЕсли;
КонецЦикла;
ОбновитьСлужебныеРеквизитыТабличнойЧастиРасхождения(ДанныеСкладов);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, ВернутьМногооборотнуюТару);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура ОбновитьСлужебныеРеквизитыТабличнойЧастиРасхождения(ДанныеСкладов)
СтруктураХарактеристикиНоменклатуры = Новый Структура;
СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Расхождения, СтруктураХарактеристикиНоменклатуры);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "Расхождения");
Для Каждого СтрокаРасхождений Из Объект.Расхождения Цикл
ДанныеСклада = ДанныеСкладов.Найти(СтрокаРасхождений.Склад);
Если ДанныеСклада <> Неопределено Тогда
СтрокаРасхождений.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = ДанныеСклада.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораДокументаОснованияСервер(ВыбранноеЗначение)
Модифицированность = Истина;
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.Заполнить(ВыбранноеЗначение);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
Объект.ДокументОснование = ВыбранноеЗначение;
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораТоваровИзЗаказа(АдресТоваровВХранилище)
ТаблицаТовары = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтруктураПоискаТоваров = Новый Структура("КодСтроки, ЗаказКлиента");
Для Каждого СтрокаТоваров Из ТаблицаТовары Цикл
СтруктураПоискаТоваров.КодСтроки = СтрокаТоваров.КодСтроки;
СтруктураПоискаТоваров.ЗаказКлиента = СтрокаТоваров.ЗаказКлиента;
МассивСтрокТЧТовары = Объект.Товары.НайтиСтроки(СтруктураПоискаТоваров);
Если МассивСтрокТЧТовары.Количество() = 0 Тогда
СтрокаТЧТовары = Объект.Товары.Добавить();
ИначеЕсли МассивСтрокТЧТовары.Количество() = 1 Тогда
СтрокаТЧТовары = МассивСтрокТЧТовары[0];
ИначеЕсли МассивСтрокТЧТовары.Количество() > 1 Тогда
Для Каждого СтрокаКУдалению Из МассивСтрокТЧТовары Цикл
Объект.Товары.Удалить(СтрокаКУдалению);
КонецЦикла;
СтрокаТЧТовары = Объект.Товары.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
СтрокаТЧТовары.ЗаказКлиента = СтруктураПоискаТоваров.ЗаказКлиента;
СтрокаТЧТовары.ИндексНабора = ?(ЗначениеЗаполнено(СтрокаТЧТовары.НоменклатураНабора),1,0);
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, ВернутьМногооборотнуюТару);
ПриИзмененииСкладаВТабличнойЧастиСервер();
РасхожденияАктуальны = Ложь;
ЗаполнитьОснованиеДляПечати();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
КонецПроцедуры
&НаСервереБезКонтекста
Функция РеквизитыДокументаОснования(ДокументОснование)
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументОснование, "НалогообложениеНДС, ЦенаВключаетНДС");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ПроверитьНаличиеКорректировок(Ссылка, Основание, ЕстьКорректировки) Экспорт
ПродажиСервер.ПроверитьНаличиеКорректировок(Ссылка, Основание, ЕстьКорректировки)
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьНаличиеИсправленийПослеДатыДокумента(Документ)
ИменаРеквизитов = "Дата, ВидКорректировки, ДокументОснование, ИсправляемыйДокумент";
РеквизитыДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Документ, ИменаРеквизитов);
ПараметрыПроверки = РегистрыСведений.ИсправленияДокументов.ПараметрыПроверкиИсправленияДокументов();
ПараметрыПроверки.Ссылка = Документ;
ПараметрыПроверки.Дата = РеквизитыДокумента.Дата;
ПараметрыПроверки.ИсправляемыйДокумент = Документы.КорректировкаРеализации.ИсправляемыйДокумент(РеквизитыДокумента);
УстановитьПривилегированныйРежим(Истина);
Исправление = ИсправлениеДокументов.ИсправлениеПослеДатыДокумента(ПараметрыПроверки);
Исправление = ?(ЗначениеЗаполнено(Исправление), Строка(Исправление), "");
Возврат Исправление;
КонецФункции
&НаСервере
Функция ПроверкаДанныхПередФискальнойОперациейНаСервере()
Результат = Истина;
Если КорректировкаРеализацииЛокализация.ДокументСодержитМаркированныйТовар(Объект.Ссылка) Тогда
Результат = Ложь;
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Операция коррекции маркированной продукции на ККТ не поддерживается.'"));
КонецЕсли;
Если Результат Тогда
Результат = Результат И ФормированиеФискальныхЧековСервер.ШтрихкодыУпаковокЗаполнены(Объект);
Если Не Объект.Проведен Тогда
Результат = Ложь;
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Пробитие чека возможно только для проведенных документов'"));
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Соглашение"" не заполнено'"), Объект.Ссылка, "Объект.Соглашение",,Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"), Объект.Ссылка, "Объект.Валюта",,Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполнитьСтавкуНДС.Дата = ДатаОснования;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСодержание",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(
Объект, Истина));
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ",
Новый Структура("Подразделение", Объект.Подразделение));
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара,
"НоменклатураНабора,
|ХарактеристикаНабора,
|Номенклатура,
|Характеристика,
|Упаковка,
|Склад,
|ВидЦены,
|Цена,
|КоличествоУпаковок,
|Серия");
ТекущаяСтрока.ИндексНабора = ?(ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора),1,0);
ЗаполнитьЗаказКлиента(ЭтотОбъект, ТекущаяСтрока);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураХарактеристикиНоменклатуры = Новый Структура;
СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураХарактеристикиНоменклатуры);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтотОбъект, "Товары");
ДанныеСкладов = ПолучитьДанныеПоСкладам();
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
ДанныеСклада = ДанныеСкладов.Найти(СтрокаТЧ.Склад);
Если ДанныеСклада <> Неопределено Тогда
СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = ДанныеСклада.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
КонецЕсли;
КонецЦикла;
ПриИзмененииСкладаВТабличнойЧастиСервер();
РасхожденияАктуальны = Ложь;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьРеквизитыПечатиРеализации()
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
СтруктураПараметров = Новый Структура();
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
Или ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
СтруктураПараметров.Вставить("АдресДоставки", Объект.АдресДоставки);
СтруктураПараметров.Вставить("АдресДоставкиЗначение", Объект.АдресДоставкиЗначение);
СтруктураПараметров.Вставить("АдресДоставкиЗначенияПолей", Объект.АдресДоставкиЗначенияПолей);
СтруктураПараметров.Вставить("БанковскийСчетГрузоотправителя", Объект.БанковскийСчетГрузоотправителя);
СтруктураПараметров.Вставить("БанковскийСчетГрузополучателя", Объект.БанковскийСчетГрузополучателя);
СтруктураПараметров.Вставить("Грузоотправитель", Объект.Грузоотправитель);
СтруктураПараметров.Вставить("Грузополучатель", Объект.Грузополучатель);
СтруктураПараметров.Вставить("ДоверенностьВыдана", Объект.ДоверенностьВыдана);
СтруктураПараметров.Вставить("ДоверенностьДата", Объект.ДоверенностьДата);
СтруктураПараметров.Вставить("ДоверенностьЛицо", Объект.ДоверенностьЛицо);
СтруктураПараметров.Вставить("ДоверенностьНомер", Объект.ДоверенностьНомер);
СтруктураПараметров.Вставить("Отпустил", Объект.Отпустил);
СтруктураПараметров.Вставить("ОтпустилДолжность", Объект.ОтпустилДолжность);
СтруктураПараметров.Вставить("ТипОбъекта", "КорректировкаРеализации");
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
СтруктураПараметров.Вставить("ТипОбъекта", "АктВыполненныхРабот");
КонецЕсли;
СтруктураПараметров.Вставить("АдресДоставки", Объект.АдресДоставки);
СтруктураПараметров.Вставить("АдресДоставкиЗначение", Объект.АдресДоставкиЗначение);
СтруктураПараметров.Вставить("АдресДоставкиЗначенияПолей", Объект.АдресДоставкиЗначенияПолей);
СтруктураПараметров.Вставить("БанковскийСчетГрузоотправителя", Объект.БанковскийСчетГрузоотправителя);
СтруктураПараметров.Вставить("БанковскийСчетГрузополучателя", Объект.БанковскийСчетГрузополучателя);
СтруктураПараметров.Вставить("БанковскийСчетКонтрагента", Объект.БанковскийСчетКонтрагента);
СтруктураПараметров.Вставить("Договор", Объект.Договор);
СтруктураПараметров.Вставить("Основание", Объект.Основание);
СтруктураПараметров.Вставить("ОснованиеДата", Объект.ОснованиеДата);
СтруктураПараметров.Вставить("ОснованиеНомер", Объект.ОснованиеНомер);
СтруктураПараметров.Вставить("Партнер", Объект.Партнер);
СтруктураПараметров.Вставить("ХозяйственнаяОперация", ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту"));
СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
СтруктураПараметров.Вставить("ТолькоПросмотр", ТолькоПросмотр);
СтруктураПараметров.Вставить("ПродажаПоЗаказам", Объект.ПродажаПоЗаказам);
СтруктураПараметров.Вставить("БанковскийСчетОрганизации", Объект.БанковскийСчетОрганизации);
СтруктураПараметров.Вставить("Организация", Объект.Организация);
СтруктураПараметров.Вставить("Дата", Объект.Дата);
СтруктураПараметров.Вставить("Руководитель", Объект.Руководитель);
СтруктураПараметров.Вставить("ГлавныйБухгалтер", Объект.ГлавныйБухгалтер);
СтруктураПараметров.Вставить("ТаблицаОснованийДляПечати", ТаблицаОснованийДляПечати);
СтруктураПараметров.Вставить("КодСпециальныхОбстоятельств", Объект.КодСпециальныхОбстоятельств);
ОткрытьФорму("ОбщаяФорма.РеквизитыПечатиРеализации", СтруктураПараметров, ЭтотОбъект,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция ПолучитьДанныеПоСкладам()
СкладыРасхождений = Объект.Расхождения.Выгрузить(,"Склад");
СкладыРасхождений.Свернуть("Склад");
СкладыРасхождений.Колонки.Добавить("ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач",
Новый ОписаниеТипов("Булево"));
Для Каждого Стр Из СкладыРасхождений Цикл
Если ЗначениеЗаполнено(Стр.Склад) Тогда
Стр.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач(Стр.Склад, Объект.Дата);
КонецЕсли;
КонецЦикла;
СкладыТоваров = Объект.Товары.Выгрузить(,"Склад");
СкладыТоваров.Свернуть("Склад");
Для каждого Стр из СкладыТоваров Цикл
Если ЗначениеЗаполнено(Стр.Склад)
И СкладыРасхождений.Найти(Стр.Склад,"Склад") = Неопределено Тогда
СтрокаСклада = СкладыРасхождений.Добавить();
СтрокаСклада.Склад = Стр.Склад;
СтрокаСклада.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач(Стр.Склад, Объект.Дата);
КонецЕсли;
КонецЦикла;
Возврат СкладыРасхождений;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура(
"БезВозвратнойТары",
"Сумма,СуммаНДС,СуммаСНДС");
КонецФункции
&НаСервере
Процедура ОбновитьНадписиПоОперации()
Если Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара Тогда
Текст = Нстр("ru='(перепоставка)'");
ИначеЕсли Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара Тогда
Текст = Нстр("ru='(недопоставка)'");
Иначе
Текст = Нстр("ru='(после корректировки)'");
КонецЕсли;
Элементы.ГруппаТовары.Заголовок = Нстр("ru='Товары'") + " " + Текст;
Если Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно Тогда
Элементы.ГруппаКорректировкаЗадолженности.Заголовок = Нстр("ru='Уменьшение задолженности'");
Элементы.КорректировкаЗадолженностиСуммаКорректировки.Заголовок = Нстр("ru='Сумма уменьшения'");
Элементы.КорректировкаЗадолженностиСуммаНДСКорректировки.Заголовок = Нстр("ru='Сумма НДС уменьшения'");
Элементы.КорректировкаЗадолженностиГруппаЗаполнить.Заголовок = НСтр("ru='Заполнить сумму уменьшения'")
ИначеЕсли Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно Тогда
Элементы.ГруппаКорректировкаЗадолженности.Заголовок = Нстр("ru='Увеличение задолженности'");
Элементы.КорректировкаЗадолженностиСуммаКорректировки.Заголовок = Нстр("ru='Сумма увеличения'");
Элементы.КорректировкаЗадолженностиСуммаНДСКорректировки.Заголовок = Нстр("ru='Сумма НДС увеличения'");
Элементы.КорректировкаЗадолженностиГруппаЗаполнить.Заголовок = НСтр("ru='Заполнить сумму увеличения'")
Иначе
Элементы.ГруппаКорректировкаЗадолженности.Заголовок = Нстр("ru='Корректировка задолженности'");
Элементы.КорректировкаЗадолженностиСуммаКорректировки.Заголовок = Нстр("ru='Сумма корректировки'");
Элементы.КорректировкаЗадолженностиСуммаНДСКорректировки.Заголовок = Нстр("ru='Сумма НДС корректировки'");
Элементы.КорректировкаЗадолженностиГруппаЗаполнить.Заголовок = НСтр("ru='Заполнить сумму корректировки'")
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПоОперации()
ВидимостьТовары =
Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно;
Элементы.ГруппаТовары.Видимость = ВидимостьТовары;
ВидимостьЭлементов = Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара
ИЛИ Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара;
Элементы.ТоварыВариантОтражения.Видимость = ВидимостьЭлементов;
Элементы.ТоварыУстановитьВариантыОтражения.Видимость = ВидимостьЭлементов;
Элементы.ГруппаПрочиеДоходыРасходыДополнительно.Видимость = (ТипЗнч(Объект.ДокументОснование) <> Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") И ВидимостьЭлементов);
ВидимостьЭлементов =
Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно;
Элементы.Расхождения.Видимость = ВидимостьЭлементов;
Элементы.ГруппаПрочиеДоходыРасходы.Видимость = ВидимостьЭлементов;
Элементы.ГруппаДанныеКлиента.Видимость = РеализацияЧерезКомиссионера;
Элементы.Склад.Видимость = Не РеализацияЧерезКомиссионера;
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Видимость = Не РеализацияЧерезКомиссионера;
ЕстьИтоговыеСуммыРасхожденийУвеличение =
Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно;
ЕстьИтоговыеСуммыРасхожденийУменьшение =
Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.ВозвратНедопоставленногоТовара
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.РеализацияПерепоставленногоТовара
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно;
Элементы.ИтогСуммаСНДСУвеличение.Видимость = ЕстьИтоговыеСуммыРасхожденийУвеличение;
Элементы.ИтогСуммаСНДСУменьшение.Видимость = ЕстьИтоговыеСуммыРасхожденийУменьшение;
Элементы.ИтогСуммаВсегоУвеличениеБезНДС.Видимость = ЕстьИтоговыеСуммыРасхожденийУвеличение;
Элементы.ИтогСуммаВсегоУменьшениеБезНДС.Видимость = ЕстьИтоговыеСуммыРасхожденийУменьшение;
Элементы.ИтогСуммаНДСУвеличение.Видимость = ЕстьИтоговыеСуммыРасхожденийУвеличение;
Элементы.ИтогСуммаНДСУменьшение.Видимость = ЕстьИтоговыеСуммыРасхожденийУменьшение;
ЕстьИтоговыеСумма =
Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно
И Объект.ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно;
Элементы.ИтогСуммаСНДС.Видимость = ЕстьИтоговыеСумма;
Элементы.ГруппаИтогСуммаНДС.Видимость = ЕстьИтоговыеСумма;
Элементы.ГруппаИтогСуммаВсегоБезНДС.Видимость = ЕстьИтоговыеСумма;
ЭтоКорректировкаЗадолженности =
Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно
ИЛИ Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно;
ИспользоватьСоглашение = Истина;
Элементы.ГруппаКорректировкаЗадолженности.Видимость = ЭтоКорректировкаЗадолженности;
Элементы.Партнер.ТолькоПросмотр = Не ЭтоКорректировкаЗадолженности;
Элементы.Контрагент.ТолькоПросмотр = Не ЭтоКорректировкаЗадолженности;
Элементы.Организация.ТолькоПросмотр = Не ЭтоКорректировкаЗадолженности;
Элементы.НалогообложениеНДС.ТолькоПросмотр = Не ЭтоКорректировкаЗадолженности;
Элементы.Сделка.ТолькоПросмотр = Не ЭтоКорректировкаЗадолженности;
Элементы.Подразделение.ТолькоПросмотр = Не ЭтоКорректировкаЗадолженности;
Элементы.Соглашение.Видимость = Не ЭтоКорректировкаЗадолженности И ИспользоватьСоглашение;
Элементы.Договор.Видимость = Не ЭтоКорректировкаЗадолженности;
Элементы.Склад.Видимость = Не ЭтоКорректировкаЗадолженности;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
Элементы.Склад.ТолькоПросмотр = Ложь;
Элементы.Склад.ВыборГруппИЭлементов = ГруппыИЭлементы.ГруппыИЭлементы;
КонецЕсли;
Элементы.ГруппаОснования.Видимость = Не ЭтоКорректировкаЗадолженности;
Элементы.ГруппаПечать.Видимость = Не ЭтоКорректировкаЗадолженности;
Элементы.ЦенаВключаетНДС.Видимость = Не ЭтоКорректировкаЗадолженности;
Элементы.РасхожденияРазбитьСтроку.Видимость = Элементы.РасхожденияСерия.Видимость
И ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5
И (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности);
Элементы.РасхожденияКонтекстноеМенюРазбитьСтроку.Видимость = Элементы.РасхожденияРазбитьСтроку.Видимость;
Элементы.РасхожденияЗаполнитьСкладВВыделенныхСтроках.Видимость =
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
ЭтоУменьшениеЗадолженности =
Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУменьшениеЗадолженностиСводно;
Элементы.ГруппаПрочиеРасходыКорректировкаЗадолженности.Видимость = ЭтоУменьшениеЗадолженности;
ЭтоУвеличениеЗадолженности =
Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаРеализацииУвеличениеЗадолженностиСводно;
Элементы.ГруппаПрочиеДоходыКорректировкаЗадолженности.Видимость = ЭтоУвеличениеЗадолженности;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаИсправляемыйДокумент",
"Видимость", ЗначениеЗаполнено(ОБъект.ДокументОснование) И Объект.ВидКорректировки = Перечисления.ХозяйственныеОперации.ИсправлениеОшибок);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВариантыОтражения(ИмяТЧ)
КорректировкаДавальца = Ложь;
ЕстьУвеличениеКоличестваПоОрдерномуСкладу = Ложь;
ЕстьУвеличениеКоличестваБезИнвентаризации = Ложь;
ЕстьУменьшениеКоличестваПоОрдерномуСкладу = Ложь;
ЕстьУменьшениеКоличестваБезИнвентаризации = Ложь;
ЕстьУвеличениеВыручки = Ложь;
ЕстьУвеличениеВыручкиБезОтражения = Ложь;
ЕстьУменьшениеВыручки = Ложь;
ЕстьУменьшениеВыручкиБезСписания = Ложь;
ДобавлятьВернутьВПуть =
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5
И Не РеализацияЧерезКомиссионера
И (Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту")
Или Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
Для Каждого СтрокаТЧ Из Объект[ИмяТЧ] Цикл
Если (СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар")
Или СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара")
Или СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")) Тогда
Если (СтрокаТЧ.Количество > 0 И Объект.ВидКорректировки <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара")) Тогда
Если СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
Или КорректировкаДавальца Тогда
Если Не СтрокаТЧ.Сумма = 0 Тогда
ЕстьУвеличениеВыручки = Истина;
Иначе
ЕстьУвеличениеВыручкиБезОтражения = Истина;
КонецЕсли;
ИначеЕсли СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач Тогда
ЕстьУвеличениеКоличестваПоОрдерномуСкладу = Истина;
Иначе
ЕстьУвеличениеКоличестваБезИнвентаризации = Истина;
КонецЕсли;
ИначеЕсли (СтрокаТЧ.Количество < 0 Или Объект.ВидКорректировки = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара")) Тогда
Если КорректировкаДавальца
Или СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа") Тогда
Если Не СтрокаТЧ.Сумма = 0 Тогда
ЕстьУменьшениеВыручки = Истина;
Иначе
ЕстьУменьшениеВыручкиБезСписания = Истина;
КонецЕсли;
ИначеЕсли СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач Тогда
ЕстьУменьшениеКоличестваПоОрдерномуСкладу = Истина;
Иначе
ЕстьУменьшениеКоличестваБезИнвентаризации = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ЕстьУвеличениеКоличестваПоОрдерномуСкладу
Или ЕстьУвеличениеКоличестваБезИнвентаризации
Или ЕстьУменьшениеКоличестваПоОрдерномуСкладу
Или ЕстьУменьшениеКоличестваБезИнвентаризации
Или ЕстьУвеличениеВыручки
Или ЕстьУвеличениеВыручкиБезОтражения
Или ЕстьУменьшениеВыручки
Или ЕстьУменьшениеВыручкиБезСписания Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
ДополнительныеПараметры.Вставить("СписокВариантовДляВыбора", Новый Массив);
ДополнительныеПараметры.Вставить("ИмяСвойстваДляРезультатаВыбора", Неопределено);
ДополнительныеПараметры.Вставить("ВариантОтраженияУвеличениеКоличестваПоОрдерномуСкладу", Неопределено);
ДополнительныеПараметры.Вставить("ВариантОтраженияУвеличениеКоличестваБезИнвентаризации", Неопределено);
ДополнительныеПараметры.Вставить("ВариантОтраженияУменьшениеКоличестваПоОрдерномуСкладу", Неопределено);
ДополнительныеПараметры.Вставить("ВариантОтраженияУменьшениеКоличестваБезИнвентаризации", Неопределено);
ДополнительныеПараметры.Вставить("ВариантОтраженияУвеличениеВыручки", Неопределено);
ДополнительныеПараметры.Вставить("ВариантОтраженияУвеличениеВыручкиБезОтражения", Неопределено);
ДополнительныеПараметры.Вставить("ВариантОтраженияУменьшениеВыручки", Неопределено);
ДополнительныеПараметры.Вставить("ВариантОтраженияУменьшениеВыручкиБезСписания", Неопределено);
Если ЕстьУвеличениеКоличестваПоОрдерномуСкладу Тогда
СписокВариантовОтражения = Новый СписокЗначений;
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ОтразитьНаПрочихДоходах"));
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации"));
ДополнительныеПараметры.СписокВариантовДляВыбора.Добавить(Новый Структура("ИмяСвойстваДляРезультатаВыбора, СписокВариантовОтражения", "ВариантОтраженияУвеличениеКоличестваПоОрдерномуСкладу", СписокВариантовОтражения));
КонецЕсли;
Если ЕстьУвеличениеКоличестваБезИнвентаризации Тогда
СписокВариантовОтражения = Новый СписокЗначений;
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ОтразитьНаПрочихДоходах"));
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки"));
ДополнительныеПараметры.СписокВариантовДляВыбора.Добавить(Новый Структура("ИмяСвойстваДляРезультатаВыбора, СписокВариантовОтражения", "ВариантОтраженияУвеличениеКоличестваБезИнвентаризации", СписокВариантовОтражения));
КонецЕсли;
Если ЕстьУвеличениеВыручки Тогда
СписокВариантовОтражения = Новый СписокЗначений;
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ОтразитьНаПрочихДоходах"));
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализацию"));
ДополнительныеПараметры.СписокВариантовДляВыбора.Добавить(Новый Структура("ИмяСвойстваДляРезультатаВыбора, СписокВариантовОтражения", "ВариантОтраженияУвеличениеВыручки", СписокВариантовОтражения));
КонецЕсли;
Если ЕстьУвеличениеВыручкиБезОтражения Тогда
СписокВариантовОтражения = Новый СписокЗначений;
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализацию"));
ДополнительныеПараметры.СписокВариантовДляВыбора.Добавить(Новый Структура("ИмяСвойстваДляРезультатаВыбора, СписокВариантовОтражения", "ВариантОтраженияУвеличениеВыручкиБезОтражения", СписокВариантовОтражения));
КонецЕсли;
Если ЕстьУменьшениеКоличестваПоОрдерномуСкладу Тогда
СписокВариантовОтражения = Новый СписокЗначений;
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы"));
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации"));
Если ДобавлятьВернутьВПуть Тогда
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ВернутьВПуть"));
КонецЕсли;
ДополнительныеПараметры.СписокВариантовДляВыбора.Добавить(Новый Структура("ИмяСвойстваДляРезультатаВыбора, СписокВариантовОтражения", "ВариантОтраженияУменьшениеКоличестваПоОрдерномуСкладу", СписокВариантовОтражения));
КонецЕсли;
Если ЕстьУменьшениеКоличестваБезИнвентаризации Тогда
СписокВариантовОтражения = Новый СписокЗначений;
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы"));
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки"));
Если ДобавлятьВернутьВПуть Тогда
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ВернутьВПуть"));
КонецЕсли;
ДополнительныеПараметры.СписокВариантовДляВыбора.Добавить(Новый Структура("ИмяСвойстваДляРезультатаВыбора, СписокВариантовОтражения", "ВариантОтраженияУменьшениеКоличестваБезИнвентаризации", СписокВариантовОтражения));
КонецЕсли;
Если ЕстьУменьшениеВыручки Тогда
СписокВариантовОтражения = Новый СписокЗначений;
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы"));
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализацию"));
ДополнительныеПараметры.СписокВариантовДляВыбора.Добавить(Новый Структура("ИмяСвойстваДляРезультатаВыбора, СписокВариантовОтражения", "ВариантОтраженияУменьшениеВыручки", СписокВариантовОтражения));
КонецЕсли;
Если ЕстьУменьшениеВыручкиБезСписания Тогда
СписокВариантовОтражения = Новый СписокЗначений;
СписокВариантовОтражения.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализацию"));
ДополнительныеПараметры.СписокВариантовДляВыбора.Добавить(Новый Структура("ИмяСвойстваДляРезультатаВыбора, СписокВариантовОтражения", "ВариантОтраженияУменьшениеВыручкиБезСписания", СписокВариантовОтражения));
КонецЕсли;
ВыбратьИнтерактивноВариантыОтраженияКорректировокРеализацийФрагмент(ДополнительныеПараметры);
Иначе
ПоказатьПредупреждение(,НСтр("ru = 'Нет строк, в которых доступно изменение варианта отражения.'"));
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИнтерактивноВариантыОтраженияКорректировокРеализацийФрагмент(ДополнительныеПараметры);
Если ДополнительныеПараметры.СписокВариантовДляВыбора.Количество() > 0 Тогда
СписокВариантовОтражения = ДополнительныеПараметры.СписокВариантовДляВыбора[0].СписокВариантовОтражения;
СтруктураОтбор = Новый Структура("Ссылка", СписокВариантовОтражения);
ДополнительныеПараметры.ИмяСвойстваДляРезультатаВыбора = ДополнительныеПараметры.СписокВариантовДляВыбора[0].ИмяСвойстваДляРезультатаВыбора;
ДополнительныеПараметры.СписокВариантовДляВыбора.Удалить(0);
Если СписокВариантовОтражения.Количество() > 1 Тогда
ОткрытьФорму(
"Перечисление.ВариантыОтраженияКорректировокРеализаций.ФормаВыбора",
Новый Структура("Отбор", СтруктураОтбор),,,,,
Новый ОписаниеОповещения("ВыбратьИнтерактивноВариантыОтраженияКорректировокРеализацийЗавершение", ЭтотОбъект, ДополнительныеПараметры), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
Иначе
ВыбратьИнтерактивноВариантыОтраженияКорректировокРеализацийЗавершение(СписокВариантовОтражения[0].Значение, ДополнительныеПараметры);
КонецЕсли;
Иначе
УстановитьВариантыОтраженияЗавершение(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИнтерактивноВариантыОтраженияКорректировокРеализацийЗавершение(ВариантОтражения, ДополнительныеПараметры) Экспорт
ИмяСвойстваДляРезультатаВыбора = Неопределено;
Если ДополнительныеПараметры.Свойство("ИмяСвойстваДляРезультатаВыбора", ИмяСвойстваДляРезультатаВыбора) Тогда
ДополнительныеПараметры.Вставить(ИмяСвойстваДляРезультатаВыбора, ВариантОтражения);
КонецЕсли;
ВыбратьИнтерактивноВариантыОтраженияКорректировокРеализацийФрагмент(ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВариантыОтраженияЗавершение(ДополнительныеПараметры)
Если ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУвеличениеКоличестваПоОрдерномуСкладу)
Или ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУвеличениеКоличестваБезИнвентаризации)
Или ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУвеличениеВыручки)
Или ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУвеличениеВыручкиБезОтражения)
Или ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУменьшениеКоличестваПоОрдерномуСкладу)
Или ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУменьшениеКоличестваБезИнвентаризации)
Или ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУменьшениеВыручки)
Или ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУменьшениеВыручкиБезСписания)Тогда
Для Каждого СтрокаТЧ Из Объект[ДополнительныеПараметры.ИмяТЧ] Цикл
Если СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
Продолжить;
КонецЕсли;
Если (СтрокаТЧ.Количество > 0 И Объект.ВидКорректировки <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара")) Тогда
Если СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач И ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУвеличениеКоличестваПоОрдерномуСкладу) Тогда
СтрокаТЧ.ВариантОтражения = ДополнительныеПараметры.ВариантОтраженияУвеличениеКоличестваПоОрдерномуСкладу;
ИначеЕсли СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
И ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУвеличениеВыручки)
И Не СтрокаТЧ.Сумма = 0 Тогда
СтрокаТЧ.ВариантОтражения = ДополнительныеПараметры.ВариантОтраженияУвеличениеВыручки;
ИначеЕсли ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУвеличениеКоличестваБезИнвентаризации) Тогда
СтрокаТЧ.ВариантОтражения = ДополнительныеПараметры.ВариантОтраженияУвеличениеКоличестваБезИнвентаризации;
ИначеЕсли СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
И ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУвеличениеВыручкиБезОтражения)
И СтрокаТЧ.Сумма = 0 Тогда
СтрокаТЧ.ВариантОтражения = ДополнительныеПараметры.ВариантОтраженияУвеличениеВыручкиБезОтражения;
КонецЕсли;
ИначеЕсли (СтрокаТЧ.Количество < 0 Или Объект.ВидКорректировки = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара")) Тогда
Если СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач И ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУменьшениеКоличестваПоОрдерномуСкладу) Тогда
СтрокаТЧ.ВариантОтражения = ДополнительныеПараметры.ВариантОтраженияУменьшениеКоличестваПоОрдерномуСкладу;
ИначеЕсли СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
И Не СтрокаТЧ.Сумма = 0 Тогда
СтрокаТЧ.ВариантОтражения = ДополнительныеПараметры.ВариантОтраженияУменьшениеВыручки;
ИначеЕсли ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУменьшениеКоличестваБезИнвентаризации) Тогда
СтрокаТЧ.ВариантОтражения = ДополнительныеПараметры.ВариантОтраженияУменьшениеКоличестваБезИнвентаризации;
ИначеЕсли СтрокаТЧ.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
И ЗначениеЗаполнено(ДополнительныеПараметры.ВариантОтраженияУменьшениеВыручкиБезСписания)
И СтрокаТЧ.Сумма = 0 Тогда
СтрокаТЧ.ВариантОтражения = ДополнительныеПараметры.ВариантОтраженияУменьшениеВыручкиБезСписания;
КонецЕсли;
Если СтрокаТЧ.ВариантОтражения = ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.СписатьНаРасходы")
И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СтрокаТЧ,
"СпособОпределенияСебестоимости")
И ЗначениеЗаполнено(СтрокаТЧ.СпособОпределенияСебестоимости) Тогда
СтрокаТЧ.СпособОпределенияСебестоимости = ПредопределенноеЗначение("Перечисление.СпособыОпределенияСебестоимостиВозврата.ПустаяСсылка");
СтрокаТЧ.СпособОпределенияСебестоимостиСтрокой = "";
КонецЕсли;
КонецЕсли;
КонецЦикла;
УстановитьВариантыОтраженияСервер(ДополнительныеПараметры.ИмяТЧ)
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВариантыОтраженияСервер(ИмяТЧ)
Если ИмяТЧ = Элементы.Расхождения.Имя Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Расхождения);
КонецЕсли;
НастроитьОтображениеЭлементовПоИтогамРасхождений();
УстановитьОтметкуНезаполненногоСклада();
КонецПроцедуры
&НаСервере
Процедура ОбработатьВыборВариантаОтраженияРасхождения()
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Расхождения);
НастроитьОтображениеЭлементовПоИтогамРасхождений();
УстановитьОтметкуНезаполненногоСклада();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОснованиеДляПечати()
Если Не ОснованиеИзменено Тогда
СтруктураОснования = Документы.КорректировкаРеализации.СтруктураОснованияДляПечати(Объект);
ЗаполнитьЗначенияСвойств(Объект, СтруктураОснования);
КонецЕсли;
ТаблицаОснованийДляПечати.Загрузить(Документы.КорректировкаРеализации.ТаблицаОснованийДляПечати(Объект));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьЗаказКлиента(ЭтаФорма, ТекущаяСтрока)
Объект = ЭтаФорма.Объект;
Если Не Объект.ПродажаПоЗаказам Тогда
Возврат;
КонецЕсли;
Заказ = Неопределено;
Если ЭтаФорма.ИспользоватьЗаказыВТабличнойЧасти И Объект.Товары.Количество() > 0 Тогда
Для Каждого СтрокаТовары Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(СтрокаТовары.ЗаказКлиента) Тогда
Продолжить;
ИначеЕсли ЗначениеЗаполнено(Заказ) И СтрокаТовары.ЗаказКлиента <> Заказ Тогда
Заказ = Неопределено;
Прервать;
Иначе
Заказ = СтрокаТовары.ЗаказКлиента;
КонецЕсли;
КонецЦикла
ИначеЕсли ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
ПолеЗаказа = "ЗаказКлиента";
Заказ = ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(Объект.ДокументОснование, ПолеЗаказа);
КонецЕсли;
ТекущаяСтрока.ЗаказКлиента = Заказ;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокРеквизитовПечати()
Если ПолучитьФункциональнуюОпцию("ИспользоватьАктыНаПередачуПрав") Тогда
Элементы.РеквизитыПечати.Заголовок =
НСтр("ru = 'Реквизиты печати / Акта на передачу прав'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстДокументыНаОсновании()
ТекстыПоляДокументыНаОсновании.Очистить();
ОбновитьТекстСчетаФактурыВыданные();
ОбновитьТекстДокументыНаОснованииЛокализация();
ОбщегоНазначенияУТКлиентСервер.ОбновитьТекстДокументыНаОсновании(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
Если Объект.Организация = ТекущаяОрганизация Тогда
Возврат;
КонецЕсли;
ТекущаяОрганизация = Объект.Организация;
ОчиститьТабличныеЧастиДокументаПриИзмененииКлючевыхРеквизитовШапки();
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ОбновитьТекстДокументыНаОсновании();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
КонецЕсли;
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчетОрганизации, , Объект.НаправлениеДеятельности);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.ДокументОснование);
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию()
Если РеализацияЧерезКомиссионера Тогда
Объект.КлиентДоговор = КомиссионнаяТорговляСервер.ПолучитьДоговорПоУмолчанию(Объект,
Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииНаСервере()
Если Объект.Контрагент = ТекущийКонтрагент Тогда
Возврат;
КонецЕсли;
ТекущийКонтрагент = Объект.Контрагент;
ОчиститьТабличныеЧастиДокументаПриИзмененииКлючевыхРеквизитовШапки();
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.ГруппаДоговор.Видимость, Объект.Договор);
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ПродажиСервер.ПартнерПриИзменении(Объект);
Объект.БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Объект.Контрагент);
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
ОбновитьТекстДокументыНаОсновании();
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииСервер()
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
Если Объект.Партнер = ТекущийПартнер Тогда
Возврат;
КонецЕсли;
ТекущийПартнер = Объект.Партнер;
ОчиститьТабличныеЧастиДокументаПриИзмененииКлючевыхРеквизитовШапки();
МассивРеквизитов = Новый Массив;
НоменклатураПартнеровСервер.ЗаполнитьНоменклатуруПартнераПоНоменклатуреПриИзмененииПартнера(Объект.Товары, Объект.Партнер);
МассивРеквизитов.Добавить("Партнер");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
Объект.БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Объект.Контрагент);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПродажиСервер.ПартнерПриИзменении(Объект);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.ДокументОснование);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер()
Склад = Объект.Склад;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
Если СкладГруппа Тогда
Элементы.ТоварыГруппаОтправитель.Заголовок = НСтр("ru = 'Отправитель'");
Элементы.РасхожденияГруппаОтправитель.Заголовок = НСтр("ru = 'Отправитель'");
Иначе
Элементы.ТоварыГруппаОтправитель.Заголовок = НСтр("ru = 'Подразделение-отправитель'");
Элементы.РасхожденияГруппаОтправитель.Заголовок = НСтр("ru = 'Подразделение-отправитель'");
КонецЕсли;
Элементы.РасхожденияЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Расхождения, Истина);
Если Не СкладГруппа Тогда
ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач =
ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач(Объект.Склад, Объект.Дата);
Для Каждого СтрокаТЧ Из Объект.Расхождения Цикл
Если ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач Тогда
Если СтрокаТЧ.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки") Тогда
СтрокаТЧ.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации");
ИначеЕсли СтрокаТЧ.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки") Тогда
СтрокаТЧ.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации");
КонецЕсли;
Иначе
Если СтрокаТЧ.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации") Тогда
СтрокаТЧ.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки");
ИначеЕсли СтрокаТЧ.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации") Тогда
СтрокаТЧ.ВариантОтражения =
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки");
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбновитьСлужебныеРеквизитыТабличныхЧастей();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Расхождения);
УстановитьПараметрыВыбораТоварыСклад();
УстановитьОтметкуНезаполненногоСклада();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьИсправляемыйДокумент()
ДатаИсправления = Объект.Дата;
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ДатаИсправления = Неопределено;
КонецЕсли;
ПараметрыСписка = Новый Структура;
ПараметрыСписка.Вставить("ДокументОснование", Объект.ДокументОснование);
ПараметрыСписка.Вставить("ДатаИсправления", ДатаИсправления);
ОткрытьФорму("Документ.КорректировкаРеализации.Форма.ФормаПодбораИсправляемогоДокумента", ПараметрыСписка, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьПредставлениеСебестоимости()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтотОбъект));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Расхождения, СтруктураДействий, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПредставлениеСебестоимостиВСтроке(ТекущаяСтрока)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтотОбъект));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыОпределенияСебестоимости(Форма)
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НалогообложениеНДС", Форма.Объект.НалогообложениеНДС);
СтруктураПараметров.Вставить("ВалютаУправленческогоУчета", Форма.ВалютаУправленческогоУчета);
СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета", Форма.ВалютаРегламентированногоУчета);
СтруктураПараметров.Вставить("ИспользоватьРеглУчет", Форма.ИспользоватьРеглУчет);
Возврат СтруктураПараметров
КонецФункции
&НаСервереБезКонтекста
Функция ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач(Склад, НаДату)
Возврат СкладыСервер.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач(Склад, НаДату);
КонецФункции
&НаСервере
Процедура УстановитьСвязьПараметровВыбораДляЕдиницИзмерений()
НовыйМассив = Новый Массив();
Если НЕ КорректировкаУслугПрочихАктивов Тогда
НоваяСвязь = Новый СвязьПараметраВыбора("Номенклатура", "Элементы.Товары.ТекущиеДанные.Номенклатура");
НовыйМассив.Добавить(НоваяСвязь);
КонецЕсли;
Элементы.ТоварыУпаковка.СвязиПараметровВыбора = новый ФиксированныйМассив(НовыйМассив);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ОбновитьТекстСчетаФактурыВыданные()
ПараметрыРегистрацииВыданныхСФ = Документы.КорректировкаРеализации.ПараметрыРегистрацииСчетовФактурВыданных(Объект);
ПараметрыРегистрацииПолученныхСФ = Документы.КорректировкаРеализации.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
СчетФактураНаОсновании = УчетНДСУП.СчетаФактурыОбщиеНаОсновании(ПараметрыРегистрацииВыданныхСФ, ПараметрыРегистрацииПолученныхСФ);
ТекстДокументыНаОснованииПодвал = ПродажиСервер.СформироватьПредставлениеКомандФормированияСчетаФактурыНаОсновании(Объект.Ссылка, СчетФактураНаОсновании);
ФормированиеФискальныхЧековСервер.ОбновитьГиперссылкуПробитияФискальногоЧека(Объект.Ссылка, ЭтотОбъект, ТекстДокументыНаОснованииПодвал);
ТекстыПоляДокументыНаОсновании.Добавить(ТекстДокументыНаОснованииПодвал);
КонецПроцедуры
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Операция" Тогда
ОперацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НалогообложениеНДС" Тогда
НалогообложениеНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЦенаВключаетНДС" Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатура" Тогда
ТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыХарактеристика" Тогда
ТоварыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСерия" Тогда
ТоварыСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыКоличествоУпаковок" Тогда
ТоварыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыУпаковка" Тогда
ТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыКоличество" Тогда
ТоварыКоличествоПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыВидЦены" Тогда
ТоварыВидЦеныПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыЦена" Тогда
ТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСумма" Тогда
ТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаНДС" Тогда
ТоварыСуммаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСтавкаНДС" Тогда
ТоварыСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСклад" Тогда
ТоварыСкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСписатьНаРасходы" Тогда
ТоварыСписатьНаРасходыПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСтатьяРасходов" Тогда
ТоварыСтатьяРасходовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "РасхожденияСклад" Тогда
РасхожденияСкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "РасхожденияСерия" Тогда
РасхожденияСерияПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "ЗаполнитьПоИсходнымДанным" Тогда
ЗаполнитьПоИсходнымДанным(Команда);
ИначеЕсли Команда.Имя = "ОткрытьПодбор" Тогда
ОткрытьПодбор(Команда);
ИначеЕсли Команда.Имя = "ПодобратьТоварыИзЗаказа" Тогда
ПодобратьТоварыИзЗаказа(Команда);
ИначеЕсли Команда.Имя = "ТоварыРазбитьСтроку" Тогда
ТоварыРазбитьСтроку(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныПоСоглашению" Тогда
ЗаполнитьЦеныПоСоглашению(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен" Тогда
ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьСкладВВыделенныхСтроках" Тогда
ЗаполнитьСкладВВыделенныхСтроках(Команда);
ИначеЕсли Команда.Имя = "УстановитьВариантыОтраженияТовары" Тогда
УстановитьВариантыОтраженияТовары(Команда);
ИначеЕсли Команда.Имя = "РасхожденияРазбитьСтроку" Тогда
РасхожденияРазбитьСтроку(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьРасхождения" Тогда
ЗаполнитьРасхождения(Команда);
ИначеЕсли Команда.Имя = "УстановитьВариантыОтраженияРасхождения" Тогда
УстановитьВариантыОтраженияРасхождения(Команда);
ИначеЕсли Команда.Имя = "РасхожденияЗаполнитьСкладВВыделенныхСтроках" Тогда
РасхожденияЗаполнитьСкладВВыделенныхСтроках(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
Если Элемент.Имя = "Расхождения" Тогда
РасхожденияПередНачаломИзменения(Элемент, Отказ);
ИначеЕсли Элемент.Имя = "Товары" Тогда
ТоварыПередНачаломИзменения(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередУдалением(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ВыполнитьПроверкиПередИзменениемСтатуса()
Перем ЕстьКорректировки;
РеквизитМожноИзменить = Ложь;
ДополнительныеПараметры = Новый Структура;
Оповещение = Новый ОписаниеОповещения(
"РезультатВопросаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено
Или СтруктураДействийКонтрольНеСогласованныхИзменений.ОжидаетсяОповещение Тогда
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
ОчиститьСообщения();
ПроверитьНаличиеКорректировок(Объект.Ссылка, Объект.ДокументОснование, ЕстьКорректировки);
ИсправлениеПослеДатыДокумента = ПроверитьНаличиеИсправленийПослеДатыДокумента(Объект.Ссылка);
Если ЕстьКорректировки Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("ВвестиКорректировку", Нстр("ru='Ввести корректировку'"));
СписокКнопок.Добавить("ОтменитьИзменения", Нстр("ru='Отмена'"));
ПоказатьВопрос(
Оповещение,
НСтр("ru='На основании документа введена корректировка реализации.
|Изменение исходного документа запрещено.'"),
СписокКнопок,
,
"ВвестиКорректировку");
ИначеЕсли ЗначениеЗаполнено(ИсправлениеПослеДатыДокумента) Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("ВвестиКорректировку", Нстр("ru='Ввести корректировку'"));
СписокКнопок.Добавить("ОтменитьИзменения", Нстр("ru='Отмена'"));
ПоказатьВопрос(
Оповещение,
НСтр("ru='Есть исправление позднее даты текущего документа.
|Изменение документа запрещено.'"),
СписокКнопок,
,
"ВвестиКорректировку");
Иначе
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
Возврат РеквизитМожноИзменить;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
ОбщегоНазначенияУТКлиент.ВернутьПредыдущееЗначениеРеквизита(ЭтаФорма, Элемент);
Возврат;
Иначе
ОбщегоНазначенияУТКлиент.СохранитьЗначениеРеквизита(ЭтаФорма, Элемент);
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураДействийКонтрольНеСогласованныхИзменений.ЗначенияРеквизитов[Элемент.Имя], Элемент.ТекущиеДанные);
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
МассивТиповНоменклатуры = Новый Массив;
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", МассивТиповНоменклатуры);
Иначе
ПараметрыОтбора = Неопределено;
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Содержание,Упаковка,КоличествоУпаковок,Количество,ВидЦены,Цена,Склад,
|Подразделение,НоменклатураНабора,ХарактеристикаНабора";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполнитьСтавкуНДС.Дата = ДатаОснования;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьВариантОтраженияКорректировкиРеализации", Объект.ВидКорректировки);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
Если ИспользуетсяКоличествоУпаковок Тогда
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
Иначе
ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПараметрыЗаполненияВидаЦен = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияВидаЦенВСтрокеТЧ("ВидЦены");
ПараметрыЗаполненияВидаЦен.ПараметрыОтбора.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗаполненияВидаЦен.ПараметрыОтбора.ИспользоватьПриПродаже = Истина;
СтруктураДействий.Вставить("ПроверитьЗаполнитьВидЦены", ПараметрыЗаполненияВидаЦен);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеДанные = Новый Массив();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ТекущаяСтрока.ИндексНабора = ?(ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора), 1, 0);
ОбрабатываемыеДанные.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеДанные,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураХарактеристикиНоменклатуры = Новый Структура;
СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураХарактеристикиНоменклатуры);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтотОбъект, "Товары");
ДанныеСкладов = ПолучитьДанныеПоСкладам();
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
ДанныеСклада = ДанныеСкладов.Найти(СтрокаТЧ.Склад);
Если ДанныеСклада <> Неопределено Тогда
СтрокаТЧ.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач = ДанныеСклада.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
КонецЕсли;
КонецЦикла;
ПриИзмененииСкладаВТабличнойЧастиСервер();
РасхожденияАктуальны = Ложь;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаКлиенте
Процедура СерияПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий[ИмяТЧ], ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(ИмяТЧ, Текст = "")
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтотОбъект, ПараметрыУказанияСерий[ИмяТЧ], Текст) Тогда
ТекстИсключения = НСтр("ru = 'Ошибка при попытке указать серии - в этом документе для указания серий не нужен серверный вызов.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ПередЗаписьюВопросЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверятьРаспроведенность = Ложь;
Оповещение = Новый ОписаниеОповещения("ПередЗаписьюПроверитьВозможностьЗаполненияТабличнойЧастиЗавершение",
ЭтотОбъект, ДополнительныеПараметры);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПроверитьВозможностьЗаполненияТабличнойЧастиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат Тогда
ЗаполнитьРасхожденияСервер();
НастроитьОтображениеЭлементовПоИтогамРасхождений();
КонецЕсли;
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаРасхождения;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, ВидЦен);
РасхожденияАктуальны = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РезультатВопросаЗавершение(КодОтвета, ДополнительныеПараметры) Экспорт
Если КодОтвета = "ВвестиКорректировку" Тогда
ОткрытьФорму("Документ.КорректировкаРеализации.ФормаОбъекта", Новый Структура("Основание", Объект.ДокументОснование));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоИсходнымДаннымЗавершение(Результат, ДополнительныеПараметры) Экспорт
ЗаполнитьПоИсходнымДаннымСервер();
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуТЧ(ИмяТЧ)
ТаблицаФормы = Элементы[ИмяТЧ];
ДанныеТаблицы = Объект[ИмяТЧ];
Если ИмяТЧ = Элементы.Расхождения.Имя Тогда
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ДопустимыеВарианты = Новый Массив;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ДопустимыеВарианты.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУчестьПриИнвентаризации"));
ДопустимыеВарианты.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УменьшитьРеализациюУвеличитьСкладскиеОстатки"));
ДопустимыеВарианты.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУчестьПриИнвентаризации"));
ДопустимыеВарианты.Добавить(
ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.УвеличитьРеализациюУменьшитьСкладскиеОстатки"));
ИмяПоляБазовыйСтатус = "СтатусУказанияСерийПереданныхТоваров";
ИмяПоляКорСтатус = "СтатусУказанияСерийНаСкладах";
Иначе
ДопустимыеВарианты.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОтраженияКорректировокРеализаций.ВернутьВПуть"));
ИмяПоляБазовыйСтатус = "СтатусУказанияСерийНаСкладах";
ИмяПоляКорСтатус = "СтатусУказанияСерийПереданныхТоваров";
КонецЕсли;
Если Не (ТекущиеДанные[ИмяПоляКорСтатус] > 0
И ТекущиеДанные[ИмяПоляБазовыйСтатус] = 0
И ДопустимыеВарианты.Найти(ТекущиеДанные.ВариантОтражения) <> Неопределено) Тогда
ТекстПредупреждения = НСтр("ru='Невозможно разбить строку.
|Действие допустимо для строк, в которых доступно указание серии.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПараметрыРазбиенияСтроки = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
ПараметрыРазбиенияСтроки.ИмяПоляКоличество = ?(Не ИспользуетсяКоличествоУпаковок,"Количество","КоличествоУпаковок");
Если ИмяТЧ = Элементы.Расхождения.Имя Тогда
ПараметрыРазбиенияСтроки.РазрешитьНулевоеКоличество = Ложь;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ИмяТЧ);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение, ПараметрыРазбиенияСтроки);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ИмяТЧ) Экспорт
Если НоваяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ИмяТЧ = Элементы.Товары.Имя Тогда
РасхожденияАктуальны = Ложь;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
Если ИспользуетсяКоличествоУпаковок Тогда
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
Иначе
ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект);
КонецЕсли;
Иначе
Если ИспользуетсяКоличествоУпаковок Тогда
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Иначе
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
КонецЕсли;
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = Элементы.Расхождения.Имя Тогда
ИсходноеКоличество = ТекущаяСтрока.КоличествоУпаковок + НоваяСтрока.КоличествоУпаковок;
Если ИсходноеКоличество <> 0 Тогда
ИменаРеквизитов = "Сумма, СуммаНДС, СуммаСНДС";
КоллекцияПолей = Новый Структура(ИменаРеквизитов);
Для Каждого КлючИЗначение Из КоллекцияПолей Цикл
ТекущаяСтрока[КлючИЗначение.Ключ] =
ТекущаяСтрока.КоличествоУпаковок
* ТекущаяСтрока[КлючИЗначение.Ключ]
/ ИсходноеКоличество;
НоваяСтрока[КлючИЗначение.Ключ] = НоваяСтрока[КлючИЗначение.Ключ] - ТекущаяСтрока[КлючИЗначение.Ключ];
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьРасхожденияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ЗаполнитьРасхожденияСервер();
НастроитьОтображениеЭлементовПоИтогамРасхождений();
РассчитатьИтоговыеПоказателиРеализации(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоАктуПриемкиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ЗаполнитьПоАктуПриемкиСервер();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
Элементы.РасхожденияСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ДанныеВыбораСкладов = ДанныеВыбораСкладов(Объект.Склад);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ТоварыСклад, "Ссылка", ДанныеВыбораСкладов);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.РасхожденияСклад, "Ссылка", ДанныеВыбораСкладов);
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораНоменклатура()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
Элементы.ТоварыНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
Элементы.РасхожденияНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
РазрешенныеТипыНоменклатуры = Новый Массив;
РазрешенныеТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(
Элементы.ТоварыНоменклатура,
"Отбор.ТипНоменклатуры",
РазрешенныеТипыНоменклатуры);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(
Элементы.РасхожденияНоменклатура,
"Отбор.ТипНоменклатуры",
РазрешенныеТипыНоменклатуры);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьОтметкуНезаполненногоСклада()
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
Возврат;
КонецЕсли;
АвтоОтметкаНезаполненногоСклада = Ложь;
ВариантыОтраженийСОбязательнымСкладом = Документы.КорректировкаРеализации.ВариантыОтраженийСОбязательнымСкладом();
Если Объект.ВидКорректировки =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияПерепоставленногоТовара")
Или Объект.ВидКорректировки =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара") Тогда
ВариантыОтражения = Объект.Товары.Выгрузить(, "ВариантОтражения");
ВариантыОтражения.Свернуть("ВариантОтражения");
Для Каждого СтрокаТаблицы Из ВариантыОтражения Цикл
Если ВариантыОтраженийСОбязательнымСкладом.НайтиПоЗначению(СтрокаТаблицы.ВариантОтражения) <>
Неопределено Тогда
АвтоОтметкаНезаполненногоСклада = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
ВариантыОтражения = Объект.Расхождения.Выгрузить(, "ВариантОтражения");
ВариантыОтражения.Свернуть("ВариантОтражения");
Для Каждого СтрокаТаблицы Из ВариантыОтражения Цикл
Если ВариантыОтраженийСОбязательнымСкладом.НайтиПоЗначению(СтрокаТаблицы.ВариантОтражения) <>
Неопределено Тогда
АвтоОтметкаНезаполненногоСклада = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Элементы.Склад.АвтоОтметкаНезаполненного = АвтоОтметкаНезаполненногоСклада;
Если Не ЗначениеЗаполнено(Объект.Склад) Тогда
Элементы.Склад.ОтметкаНезаполненного = АвтоОтметкаНезаполненногоСклада;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьХозяйственнуюОперациюДокументаОснования()
Операция = Документы.КорректировкаРеализации.ХозяйственнаяОперацияДокументаОснования(Объект.ДокументОснование);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаСервере
Функция ПараметрыРегистрацииСчетовФактур()
Результат = Новый Структура;
Результат.Вставить("Выданные", Документы.КорректировкаРеализации.ПараметрыРегистрацииСчетовФактурВыданных(Объект));
Результат.Вставить("Полученные", Документы.КорректировкаРеализации.ПараметрыРегистрацииСчетовФактурПолученных(Объект));
Возврат Результат;
КонецФункции
&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаКлиенте
Функция ИсправляемыйДокумент()
ИсправляемыйДокумент = Неопределено;
Если ЗначениеЗаполнено(Объект.ИсправляемыйДокумент) Тогда
ИсправляемыйДокумент = Объект.ИсправляемыйДокумент;
ИначеЕсли Объект.Проведен Тогда
ИсправляемыйДокумент = ИсправлениеДокументовВызовСервера.ИсправляемыйДокумент(Объект.Ссылка);
Иначе
ИсправляемыйДокумент = Объект.ДокументОснование;
КонецЕсли;
Возврат ИсправляемыйДокумент;
КонецФункции
&НаСервере
Процедура ОбновитьПредставлениеЭлементыИсправляемогоДокумента()
ПредставлениеИсправляемогоДокумента = ИсправлениеДокументов.ПредставлениеИсправляемогоДокумента(Объект.ИсправляемыйДокумент);
Если НЕ ЗначениеЗаполнено(ПредставлениеИсправляемогоДокумента) Тогда
ПредставлениеИсправляемогоДокумента = Нстр("ru='Выберите исправляемый документ'");
КонецЕсли;
НастроитьЭлементыИсправляемогоДокумента();
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыИсправляемогоДокумента()
ОтображаетсяИсправляемыйДокумент = Элементы.ГруппаИсправляемыйДокумент.Видимость;
Если НЕ ОтображаетсяИсправляемыйДокумент Тогда
Возврат;
КонецЕсли;
ЗаполненИсправляемыйДокумент = ЗначениеЗаполнено(Объект.ИсправляемыйДокумент);
ШиринаЭлементаИсправляемыйДокумент = 0;
ЦветТекстаИзменитьИсправляемыйДокумент = Новый Цвет;
Если ЗаполненИсправляемыйДокумент Тогда
ШиринаЭлементаИсправляемыйДокумент = 15;
Иначе
ШиринаЭлементаИсправляемыйДокумент = 22;
ЦветТекстаИзменитьИсправляемыйДокумент = ЦветаСтиля.ЦветОсобогоТекста;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПредставлениеИсправляемогоДокумента",
"Ширина", ШиринаЭлементаИсправляемыйДокумент);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПредставлениеИсправляемогоДокумента",
"ЦветТекста", ЦветТекстаИзменитьИсправляемыйДокумент);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИзменитьИсправляемыйДокумент",
"Видимость", ЗаполненИсправляемыйДокумент);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаПодбораИсправляемогоДокумента(Знач ВыбранноеЗначение)
Если ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Модифицированность = Истина;
Объект.ИсправляемыйДокумент = ВыбранноеЗначение;
КонецЕсли;
ОбновитьПредставлениеЭлементыИсправляемогоДокумента();
КонецПроцедуры
#Область КорректировкаЗадолженности
&НаСервере
Процедура ДобавитьДокументРеализацииВТаблицуКорректировкаЗадолженности(ДокументРеализации)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СуммыДокументовВВалютахУчета.Регистратор КАК ДокументРеализации,
| СуммыДокументовВВалютахУчета.СтавкаНДС КАК СтавкаНДС,
| СуммыДокументовВВалютахУчета.ОбъектРасчетов КАК ОбъектРасчетов,
| СУММА(СуммыДокументовВВалютахУчета.СуммаНДС) КАК СуммаНДС,
| СУММА(СуммыДокументовВВалютахУчета.СуммаБезНДС + СуммыДокументовВВалютахУчета.СуммаНДС) КАК СуммаСНДС
|ИЗ
| РегистрСведений.СуммыДокументовВВалютахУчета КАК СуммыДокументовВВалютахУчета
|ГДЕ
| СуммыДокументовВВалютахУчета.Регистратор В (&Регистратор)
| И СуммыДокументовВВалютахУчета.ТипРасчетов = &ТипРасчетов
|СГРУППИРОВАТЬ ПО
| СуммыДокументовВВалютахУчета.Регистратор,
| СуммыДокументовВВалютахУчета.СтавкаНДС,
| СуммыДокументовВВалютахУчета.ОбъектРасчетов
|";
Запрос.УстановитьПараметр("Регистратор", ДокументРеализации);
Запрос.УстановитьПараметр("ТипРасчетов", Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом);
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
УстановитьПривилегированныйРежим(Ложь);
Пока Выборка.Следующий() Цикл
Отбор = Новый Структура();
Отбор.Вставить("ДокументРеализации", Выборка.ДокументРеализации);
Отбор.Вставить("ОбъектРасчетов", Выборка.ОбъектРасчетов);
Отбор.Вставить("СтавкаНДС", Выборка.СтавкаНДС);
РезультатПоиска = Объект.КорректировкаЗадолженности.НайтиСтроки(Отбор);
Если РезультатПоиска.Количество() > 0 Тогда
СтрокаТаблицы = РезультатПоиска[0];
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
Иначе
НоваяСтрока = Объект.КорректировкаЗадолженности.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВводПричиныКорректировкиЗадолженностиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат;
КонецЕсли;
Для каждого ВыделеннаяСтрока Из Элементы.КорректировкаЗадолженности.ВыделенныеСтроки Цикл
ТекущаяСтрока = Объект.КорректировкаЗадолженности.НайтиПоИдентификатору(ВыделеннаяСтрока);
ТекущаяСтрока.ПричинаКорректировки = Результат;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВводСуммыКорректировкиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат;
КонецЕсли;
МассивКоэффициентов = Новый Массив;
Для каждого ТекущаяСтрока Из Объект.КорректировкаЗадолженности Цикл
МассивКоэффициентов.Добавить(ТекущаяСтрока.СуммаСНДС);
КонецЦикла;
РезультатРаспределения = ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам(Результат, МассивКоэффициентов);
Индекс = 0;
Для каждого ТекущаяСтрока Из Объект.КорректировкаЗадолженности Цикл
ТекущаяСтрока.СуммаКорректировки = РезультатРаспределения[Индекс];
ТекущаяСтрока.СуммаНДСКорректировки =
ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(
ТекущаяСтрока.СуммаКорректировки,
ТекущаяСтрока.СтавкаНДС,
Истина,
Объект.НалогообложениеНДС);
ТекущаяСтрока.СуммаВзаиморасчетов = 0;
Индекс = Индекс + 1;
КонецЦикла;
НастроитьОтображениеЭлементовПоИтогамРасхождений();
КонецПроцедуры
&НаКлиенте
Процедура ВводПроцентаКорректировкиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Для каждого ИдентификаторСтроки Из Элементы.КорректировкаЗадолженности.ВыделенныеСтроки Цикл
ТекущаяСтрока = Объект.КорректировкаЗадолженности.НайтиПоИдентификатору(ИдентификаторСтроки);
ТекущаяСтрока.СуммаКорректировки = ТекущаяСтрока.СуммаСНДС * Результат / 100;
ТекущаяСтрока.СуммаНДСКорректировки =
ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(
ТекущаяСтрока.СуммаКорректировки,
ТекущаяСтрока.СтавкаНДС,
Истина,
Объект.НалогообложениеНДС);
ТекущаяСтрока.СуммаВзаиморасчетов = 0;
КонецЦикла;
НастроитьОтображениеЭлементовПоИтогамРасхождений();
КонецПроцедуры
&НаСервере
Процедура ОчиститьТабличныеЧастиДокументаПриИзмененииКлючевыхРеквизитовШапки()
Объект.ДокументОснование = Неопределено;
Объект.Товары.Очистить();
Объект.Расхождения.Очистить();
Объект.ШтрихкодыУпаковок.Очистить();
Объект.КорректировкаЗадолженности.Очистить();
НастроитьОтображениеЭлементовПоИтогамРасхождений();
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ПодборТовараИУслугИзЗаказа()
РеквизитыДокументаОснования = РеквизитыДокументаОснования(Объект.ДокументОснование);
МассивКодовСтрок = Новый Массив;
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если СтрокаТЧ.КодСтроки <> 0 И ЗначениеЗаполнено(СтрокаТЧ.ЗаказКлиента) Тогда
МассивКодовСтрок.Добавить(Новый Структура("КодСтроки,ЗаказКлиента", СтрокаТЧ.КодСтроки, СтрокаТЧ.ЗаказКлиента));
КонецЕсли;
КонецЦикла;
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("ВалютаДокумента", Объект.Валюта);
ПараметрыПодбора.Вставить("Документ", Объект.Ссылка);
ПараметрыПодбора.Вставить("ДокументОснование", Объект.ДокументОснование);
ПараметрыПодбора.Вставить("Склад", Объект.Склад);
ПараметрыПодбора.Вставить("МассивКодовСтрок", МассивКодовСтрок);
ПараметрыПодбора.Вставить("Партнер", Объект.Партнер);
ПараметрыПодбора.Вставить("Сделка", Объект.Сделка);
ПараметрыПодбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыПодбора.Вставить("Договор", Объект.Договор);
ПараметрыПодбора.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыПодбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыПодбора.Вставить("ВалютаВзаиморасчетов", Объект.ВалютаВзаиморасчетов);
ПараметрыПодбора.Вставить("НалогообложениеНДС", РеквизитыДокументаОснования.НалогообложениеНДС);
ПараметрыПодбора.Вставить("ЦенаВключаетНДС", РеквизитыДокументаОснования.ЦенаВключаетНДС);
ПараметрыПодбора.Вставить("Дата", Объект.Дата);
ОткрытьФорму("Документ.КорректировкаРеализации.Форма.ФормаПодбораТоваровИзЗаказа",
ПараметрыПодбора,
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Локализация
&НаКлиенте
Процедура ОбработкаОповещенияЛокализация(ИмяСобытия, Параметр, Источник)
Если ТранспортнаяНакладнаяКлиент.ЭтоОповещениеЗаписиТранспортнойНакладной(ЭтотОбъект, ИмяСобытия, Параметр, Источник) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Возврат;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстДокументыНаОснованииЛокализация()
Если Не РеализацияЧерезКомиссионера Тогда
ТекстТТН = Документы.ТранспортнаяНакладная.ТекстТТН(ЭтотОбъект);
ТекстыПоляДокументыНаОсновании.Добавить(ТекстТТН);
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылкиЛокализация(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ТранспортнаяНакладнаяКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
#КонецОбласти