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