#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
УстановитьОграничениеТипаДокументРеализации();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыДобавить1", "Видимость", Ложь);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
АвтоЗаголовок = Ложь;
СформироватьЗависимыеОтТипаОснованияЗаголовки();
Объект.Автор = Пользователи.ТекущийПользователь();
КонецЕсли;
Если Параметры.ПерезаполнитьПоПриемке Тогда
ЗаполнитьПоПриемкеСервер();
КонецЕсли;
ДоговорДоИзменения = Объект.Договор;
ПараметрыВыбораСтатейИАналитик = Документы.АктОРасхожденияхПослеПриемки.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
Если РасхожденияКлиентСервер.ТипОснованияВозвратОтКомиссионера(Объект.ТипОснованияАктаОРасхождении) Тогда
КомиссионныеПродажи25 = Истина;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьЗаголовокНомерГТД(Элементы, "ТоварыНомерГТД");
УстановитьВидимостьКомандыЗаполнитьСтавкуНДС();
КонецПроцедуры
&НаСервере
Процедура СформироватьЗависимыеОтТипаОснованияЗаголовки()
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг Тогда
Заголовок = НСтр("ru = 'Акт о расхождениях после поступления (создание)'");
Элементы.Договор.Подсказка = НСтр("ru = 'Договор, в рамках которого оформлен акт о расхождениях после приемки'");
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента Тогда
Заголовок = НСтр("ru = 'Акт о расхождениях после возврата от клиента (создание)'");
Элементы.Договор.Подсказка = НСтр("ru = 'Договор, в рамках которого оформлен возврат'");
Элементы.Соглашение.Подсказка = НСтр("ru = 'Соглашение, по которому был реализован товар.'");
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение Тогда
Заголовок = НСтр("ru = 'Акт о расхождениях после приемки товаров на хранение (создание)'");
Элементы.Договор.Подсказка = НСтр("ru = 'Договор, в рамках которого оформлена приемка'");
Элементы.Соглашение.Подсказка = НСтр("ru = 'Соглашение, по которому был принят товар.'");
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера Тогда
Заголовок = НСтр("ru = 'Акт о расхождениях после поступления от комиссионера (создание)'");
ИначеЕсли РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(Объект.ТипОснованияАктаОРасхождении) Тогда
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействийПоТипуОснованияАкта(Объект.ТипОснованияАктаОРасхождении);
Заголовок = Обработчик.ЗаголовокФормыСозданияАкта();
Элементы.Договор.Подсказка = Обработчик.ПодсказкаДоговораАкта();
Элементы.Соглашение.Подсказка = Обработчик.ПодсказкаСоглашенияАкта();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОтключитьОтметкуНезаполненного();
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.РаботаСАктамиРасхождений.Форма.РеквизитыПечати" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение,,"ПриемкаТоваров");
Объект.ПриемкаТоваров.Очистить();
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ВыбранноеЗначение.ПриемкаТоваров, Объект.ПриемкаТоваров);
КонецЕсли;
Модифицированность = Истина;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма"
Или ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение);
ИначеЕсли ЗакупкиКлиент.ЭтоПодборНомераГТД(ИсточникВыбора) Тогда
ОбработатьПодборНомераГТД(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.РаботаСАктамиРасхождений.Форма.ФормаПодбораДокументовОснований" Тогда
ОбработатьПодборДокументовОснований(ВыбранноеЗначение, ИсточникВыбора.ВариантПереноса);
КонецЕсли;
ОтключитьОтметкуНезаполненного();
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
КонецЕсли;
Если ИмяСобытия = "Запись_СоглашенияСПоставщиками"
И (Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг")
Или Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение")) Тогда
РасхожденияКлиент.УстановитьДоступностьСоглашенийСПоставщиком(ЭтотОбъект);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
Если ЗакупкиКлиент.ЭтоУказаниеНомераГТД(Источник) Тогда
ЗакупкиКлиент.ОбработатьУказаниеНомераГТД(ЭтотОбъект, НовыйОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
ПараметрыВыбораСтатейИАналитик = Документы.АктОРасхожденияхПослеПриемки.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
РасхожденияСервер.УправлениеАвтоЗаголовкомПослеЗаписи(ЭтотОбъект);
РасхожденияСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(Объект);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
РасхожденияСервер.ФормированиеНадписиДокументыОснование(ЭтотОбъект);
РасхожденияСервер.УправлениеВидимостьюНДС(ЭтотОбъект);
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
РасхожденияСервер.ЗаполнитьЗависимыеРеквизитыТоваровРасхожденияПослеПриемки(Объект);
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг Тогда
ЗаполнитьРеквизитыМногооборотнойТары();
КонецЕсли;
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_АктОРасхожденияхПослеПриемки", ПараметрыЗаписи, Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииНаСервере();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
КонтактноеЛицоПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента")
Или Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтХранителя")
Или Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера") Тогда
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
Если Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтХранителя") Тогда
ПараметрыВыбораСоглашения.Вставить("ХозяйственнаяОперация", ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи"));
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера") Тогда
ПараметрыВыбораСоглашения.Вставить("ХозяйственнаяОперация", ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию"));
ПараметрыВыбораСоглашения.КомиссионныеПродажи25 = Истина;
КонецЕсли;
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
Иначе
СтруктураДополнительногоОтбора = Новый Структура;
Если Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение") Тогда
СтруктураДополнительногоОтбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
КонецЕсли;
ЗакупкиКлиент.НачалоВыбораСоглашенияСПоставщиком(Элемент, СтандартнаяОбработка, Объект.Партнер, Объект.Соглашение,
Объект.Дата, СтруктураДополнительногоОтбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Соглашение) Тогда
КомиссионерНеВедетУчетПоРНПТ =
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера");
Возврат;
КонецЕсли;
ПриИзмененииСоглашенияСервер();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ПриИзмененииХозяйственнойОперацииСервер();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
ПриИзмененииНалогообложенияНДССервер();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ДокументыОснованиеПредставлениеНажатие(Элемент, СтандартнаяОбработка)
РасхожденияКлиент.ДокументыОснованиеПредставлениеНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаОсновное Тогда
СформироватьСпособОтраженияРасхожденией();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецЕсли;
Если ТекущаяСтраница.Имя = "СтраницаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СпособОтраженияРасхожденийИзменениеДокументаПриИзменении(Элемент)
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура СпособОтраженияРасхожденийКорректировкаПоступленияПриИзменении(Элемент)
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ОформитьДокументыНажатие(Элемент)
РасхожденияКлиент.ОформитьДокументыНажатие(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииНаСервере();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ЗаполнитьНалогообложениеНДСНаСервере();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг") Тогда
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
КонецЕсли;
ВыполнитьДействияПриИзмененииНоменклатуры(ТекущаяСтрока, СтруктураДействий);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(Элемент.ПараметрыВыбора, ТекущаяСтрока);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ВыполнитьДействияПриИзмененииНоменклатуры(ТекущаяСтрока, Новый Структура);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьДействияПриИзмененииНоменклатуры(ТекущаяСтрока, СтруктураДействий)
ЗаполнитьПризнакВедетсяУчетПоГТД = Новый Структура("Номенклатура", "ВедетсяУчетПоГТД");
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг")
Или Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение") Тогда
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
КонецЕсли;
Если Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", ЗаполнитьПризнакВедетсяУчетПоГТД);
СтруктураДействий.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ИмяФормы, "Товары"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если НЕ ЗначениеЗаполнено(ТекущаяСтрока.ДокументОснование) Тогда
СамообслуживаниеКлиентСервер.ЗаполнитьДокументОснованиеВСтроке(ТекущаяСтрока, ДокументыОснования, Ложь);
КонецЕсли;
Если НЕ ТекущаяСтрока.ВедетсяУчетПоГТД Тогда
ТекущаяСтрока.НомерГТД = Неопределено;
ТекущаяСтрока.СтранаПроисхождения = Неопределено;
КонецЕсли;
Если ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
Или ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
Если ТекущаяСтрока.Действие = ПредопределенноеЗначение("Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОформитьПерепоставленноеИВернуть") Тогда
ТекущаяСтрока.Действие = ПредопределенноеЗначение("Перечисление.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
Если ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
ТекущаяСтрока.СписатьНаРасходы = Истина;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
ИначеЕсли ТекущаяСтрока.ТипНоменклатуры <> ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа") Тогда
ТекущаяСтрока.СписатьНаРасходы = Ложь;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
КонецЕсли;
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг")
Или Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение") Тогда
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
КонецЕсли;
Если Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
РасхожденияКлиент.ТоварыКоличествоУпаковокПриИзменении(ЭтотОбъект, КэшированныеЗначения);
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
РасхожденияКлиент.ТоварыУпаковкаПриИзменении(ЭтотОбъект, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Если Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
Иначе
СтруктураДействий.Вставить("ПересчитатьСумму");
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
РасхожденияКлиент.ТоварыЦенаПриИзменении(ЭтотОбъект, Элемент, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
РасхожденияКлиент.ТоварыСуммаПриИзменении(ЭтотОбъект, Элемент, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
РасхожденияКлиент.ТоварыСуммаНДСПриИзменении(ЭтотОбъект, Элемент, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
РасхожденияКлиент.ТоварыСтавкаНДСПриИзменении(ЭтотОбъект, Элемент, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
РасхожденияКлиент.ТоварыПередНачаломДобавления(ЭтотОбъект, Элемент, Отказ, Копирование, КэшированныеЗначения);
Если Копирование Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий, Копирование);
ОбновитьСтатусыУказанияСерийКлиент(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущиеДанные, "Объект.Товары");
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ОбновитьСтатусыУказанияСерийКлиент(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСтатусыУказанияСерийКлиент(Элемент)
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий) Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Элементы.Товары.ТекущаяСтрока, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
РасхожденияКлиент.ТоварыПередУдалением(ТекущиеДанные, Отказ, Ложь);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Истина) Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
РасхожденияКлиент.ТоварыПослеУдаления(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Если Поле = Элементы.ТоварыЗаказПоставщику Тогда
Если ЗначениеЗаполнено(ТекущаяСтрока.ЗаказПоставщику) И ТекущаяСтрока.ЗаполненоПоОснованию Тогда
ПоказатьЗначение(Неопределено, ТекущаяСтрока.ЗаказПоставщику);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыДокументОснование Тогда
Если ЗначениеЗаполнено(ТекущаяСтрока.ДокументОснование) И ТекущаяСтрока.ЗаполненоПоОснованию Тогда
ПоказатьЗначение(Неопределено, ТекущаяСтрока.ДокументОснование);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыСтатусУказанияСерий
Или Поле = Элементы.ТоварыСерия
Или (Поле = Элементы.ТоварыКоличествоУпаковок
И НоменклатураКлиентСервер.ВЭтомСтатусеСерииУказываютсяВТЧСерии(ТекущаяСтрока.СтатусУказанияСерий, ПараметрыУказанияСерий))
И ПравоНаРедактирование Тогда
ОткрытьПодборСерий();
ИначеЕсли Поле = Элементы.ТоварыЕстьКомментарийМенеджера И ПравоНаРедактирование Тогда
КомментарийМенеджераНачалоВыбора();
ИначеЕсли Поле = Элементы.ТоварыЕстьКомментарийПоставщика И ПравоНаРедактирование Тогда
КомментарийПоставщикаНачалоВыбора();
ИначеЕсли Поле = Элементы.ТоварыСделка И ЗначениеЗаполнено(ТекущаяСтрока.Сделка) Тогда
ПоказатьЗначение(, ТекущаяСтрока.Сделка);
ИначеЕсли Поле = Элементы.ТоварыДействие И ПравоНаРедактирование Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элементы.Товары, КэшированныеЗначения, ПараметрыУказанияСерий);
РасхожденияКлиент.ТоварыДействиеНачалоВыбора(
Элементы.Товары.ТекущиеДанные,
Объект,
ЭтотОбъект,
Объект.ТипОснованияАктаОРасхождении,
ПоказыватьПояснение);
Иначе
СобытияФормКлиент.ПриВыбореЭлемента(ЭтотОбъект, Элемент, ТекущаяСтрока, Поле, СтандартнаяОбработка);
Если СтандартнаяОбработка
И ПравоНаРедактирование
И ТекущаяСтрока.ЗаполненоПоОснованию
И ТекущаяСтрока.КоличествоУпаковок = ТекущаяСтрока.КоличествоУпаковокПоДокументу
И (Поле <> Элементы.ТоварыКоличествоУпаковок И Поле <> Элементы.ТоварыДействие
И Поле <> Элементы.ТоварыНомерПаспорта) Тогда
РасхожденияКлиент.ПоказатьПредупреждениеДляЗаполненныхНаОснованииСтрок();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
СобытияФормКлиент.ПриАктивизацииСтроки(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыДокументОснованиеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекущиеДанные.ДокументОснование) Тогда
ТекущиеДанные.Склад = ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка");
ТекущиеДанные.ЗаказПоставщику = ПредопределенноеЗначение("Документ.ЗаказПоставщику.ПустаяСсылка");
Возврат;
КонецЕсли;
НайденныеСтроки = ДокументыОснования.НайтиСтроки(Новый Структура("Реализация", ТекущиеДанные.ДокументОснование));
Если НайденныеСтроки.Количество() = 0 Тогда
ТекущиеДанные.Склад = ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка");
ТекущиеДанные.ЗаказПоставщику = ПредопределенноеЗначение("Документ.ЗаказПоставщику.ПустаяСсылка");
Возврат;
КонецЕсли;
НайденнаяСтрока = НайденныеСтроки[0];
Если ЗначениеЗаполнено(ТекущиеДанные.ЗаказПоставщику) Тогда
Если НайденнаяСтрока.ЗаказыОснования.НайтиПоЗначению(ТекущиеДанные.ЗаказПоставщику) = Неопределено Тогда
ТекущиеДанные.ЗаказПоставщику = ПредопределенноеЗначение("Документ.ЗаказПоставщику.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущиеДанные.Склад) Тогда
Если НайденнаяСтрока.СкладыОснования.НайтиПоЗначению(ТекущиеДанные.Склад) = Неопределено Тогда
ТекущиеДанные.Склад = ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
СамообслуживаниеКлиентСервер.УстановитьПризнакДокументОснованиеПоЗаказу(ТекущиеДанные, НайденнаяСтрока, Ложь);
СамообслуживаниеКлиентСервер.ЗаполнитьЗаказИСкладВСтроке(ТекущиеДанные, ДокументыОснования, Ложь);
РасхожденияКлиентСервер.ЗаполнитьСделкуВСтроке(ТекущиеДанные, ЗаказыСделки);
ЗаполнитьРеквизитыМногооборотнойТарыВСтроке(Объект.ТипОснованияАктаОРасхождении, ТекущиеДанные, НайденнаяСтрока);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущиеДанные.Склад, ПараметрыУказанияСерий));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат;
КонецЕсли;
Элементы.ТоварыНомерПаспорта.ТолькоПросмотр = (НЕ Элемент.ТекущийЭлемент.Имя = "ТоварыНомерПаспорта");
Элементы.ТоварыСертификат.ТолькоПросмотр = (НЕ Элемент.ТекущийЭлемент.Имя = "ТоварыСертификат");
Если Элемент.ТекущийЭлемент.Имя = "ТоварыЗаказПоставщику" Тогда
Если ТекущиеДанные.ЗаполненоПоОснованию Тогда
Возврат;
КонецЕсли;
Элементы.ТоварыЗаказПоставщику.СписокВыбора.Очистить();
Если НЕ ЗначениеЗаполнено(ТекущиеДанные.ДокументОснование) Тогда
Возврат;
КонецЕсли;
НайденныеСтроки = ДокументыОснования.НайтиСтроки(Новый Структура("Реализация", ТекущиеДанные.ДокументОснование));
Если НайденныеСтроки.Количество() > 0 Тогда
Элементы.ТоварыЗаказПоставщику.СписокВыбора.ЗагрузитьЗначения(
НайденныеСтроки[0].ЗаказыОснования.ВыгрузитьЗначения());
КонецЕсли;
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыСклад" Тогда
Если ТекущиеДанные.ЗаполненоПоОснованию Тогда
Возврат;
КонецЕсли;
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
Если НЕ ЗначениеЗаполнено(ТекущиеДанные.ДокументОснование) Тогда
Возврат;
КонецЕсли;
НайденныеСтроки = ДокументыОснования.НайтиСтроки(Новый Структура("Реализация", ТекущиеДанные.ДокументОснование));
Если НайденныеСтроки.Количество() > 0 Тогда
Элементы.ТоварыСклад.СписокВыбора.ЗагрузитьЗначения(НайденныеСтроки[0].СкладыОснования.ВыгрузитьЗначения());
КонецЕсли;
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыСумма" Тогда
Элементы.ТоварыСумма.ТолькоПросмотр = НЕ ТекущиеДанные.ЕстьРасхождения;
Элементы.ТоварыСуммаНДС.ТолькоПросмотр = НЕ ТекущиеДанные.ЕстьРасхождения;
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНоменклатураПартнера" Тогда
НоменклатураПартнеровКлиент.ЗаполнитьСписокВыбораНоменклатурыПартнера(
Объект.Партнер, ТекущиеДанные, Элементы.ТоварыНоменклатураПартнера.СписокВыбора);
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(
Элементы.ТоварыНоменклатураПартнера.ПараметрыВыбора, ТекущиеДанные);
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНомерГТД" Тогда
ЗакупкиКлиент.ЗаполнитьСписокВыбораНомеровГТД(
Элементы.Товары.ТекущиеДанные,
Элементы.ТоварыНомерГТД.СписокВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКомментарийМенеджераПодвалПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.ЕстьКомментарийМенеджера = Не ПустаяСтрока(ТекущиеДанные.КомментарийМенеджера);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКомментарийМенеджераПодвалНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
КомментарийМенеджераНачалоВыбора();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКомментарийПоставщикаПодвалНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
КомментарийПоставщикаНачалоВыбора();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКомментарийПоставщикаПодвалПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.ЕстьКомментарийПоставщика = Не ПустаяСтрока(ТекущиеДанные.КомментарийПоставщика);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСписатьНаРасходыПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущиеДанные, "Объект.Товары");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтрокаТаблицы = Элементы.Товары.ТекущиеДанные;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, ВыбранноеЗначение);
СтандартнаяОбработка = Ложь;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнения = Новый Структура("НомерГТД", ТекущиеДанные.НомерГТД);
Действия = Новый Структура;
Действия.Вставить("ЗаполнитьСтрануПроисхожденияДляНомераГТД", ПараметрыЗаполнения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, Действия, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДСоздание(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ЗакупкиКлиент.ДополнительныеПараметрыСозданияНомераГТД();
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Объект);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект);
ДополнительныеПараметры.ВалютаДокумента = Объект.Валюта;
ПараметрыСоздания = ЗакупкиКлиент.ПараметрыСозданияНомераГТД(ТекущиеДанные,
Элемент.ТекстРедактирования,
ДополнительныеПараметры);
ЗакупкиКлиент.ОткрытьФормуСозданияНомераГТД(ЭтотОбъект, ПараметрыСоздания);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоОснованиямВыполнить(Команда)
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ТабличнаяЧасть = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьПоОснованиямВыполнитьЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтотОбъект, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечати(Команда)
ОткрытьФорму("Обработка.РаботаСАктамиРасхождений.Форма.РеквизитыПечати",
Новый Структура("ДокументОбъект", Объект),
ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьДокументыОснования(Команда)
РасхожденияКлиент.ИзменитьДокументыОснования(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.Заголовок = РасхожденияКлиент.ТекстЗаголовкаЗагрузкиИзВнешнихФайлов();
ПараметрыЗагрузки.ДопПояснениеПриЗагрузке = РасхожденияКлиент.ТекстДопПоясненияПриЗагрузкеИзВнешнихФайлов();
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ПересчитыватьСуммы = Ложь;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию")
Или НЕ РасхожденияКлиентСервер.ТипОснованияРеализацияТоваровУслуг(Объект.ТипОснованияАктаОРасхождении) Тогда
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодбор(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.АктОРасхожденияхПослеПриемки.ФормаДокумента.Команда.ОткрытьПодбор");
РасхожденияКлиент.ОткрытьПодбор(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ТолькоРасхожденияВыполнить(Команда)
РасхожденияКлиент.ТолькоРасхожденияВыполнить(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьДействие(Команда)
РасхожденияКлиент.ИзменитьДействиеВыделенныхСтрок(
Объект,
ЭтотОбъект,
Объект.ТипОснованияАктаОРасхождении,
ПоказыватьПояснение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьФактПоПриемке(Команда)
СписокКнопок = Новый СписокЗначений();
СписокКнопок.Добавить("Перенести", НСтр("ru = 'Заполнить'"));
СписокКнопок.Добавить("НеПереносить", НСтр("ru = 'Не заполнять'"));
ПоказатьВопрос(Новый ОписаниеОповещения("ЗаполнитьФактПоПриемкеЗавершение", ЭтотОбъект),
НСтр("ru='Заполнить товары по факту по фактической приемке на ордерных складах?'"),
СписокКнопок);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьФактПоПриемкеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = "Перенести" Тогда
ЕстьИзменения = ЗаполнитьПоПриемкеСервер();
ЗакупкиКлиент.ОповеститьОбОкончанииПерезаполненияТоваровПоПриемке(ЕстьИзменения, Истина);
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ТекущиеДанные = ТаблицаФормы.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ТекстСообщения = НСтр("ru='Выберите строку товаров, которую необходимо разбить.'");
ПоказатьПредупреждение(,ТекстСообщения);
Иначе
СписокДействий = Новый СписокЗначений;
СписокДействий.Добавить("ФактическоеКоличество", Нстр("ru = 'С разбиением фактического количества'"));
СписокДействий.Добавить("КоличествоПоДокументу", Нстр("ru = 'С разбиением количества по документу'"));
ПослеВыбораВариантаРазбиения = Новый ОписаниеОповещения("ПослеВыбораВариантаРазбиенияСтроки", ЭтотОбъект);
ПоказатьВыборИзМеню(ПослеВыбораВариантаРазбиения, СписокДействий, Элементы.ТоварыРазбитьСтроку);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораВариантаРазбиенияСтроки(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
ТекущиеДанные = ТаблицаФормы.ТекущиеДанные;
Реквизиты = ?(РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении),
"Количество, Сумма",
"Количество, Сумма, СуммаНДС, СуммаСНДС");
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаСуммы(
Реквизиты,
"КоличествоУпаковок");
Если ТекущиеДанные <> Неопределено Тогда
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ЗаполнитьСтруктуруПересчетаСуммы(СтруктураПересчетаСуммы, ТаблицаФормы.ТекущиеДанные);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("СтруктураПересчетаСуммы", СтруктураПересчетаСуммы);
ДополнительныеПараметры.Вставить("ВидРазбиения", Результат.Значение);
ПараметрыРазбиения = Неопределено;
Если Результат.Значение = "КоличествоПоДокументу" Тогда
ПараметрыРазбиения = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
ПараметрыРазбиения.ИмяПоляКоличество = "КоличествоУпаковокПоДокументу";
ПараметрыРазбиения.РазрешитьНулевоеКоличество = Ложь;
ПараметрыРазбиения.Количество = ТекущиеДанные.КоличествоУпаковокПоДокументу - 1;
ИначеЕсли Результат.Значение = "ФактическоеКоличество" И ТекущиеДанные.КоличествоУпаковокПоДокументу <> 0
И НоменклатураКлиентСервер.ВЭтомСтатусеСерииУказываютсяВТЧСерии(ТекущиеДанные.СтатусУказанияСерий, ПараметрыУказанияСерий) Тогда
Дельта = ТекущиеДанные.КоличествоУпаковок - ТекущиеДанные.КоличествоУпаковокПоДокументу;
Дельта = ?(Дельта < 0, 0, Дельта);
Если Дельта = 0 Тогда
ТекстСообщения = НСтр("ru = 'Фактическое количество можно разбивать в строках с излишками.'");
ПоказатьПредупреждение(, ТекстСообщения);
Возврат;
КонецЕсли;
ПараметрыРазбиения = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
ПараметрыРазбиения.РазрешитьНулевоеКоличество = Ложь;
ПараметрыРазбиения.Количество = Дельта;
ПараметрыРазбиения.МаксимальноДопустимоеЗначение = Дельта;
КонецЕсли;
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы,
ТаблицаФормы,
Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ПараметрыРазбиения);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
Если НоваяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ДополнительныеПараметры.ВидРазбиения = "ФактическоеКоличество" Тогда
НоваяСтрока.КодСтроки = 0;
НоваяСтрока.КоличествоПоДокументу = 0;
НоваяСтрока.КоличествоУпаковокПоДокументу = 0;
НоваяСтрока.КоличествоУпаковокРасхождения = 0;
НоваяСтрока.СуммаНДСПоДокументу = 0;
НоваяСтрока.СуммаНДСРасхождения = 0;
НоваяСтрока.СуммаПоДокументу = 0;
НоваяСтрока.СуммаРасхождения = 0;
НоваяСтрока.СуммаСНДСПоДокументу = 0;
НоваяСтрока.СуммаСНДСРасхождения = 0;
НоваяСтрока.ЕстьКомментарийМенеджера = Ложь;
НоваяСтрока.ЕстьКомментарийПоставщика = Ложь;
НоваяСтрока.КомментарийМенеджера = "";
НоваяСтрока.КомментарийПоставщика = "";
НоваяСтрока.ЗаполненоПоОснованию = Ложь;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");
РасхожденияКлиент.ОбработатьСерииПриРазбитииСтрокиТовары(ЭтотОбъект, ТекущаяСтрока, НоваяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
Иначе
Если (ТекущаяСтрока.Количество > ТекущаяСтрока.КоличествоПоДокументу
И ТекущаяСтрока.КоличествоУпаковок <= ТекущаяСтрока.КоличествоУпаковокПоДокументу)
Или (ТекущаяСтрока.Количество < ТекущаяСтрока.КоличествоПоДокументу
И ТекущаяСтрока.КоличествоУпаковок >= ТекущаяСтрока.КоличествоУпаковокПоДокументу) Тогда
ТекущаяСтрока["Действие"] = ПредопределенноеЗначение("Перечисление.ВариантыДействийПоРасхождениямВАктеПослеОтгрузки.ПустаяСсылка");
КонецЕсли;
НоваяСтрока.Количество = 0;
НоваяСтрока.КоличествоУпаковок = 0;
НоваяСтрока.КоличествоУпаковок = 0;
НоваяСтрока.СуммаНДС = 0;
НоваяСтрока.СуммаНДСРасхождения = 0;
НоваяСтрока.Сумма = 0;
НоваяСтрока.СуммаРасхождения = 0;
НоваяСтрока.СуммаСНДС = 0;
НоваяСтрока.СуммаСНДСРасхождения = 0;
НоваяСтрока["Действие"] = ПредопределенноеЗначение("Перечисление.ВариантыДействийПоРасхождениямВАктеПослеОтгрузки.ПустаяСсылка");
НоваяСтрока.ЕстьКомментарийМенеджера = Ложь;
НоваяСтрока.ЕстьКомментарийПоставщика = Ложь;
НоваяСтрока.КомментарийМенеджера = "";
НоваяСтрока.КомментарийПоставщика = "";
НоваяСтрока.ЗаполненоПоОснованию = Истина;
ПараметрыРасчетаСуммы = Новый Структура;
ПараметрыРасчетаСуммы.Вставить("Суффикс", "ПоДокументу");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиницСуффикс", "ПоДокументу");
СтруктураДействий.Вставить("ПересчитатьСуммуСуффикс", "ПоДокументу");
Если Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураПересчетаСуммы.Вставить("Суффикс", "ПоДокументу");
СтруктураДействий.Вставить("ПересчитатьСуммуНДССуффикс", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДССуффикс", СтруктураПересчетаСуммы);
КонецЕсли;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСНаСервере()
ЗаполнитьНалогообложениеНДС(Истина, Ложь);
ПриИзмененииНалогообложенияНДССервер();
КонецПроцедуры
#Область Серии
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
ПараметрыФормыУказанияСерий = НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект,
ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтотОбъект);
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
Если ТекущиеДанные.ЗаполненоПоОснованию Тогда
ПараметрыФормыУказанияСерий.ТолькоРедактированиеКоличества = Истина;
КонецЕсли;
Возврат ПараметрыФормыУказанияСерий;
КонецФункции
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтотОбъект,ПараметрыУказанияСерий,Текст, ТекущиеДанные) Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
Если ТекущиеДанные.ЗаполненоПоОснованию
И НоменклатураКлиентСервер.ВЭтомСтатусеСерииУказываютсяВТЧТовары(ТекущиеДанные.СтатусУказанияСерий,
ПараметрыУказанияСерий) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Серия в строке из документа-основания не редактируется, добавьте новую строку.'"));
Возврат;
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ОповещениеПодбораСерий = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение",
ЭтотОбъект,
Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий));
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,
ПараметрыФормыУказанияСерий,
ЭтотОбъект,
,
,
,
ОповещениеПодбораСерий,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий);
КонецЕсли;
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");
Если Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСумму");
РасхожденияСервер.ОбработатьУказаниеСерий(ЭтотОбъект, ПараметрыФормыУказанияСерий, СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ВыборДействияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.КоличествоУпаковок < ТекущиеДанные.КоличествоУпаковокПоДокументу Тогда
ТекущиеДанные.Действие = Результат.ДействиеНедостачи;
ТекущиеДанные.ПоВинеСтороннейКомпании = Результат.ПоВинеСтороннейКомпании;
ИначеЕсли ТекущиеДанные.КоличествоУпаковок > ТекущиеДанные.КоличествоУпаковокПоДокументу Тогда
ТекущиеДанные.Действие = Результат.ДействиеИзлишки;
ТекущиеДанные.ПоВинеСтороннейКомпании = Ложь;
КонецЕсли;
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элементы.Товары,КэшированныеЗначения,ПараметрыУказанияСерий) Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Элементы.Товары.ТекущаяСтрока, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элементы.Товары, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область НомераГТД
&НаКлиенте
Процедура ОбработатьПодборНомераГТД(РезультатПодбора)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторСтроки = ТекущиеДанные.ПолучитьИдентификатор();
Если ИдентификаторСтроки = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполненыНомераГТД = Ложь;
НомерГТД = Неопределено;
ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки, РезультатПодбора, ЗаполненыНомераГТД, НомерГТД);
ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД, НомерГТД);
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки,
РезультатПодбора,
ЗаполненыНомераГТД,
НомерГТД)
РасхожденияСервер.ОбработатьУказаниеНомераГТД(ЭтотОбъект,
ИдентификаторСтроки,
РезультатПодбора,
ЗаполненыНомераГТД,
НомерГТД);
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СерверныеОбработчикиСобытийИзмененияЭлементовФормы
&НаСервере
Процедура ПартнерПриИзмененииНаСервере()
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента Тогда
Если ИспользоватьСоглашенияСКлиентами Тогда
ЗаполнитьУсловияПродаж();
КонецЕсли;
ИначеЕсли РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(Объект.ТипОснованияАктаОРасхождении) Тогда
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействийПоТипуОснованияАкта(Объект.ТипОснованияАктаОРасхождении);
Если ИспользоватьСоглашенияСКлиентами Или Не Обработчик.СоглашенияСКлиентамиПрименимы() Тогда
ЗаполнитьУсловияПродаж();
КонецЕсли;
Иначе
ЗаполнитьУсловияЗакупок();
РасхожденияВызовСервера.УстановитьДоступностьСоглашенийСПоставщиком(ЭтотОбъект);
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент, Истина);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер()
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПартнерПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
ЗаполнитьНалогообложениеНДС(Ложь, Истина);
ПриИзмененииНалогообложенияНДССервер();
РасхожденияСервер.УстановитьДоступностьДоговора(ЭтотОбъект);
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
РасхожденияСервер.УстановитьДоступностьДоговора(ЭтотОбъект);
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
ПартнерПриИзмененииНаСервере();
Иначе
РасхожденияСервер.ЗаполнитьДоговорПоУмолчанию(Объект, ХозяйственнаяОперацияДоговора);
ДоговорПриИзмененииНаСервере();
КонецЕсли;
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента Тогда
ЗаполнитьНалогообложениеНДС(Истина, Ложь);
ПриИзмененииНалогообложенияНДССервер();
КонецЕсли;
КонецЕсли;
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииНалогообложенияНДССервер()
Если РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении) Тогда
Возврат;
КонецЕсли;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначения.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
РасхожденияСервер.УправлениеВидимостьюНДС(ЭтотОбъект);
УстановитьВидимостьКомандыЗаполнитьСтавкуНДС();
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер()
Если НЕ ИспользоватьСоглашенияСКлиентами
И РасхожденияКлиентСервер.ТипОснованияРеализацияТоваровУслуг(Объект.ТипОснованияАктаОРасхождении) Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
РасхожденияСервер.УправлениеВидимостьюНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСоглашенияСервер()
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
Возврат;
КонецЕсли;
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента
Или Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтХранителя
Или Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера Тогда
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоСоглашению();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
Иначе
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоСоглашению();
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
КонецЕсли;
ПриИзмененииХозяйственнойОперацииСервер();
РасхожденияСервер.УстановитьДоступностьДоговора(ЭтотОбъект);
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииХозяйственнойОперацииСервер()
ХозяйственнаяОперацияДоговора = ХозяйственнаяОперацияДоговора(Объект.ХозяйственнаяОперация, Объект.ТипОснованияАктаОРасхождении);
РасхожденияСервер.ЗаполнитьДоговорПоУмолчанию(Объект, ХозяйственнаяОперацияДоговора);
ДоговорПриИзмененииНаСервере();
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
Объект.СпособОтраженияРасхождений = Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ИсправлениеПервичныхДокументов;
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
Объект.ЦенаВключаетНДС = Ложь;
ЦенаВключаетНДСПриИзмененииСервер();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи Тогда
Объект.ЦенаВключаетНДС = Ложь;
ЦенаВключаетНДСПриИзмененииСервер();
КонецЕсли;
ЗаполнитьНалогообложениеНДС();
ПриИзмененииНалогообложенияНДССервер();
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
ПараметрыВыбораСтатейИАналитик = Документы.АктОРасхожденияхПослеПриемки.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриИзмененииПараметровВыбораСтатей(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
УстановитьВидимостьЭлементовПоОперацииСервер();
РасхожденияСервер.УправлениеВидимостьюНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ХозяйственнаяОперацияДоговора(ХозяйственнаяОперация, ТипОснованияАктаОРасхождении)
Если РасхожденияКлиентСервер.ТипОснованияПриобретениеТоваровУслуг(ТипОснованияАктаОРасхождении)
Или РасхожденияКлиентСервер.ТипОснованияРеализацияТоваровУслуг(ТипОснованияАктаОРасхождении) Тогда
Возврат ХозяйственнаяОперация;
ИначеЕсли РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(ТипОснованияАктаОРасхождении) Тогда
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействийПоТипуОснованияАкта(ТипОснованияАктаОРасхождении);
Возврат Обработчик.ХозяйственнаяОперацияДоговора();
Иначе
Если ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера") Тогда
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию");
ИначеЕсли ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента") Тогда
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту");
Иначе
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область УправлениеЭлементамиФормы
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
РасхожденияСервер.АктОРасхожденияхУстановитьУсловноеОформлениеФормыДокумента(ЭтотОбъект);
ЗакупкиСервер.УстановитьУсловноеОформлениеПоРасходам(ЭтотОбъект);
ТипыОснованийАктаОРасхождении = Новый СписокЗначений;
ТипыОснованийАктаОРасхождении.Добавить(Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг);
ТипыОснованийАктаОРасхождении.Добавить(Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Соглашение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТипОснованияАктаОРасхождении");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ТипыОснованийАктаОРасхождении;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Договор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТипОснованияАктаОРасхождении");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ОснованиеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаполненоПоОснованию");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументОснование.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ДокументОснование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаполненоПоОснованию");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ДокументОснование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаполненоПоОснованию");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ДокументОснование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ОснованиеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не по заказу>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументОснование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыАктаОРасхождениях.НеСогласовано;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументРеализации.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаполненоПоОснованию");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Ложь);
ОперацииДокумента = Новый СписокЗначений;
ОперацииДокумента.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
ОперацииДокумента.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтХранителя);
ОперацииДокумента.Добавить(Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5);
ОперацииДокумента.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5);
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотнойТарой();
ПараметрыУстановки.Форма = ЭтотОбъект;
ПараметрыУстановки.ЭтоПоступление = Истина;
ПараметрыУстановки.ПутьКПолюОтбораВернутьМногооборотнуюТару = "Объект.Товары.ВернутьМногооборотнуюТару";
ПараметрыУстановки.ПутьКПолюОтбораТребуетсяЗалогЗаТару = "Объект.Товары.ТребуетсяЗалогЗаТару";
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ОперацииДокумента;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатура.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристика.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНазначение.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтатусУказанияСерий.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураЕдиницаИзмерения.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВидЦеныПоставщика.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументОснование.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерГТД.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерГТДСтранаПроисхождения.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСертификат.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаполненоПоОснованию");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКоличествоУпаковокПоДокументу.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаполненоПоОснованию");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКоличествоУпаковок.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаполненоПоОснованию");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ТипыОснованийАктаОРасхождении = Новый СписокЗначений;
ТипыОснованийАктаОРасхождении.ЗагрузитьЗначения(РасхожденияКлиентСервер.ТипыОснованияПоступлениеТоваровОтХранителя());
ТипыОснованийАктаОРасхождении.Добавить(Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаполненоПоОснованию");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТипОснованияАктаОРасхождении");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ТипыОснованийАктаОРасхождении;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = НоменклатураСервер.СписокХозяйственныхОперацийИсключающихУслугиИРаботы();
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
СписокДвухходовыхОпераций = Новый СписокЗначений;
СписокДвухходовыхОпераций.ЗагрузитьЗначения(ЗакупкиСервер.ХозяйственныеОперацииРаздельнойЗакупкиБезОтборов());
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = СписокДвухходовыхОпераций;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСписатьНаРасходы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтатьяРасходов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = СписокДвухходовыхОпераций;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для работ/услуг>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ПараметрыУсловногоОформления = НоменклатураСервер.ПараметрыУстановкиУсловногоОформленияНомераГТД();
ПараметрыУсловногоОформления.ИмяПоляВводаНомераГТД = "ТоварыНомерГТДСтранаПроисхождения";
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект, ПараметрыУсловногоОформления);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеВДокументеПриобретениеТоваровУслуг(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеУчетаПоГТДВДокументахКомиссионера(ЭтотОбъект, Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерГТД.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерГТДСтранаПроисхождения.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОперацииБезГТД = ХозяйственныеОперацииИмпорта();
ОперацииБезГТД.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
ОперацииБезГТД.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтПереработчика2_5);
ОперацииБезГТД.Добавить(Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5);
ОтборЭлемента.ПравоеЗначение = ОперацииБезГТД;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСделка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сделка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДействие.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПоВинеСтороннейКомпании");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Действие");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст",
ТекстВариантаДействияНаПрочиеРасходыИЗаСчетСтороннейКомпании(Объект.ХозяйственнаяОперация));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДействие.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТипОснованияАктаОРасхождении");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПоВинеСтороннейКомпании");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Действие");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Списать за наш счет'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ТипыОснованийАктаОРасхождении = Новый СписокЗначений;
ТипыОснованийАктаОРасхождении.ЗагрузитьЗначения(РасхожденияКлиентСервер.ТипыОснованияПоступлениеТоваровОтХранителя());
ТипыОснованийАктаОРасхождении.Добавить(Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДействие.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТипОснованияАктаОРасхождении");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ТипыОснованийАктаОРасхождении;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПоВинеСтороннейКомпании");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Действие");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ОтнестиНедостачуНаПрочиеРасходы;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Списать недостачи'"));
РаботаИУслуга = Новый СписокЗначений;
РаботаИУслуга.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
РаботаИУслуга.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДействие.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = РаботаИУслуга;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Действие");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыДействийПоРасхождениямВАктеПослеПриемки.ВернутьПерепоставленноеБезОформления;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Сторнировать'"));
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(ЭтотОбъект);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КоличествоУпаковок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КоличествоУпаковокПоДокументу");
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
РасхожденияСервер.УстановитьУсловноеОформлениеСерий(ЭтотОбъект, "");
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьСпособыОтражения()
ОснованиеАктаПриемкаТоваровНаХранение =
РасхожденияКлиентСервер.ТипОснованияПриемкаТоваровНаХранение(Объект.ТипОснованияАктаОРасхождении);
ОснованиеАктаПоступлениеТоваровОтХранителя =
РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(Объект.ТипОснованияАктаОРасхождении);
Элементы.ГруппаИнформацияОДоступностиСпособаОтражения.Видимость =
РасхожденияКлиентСервер.ТипОснованияПриобретениеТоваровУслуг(Объект.ТипОснованияАктаОРасхождении)
Или ОснованиеАктаПриемкаТоваровНаХранение
Или ОснованиеАктаПоступлениеТоваровОтХранителя;
Элементы.ГруппаСпособОтражения.Видимость =
РасхожденияКлиентСервер.ТипОснованияПриобретениеТоваровУслуг(Объект.ТипОснованияАктаОРасхождении)
Или ОснованиеАктаПриемкаТоваровНаХранение
Или ОснованиеАктаПоступлениеТоваровОтХранителя;
Элементы.СпособОтраженияРасхожденийКорректировкаПоступления.Видимость =
(ИспользоватьКорректировкиПриобретений
И РасхожденияКлиентСервер.ТипОснованияПриобретениеТоваровУслуг(Объект.ТипОснованияАктаОРасхождении))
Или (ИспользоватьИсправлениеДокументов
И (ОснованиеАктаПриемкаТоваровНаХранение Или ОснованиеАктаПоступлениеТоваровОтХранителя));
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОперацииСервер()
МассивПараметров = Новый Массив;
МассивТиповНоменклатуры = Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ТипНоменклатуры", МассивТиповНоменклатуры));
Элементы.ТоварыНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
ТипыАктовХранения = РасхожденияКлиентСервер.ТипыОснованияПоступлениеТоваровОтХранителя();
ЦеныБезНДС = ТипыАктовХранения.Найти(Объект.ТипОснованияАктаОРасхождении) <> Неопределено;
ТипыАктовХранения.Добавить(Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение);
БезНалогообложенияНДС = ТипыАктовХранения.Найти(Объект.ТипОснованияАктаОРасхождении) <> Неопределено;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НалогообложениеНДС", "Видимость", Не БезНалогообложенияНДС);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ЦенаВключаетНДС", "Видимость", Не ЦеныБезНДС);
Если Объект.ТипОснованияАктаОРасхождении <> Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента Тогда
ЗакупкиСервер.СкорректироватьСписокВыбораХозяйственнойОперацииПоступления(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УправлениеРеквизитамиФормыВЗависимостиОтТипаОснования()
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента Тогда
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Клиент", Истина));
Элементы.Партнер.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.Партнер.Заголовок = НСтр("ru = 'Клиент'");
Элементы.ТоварыКомментарийПоставщикаПодвал.Заголовок = НСтр("ru = 'Комментарии клиента по расхождениям в строке'");
Элементы.ТоварыЕстьКомментарийПоставщика.Заголовок = НСтр("ru = 'от клиента'");
Элементы.ТоварыЗаполнитьПоОснованиям.Заголовок = НСтр("ru = 'По возвратам'");
Элементы.ТоварыНоменклатураПартнера.Видимость = Ложь;
Элементы.ТоварыВидЦеныПоставщика.Видимость = Ложь;
Элементы.ТоварыДокументОснование.Заголовок = НСтр("ru = 'Возврат поставщику'");
Элементы.ТоварыАналитикаРасходов.Видимость = Ложь;
Элементы.ТоварыСтатьяРасходов.Видимость = Ложь;
Элементы.ТоварыСписатьНаРасходы.Видимость = Ложь;
Элементы.ТоварыПодразделение.Видимость = Ложь;
Элементы.ТоварыСертификат.Видимость = Ложь;
СписокВыбораХозяйственныеОперации = Элементы.ХозяйственнаяОперация.СписокВыбора;
СписокВыбораХозяйственныеОперации.Очистить();
СписокВыбораХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента);
Если ПолучитьФункциональнуюОпциюФормы("ИспользоватьРозничныеПродажи") Тогда
СписокВыбораХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя);
КонецЕсли;
Если ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриПродажах") Тогда
СписокВыбораХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
КонецЕсли;
ОграничениеТипаСоглашения = Новый ОписаниеТипов("СправочникСсылка.СоглашенияСКлиентами");
Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСКлиентами;
Элементы.ПоОснованиямБезНДС.Заголовок = НСтр("ru = 'По возвратам'");
Элементы.ПоОснованиямСНДС.Заголовок = НСтр("ru = 'По возвратам'");
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение Тогда
СвязиПараметровВыбораДоговор = Новый Массив;
Для Каждого Связь Из Элементы.Договор.СвязиПараметровВыбора Цикл
СвязьПараметровВыбора = Связь;
Если Не СвязьПараметровВыбора.Имя = "Отбор.ХозяйственнаяОперация" Тогда
СвязиПараметровВыбораДоговор.Добавить(СвязьПараметровВыбора);
Иначе
ПараметрВыбора = Новый СвязьПараметраВыбора("Отбор.ХозяйственнаяОперация", "Объект.ХозяйственнаяОперация");
СвязиПараметровВыбораДоговор.Добавить(ПараметрВыбора);
КонецЕсли;
КонецЦикла;
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВыбораДоговор);
ОграничениеТипаСоглашения = Новый ОписаниеТипов("СправочникСсылка.СоглашенияСПоставщиками");
Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСКлиентами;
РасхожденияВызовСервера.УстановитьДоступностьСоглашенийСПоставщиком(ЭтотОбъект);
СписокВыбораХозяйственныеОперации = Элементы.ХозяйственнаяОперация.СписокВыбора;
СписокВыбораХозяйственныеОперации.Очистить();
СписокВыбораХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи);
СписокВыбораСпособОтраженияРасхожденийИзменениеДокумента = Элементы.СпособОтраженияРасхожденийИзменениеДокумента.СписокВыбора;
СписокВыбораСпособОтраженияРасхожденийИзменениеДокумента.Очистить();
СписокВыбораСпособОтраженияРасхожденийКорректировкаИсправление = Элементы.СпособОтраженияРасхожденийКорректировкаПоступления.СписокВыбора;
СписокВыбораСпособОтраженияРасхожденийКорректировкаИсправление.Очистить();
СписокВыбораСпособОтраженияРасхожденийИзменениеДокумента.Добавить(
Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ИсправлениеПервичныхДокументов,
НСтр("ru = 'Изменить приемку товаров на хранение'"));
СписокВыбораСпособОтраженияРасхожденийКорректировкаИсправление.Добавить(
Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления,
НСтр("ru = 'Оформить приемку товаров на хранение (исправление)'"));
Элементы.ТоварыДокументРеализации.Видимость = Ложь;
Элементы.ТоварыПодразделение.Видимость = Ложь;
Элементы.ТоварыСертификат.Видимость = Ложь;
Элементы.ТоварыСделка.Видимость = Ложь;
Элементы.ПоОснованиямБезНДС.Заголовок = НСтр("ru = 'По приемкам'");
Элементы.ПоОснованиямСНДС.Заголовок = НСтр("ru = 'По приемкам'");
ИначеЕсли РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(Объект.ТипОснованияАктаОРасхождении) Тогда
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействийПоТипуОснованияАкта(Объект.ТипОснованияАктаОРасхождении);
Обработчик.НастроитьПараметрыВыбораЭлементов(ЭтотОбъект, Объект);
ОграничениеТипаСоглашения = Новый ОписаниеТипов("СправочникСсылка.СоглашенияСКлиентами");
Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСКлиентами;
СписокВыбораХозяйственныеОперации = Элементы.ХозяйственнаяОперация.СписокВыбора;
СписокВыбораХозяйственныеОперации.Очистить();
СписокВыбораХозяйственныеОперации.Добавить(Обработчик.ХозяйственнаяОперация());
СписокВыбораСпособОтраженияРасхожденийИзменениеДокумента = Элементы.СпособОтраженияРасхожденийИзменениеДокумента.СписокВыбора;
СписокВыбораСпособОтраженияРасхожденийИзменениеДокумента.Очистить();
СписокВыбораСпособОтраженияРасхожденийКорректировкаИсправление = Элементы.СпособОтраженияРасхожденийКорректировкаПоступления.СписокВыбора;
СписокВыбораСпособОтраженияРасхожденийКорректировкаИсправление.Очистить();
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера Тогда
ТекстСпособаОбработкиИсправление = НСтр("ru = 'Изменить поступление товаров от комиссионера'");
ТекстСпособаОбработкиКорректировка = НСтр("ru = 'Оформить поступление товаров от комиссионера (исправление)'");
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПоступлениеТоваровОтПереработчика Тогда
ТекстСпособаОбработкиИсправление = НСтр("ru = 'Изменить поступление от переработчика'");
ТекстСпособаОбработкиКорректировка = НСтр("ru = 'Оформить поступление от переработчика (исправление)'");
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтПереработчика Тогда
ТекстСпособаОбработкиИсправление = НСтр("ru = 'Изменить возврат сырья от переработчика'");
ТекстСпособаОбработкиКорректировка = НСтр("ru = 'Оформить возврат сырья от переработчика (исправление)'");
Иначе
ТекстСпособаОбработкиИсправление = НСтр("ru = 'Изменить поступление товаров от хранителя'");
ТекстСпособаОбработкиКорректировка = НСтр("ru = 'Оформить поступление товаров от хранителя (исправление)'");
КонецЕсли;
СписокВыбораСпособОтраженияРасхожденийИзменениеДокумента.Добавить(
Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ИсправлениеПервичныхДокументов,
ТекстСпособаОбработкиИсправление);
СписокВыбораСпособОтраженияРасхожденийКорректировкаИсправление.Добавить(
Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления,
ТекстСпособаОбработкиКорректировка);
Элементы.ТоварыКомментарийПоставщикаПодвал.Заголовок = Обработчик.КомментарийПоставщикаПодвал();
Элементы.ТоварыЕстьКомментарийПоставщика.Заголовок = Обработчик.КомментарийКлиента();
Элементы.ТоварыЗаполнитьПоОснованиям.Заголовок = Обработчик.ЗаголовокПоОснованиям();
Элементы.ТоварыНоменклатураПартнера.Видимость = Ложь;
Элементы.ТоварыВидЦеныПоставщика.Видимость = Ложь;
Элементы.ТоварыДокументОснование.Заголовок = Обработчик.ЗаголовокДокументаОснованияАкта();
Элементы.ТоварыАналитикаРасходов.Видимость = Ложь;
Элементы.ТоварыСтатьяРасходов.Видимость = Ложь;
Элементы.ТоварыСписатьНаРасходы.Видимость = Ложь;
Элементы.ТоварыПодразделение.Видимость = Ложь;
Элементы.ТоварыСертификат.Видимость = Ложь;
Элементы.ПоОснованиямБезНДС.Заголовок = Обработчик.ЗаголовокПоОснованиям(Ложь);
Элементы.ПоОснованиямСНДС.Заголовок = Обработчик.ЗаголовокПоОснованиям(Ложь);
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг
И ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(Объект.ХозяйственнаяОперация) Тогда
СписокВыбораХозяйственныеОперации = Элементы.ХозяйственнаяОперация.СписокВыбора;
СписокВыбораХозяйственныеОперации.Очистить();
СписокВыбораХозяйственныеОперации.Добавить(Объект.ХозяйственнаяОперация);
СвязиПараметровВыбораДоговор = Новый Массив;
Для Каждого Связь Из Элементы.Договор.СвязиПараметровВыбора Цикл
СвязьПараметровВыбора = Связь;
Если Не СвязьПараметровВыбора.Имя = "Соглашение" Тогда
СвязиПараметровВыбораДоговор.Добавить(СвязьПараметровВыбора);
КонецЕсли;
КонецЦикла;
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВыбораДоговор);
ОсновнаяОперация = ЗакупкиСервер.ОсновнаяХозяйственнаяОперацияРаздельнойЗакупки(Объект.ХозяйственнаяОперация);
ХозяйственныеОперации = Новый Массив;
ХозяйственныеОперации.Добавить(ОсновнаяОперация);
ПараметрыВыбораСоглашения = Новый Массив;
ПараметрыВыбораСоглашения.Добавить(Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", ХозяйственныеОперации));
ОграничениеТипаСоглашения = Новый ОписаниеТипов("СправочникСсылка.СоглашенияСПоставщиками");
Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСПоставщиками;
Элементы.Соглашение.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораСоглашения);
РасхожденияВызовСервера.УстановитьДоступностьСоглашенийСПоставщиком(ЭтотОбъект);
Элементы.ТоварыДокументРеализации.Видимость = Ложь;
Иначе
СвязиПараметровВыбораДоговор = Новый Массив;
Для Каждого Связь Из Элементы.Договор.СвязиПараметровВыбора Цикл
СвязьПараметровВыбора = Связь;
Если Не СвязьПараметровВыбора.Имя = "Соглашение" Тогда
СвязиПараметровВыбораДоговор.Добавить(СвязьПараметровВыбора);
КонецЕсли;
КонецЦикла;
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВыбораДоговор);
ХозяйственныеОперации = Новый Массив;
ХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС);
ХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
ХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ПриемНаКомиссию);
ПараметрыВыбораСоглашения = Новый Массив;
ПараметрыВыбораСоглашения.Добавить(Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", ХозяйственныеОперации));
ОграничениеТипаСоглашения = Новый ОписаниеТипов("СправочникСсылка.СоглашенияСПоставщиками");
Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСПоставщиками;
Элементы.Соглашение.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораСоглашения);
РасхожденияВызовСервера.УстановитьДоступностьСоглашенийСПоставщиком(ЭтотОбъект);
Элементы.ТоварыДокументРеализации.Видимость = Ложь;
КонецЕсли;
Элементы.Соглашение.ОграничениеТипа = ОграничениеТипаСоглашения;
Если Элементы.Договор.Видимость Тогда
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг Тогда
Элементы.Договор.АвтоОтметкаНезаполненного = Ложь;
Иначе
Элементы.Договор.АвтоОтметкаНезаполненного = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьСпособОтраженияРасхожденией()
РасхожденияСервер.СформироватьНадписьСпособаОтраженияРасхождений(ЭтотОбъект,
Объект.Товары,
Элементы.НадписьРасхождения,
Элементы.ОформитьДокументы,
ТипЗнч(Объект.Ссылка),
ТипОперации());
Элементы.ГруппаСпособОтражения.Доступность = Элементы.НадписьРасхождения.Доступность;
СобытияФорм.ПриСменеСтраницФормы(ЭтотОбъект, "ГруппаСтраницы");
КонецПроцедуры
&НаСервере
Процедура УстановитьОграничениеТипаДокументРеализации()
МассивТипов = Метаданные.Документы.АктОРасхожденияхПослеПриемки.ТабличныеЧасти.Товары.Реквизиты.ДокументРеализации.Тип.Типы();
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(МассивТипов, Тип("ДокументСсылка.ПоступлениеТоваровОтХранителя"));
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(МассивТипов, Тип("ДокументСсылка.ПередачаТоваровХранителю"));
Элементы.ТоварыДокументРеализации.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандыЗаполнитьСтавкуНДС()
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыЗаполнитьСтавкуНДС",
"Видимость",
ЗначениеЗаполнено(Объект.НалогообложениеНДС)
И Объект.НалогообложениеНДС <> Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС
И Не РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении));
КонецПроцедуры
#КонецОбласти
#Область ЗаполнениеИОбработкаВыбора
&НаКлиенте
Процедура ЗаполнитьПоОснованиямВыполнитьЗавершение(Результат, ДополнительныеПараметры) Экспорт
ЗаполнитьПоОснованиям();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьДействиеВыделенныхСтрокЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
РезультатУстановки = РасхожденияКлиент.УстановитьВариантДействияВыделеннымСтрокам(ЭтотОбъект, Результат);
Если РезультатУстановки.НуженСерверныйВызов Тогда
КоличествоИзмененныхСтрокСоответствие = РезультатУстановки.КоличествоИзмененныхСтрокСоответствие;
УстановитьВариантДействияВСтрокахСервер(Результат, КоличествоИзмененныхСтрокСоответствие);
РасхожденияКлиент.ОповеститьОбУстановкеДействия(КоличествоИзмененныхСтрокСоответствие);
ИначеЕсли РезультатУстановки.СтрокиДляПересчетаСерий.Количество() > 0 Тогда
ЗаполнитьСтатусыСерийВСтроках(РезультатУстановки.СтрокиДляПересчетаСерий);
КонецЕсли;
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыСерийВСтроках(СтрокиТоваров)
МассивСтрокДляОбработки = Новый Массив;
Для Каждого ВыделеннаяСтрока Из СтрокиТоваров Цикл
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыделеннаяСтрока);
МассивСтрокДляОбработки.Добавить(ТекущаяСтрока);
КонецЦикла;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий, МассивСтрокДляОбработки);
КонецПроцедуры
&НаСервере
Процедура УстановитьВариантДействияВСтрокахСервер(Результат, КоличествоИзмененныхСтрокСоответствие)
РасхожденияСервер.УстановитьВариантДействияВСтроках(ЭтотОбъект, Результат, КоличествоИзмененныхСтрокСоответствие);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоОснованиям()
РасхожденияСервер.ЗаполнитьПоОснованиям(ЭтотОбъект);
СформироватьТаблицуЗаказыСделки();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервере
Функция ПолучитьФактПоПриемке(Склад)
ТекстРазделителя = НакладныеСервер.ТекстРазделителяЗапросов();
ПараметрыЗаполнения = Документы.АктОРасхожденияхПослеПриемки.ПараметрыЗаполненияДокумента();
УстановитьПривилегированныйРежим(Истина);
ОрдернаяСхемаПриПриемке = ИспользоватьОрдернуюСхемуПриПоступлении(Склад, Объект.Дата);
УстановитьПривилегированныйРежим(Ложь);
ФактПоПриемке = Новый Структура("РезультирующаяТаблица, РезультирующаяТаблицаСерии");
Если Не ОрдернаяСхемаПриПриемке Тогда
ОтборСтрок = Новый Структура("Склад", Склад);
ФактПоПриемке.РезультирующаяТаблица = Объект.Товары.Выгрузить(ОтборСтрок);
ФактПоПриемке.РезультирующаяТаблицаСерии = Объект.Серии.Выгрузить(ОтборСтрок);
Возврат ФактПоПриемке;
КонецЕсли;
ОтборСтрок = Новый Структура("Склад", Склад);
ТаблицаНакладная = Объект.Товары.Выгрузить(ОтборСтрок);
ТаблицаНакладная.Колонки.Добавить("КоличествоМаксимум", Новый ОписаниеТипов("Число"));
ТаблицаНакладная.Колонки.Добавить("КоличествоВЗаказе", Новый ОписаниеТипов("Число"));
ТаблицаНакладная.Колонки.Добавить("КоличествоВОрдере", Новый ОписаниеТипов("Число"));
ТаблицаНакладная.Колонки.Добавить("Распоряжение");
ВариантыПриемкиПоДоговору = Новый Массив();
ВариантыПриемкиПоДоговору.Добавить(Перечисления.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных);
ВариантыПриемкиПоДоговору.Добавить(Перечисления.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных);
ВариантыПриемкиПоДоговору.Добавить(Перечисления.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных);
МассивЗаказов = Новый Массив();
Для каждого СтрокаТовары Из ТаблицаНакладная Цикл
СтрокаТовары.КоличествоМаксимум = Макс(СтрокаТовары.Количество, СтрокаТовары.КоличествоПоДокументу);
Если ЗначениеЗаполнено(СтрокаТовары.ЗаказПоставщику) Тогда
СтрокаТовары.Распоряжение = СтрокаТовары.ЗаказПоставщику;
Иначе
СтрокаТовары.Распоряжение = СтрокаТовары.ДокументОснование;
КонецЕсли;
РеквизитыРаспоряжения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтрокаТовары.Распоряжение, "ВариантПриемкиТоваров, Договор");
Если ВариантыПриемкиПоДоговору.Найти(РеквизитыРаспоряжения.ВариантПриемкиТоваров) <> Неопределено Тогда
МассивЗаказов.Добавить(РеквизитыРаспоряжения.Договор);
СтрокаТовары.Распоряжение = РеквизитыРаспоряжения.Договор;
КонецЕсли;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивЗаказов, ТаблицаНакладная.ВыгрузитьКолонку("Распоряжение"));
МассивЗаказов = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивЗаказов);
РаспоряженияДляОрдеров = ОбщегоНазначения.СкопироватьРекурсивно(МассивЗаказов);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(РаспоряженияДляОрдеров, ТаблицаНакладная.ВыгрузитьКолонку("ДокументОснование"));
ИсключаемыеНакладные = ТаблицаНакладная.ВыгрузитьКолонку("ДокументОснование");
ИсключаемыеНакладные = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ИсключаемыеНакладные);
Отбор = Новый Соответствие();
Отбор.Вставить("Ссылка", "Распоряжения");
Отбор.Вставить("Таблица.Склад", "Склад");
Отбор.Вставить("Таблица.Номенклатура.ТипНоменклатуры", "ТипыНоменклатуры");
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг
Или Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение Тогда
ТекстЗапросаЗаказ = Документы.ЗаказПоставщику.ТекстЗапросаТоварыДокумента(Отбор);
Отбор = Новый Структура();
Отбор.Вставить("ЗаказПоставщику", "Распоряжения");
Отбор.Вставить("Склад", "Склад");
ТекстЗапросаРегистраЗаказы = РегистрыНакопления.ЗаказыПоставщикам.ТекстЗапросаОстатки(
"ВтДанныеУчета",
Отбор,
"КОформлению <> 0");
Иначе
ТекстЗапросаЗаказ = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ТекстЗапросаТоварыДокумента(Отбор);
Отбор = Новый Структура();
Отбор.Вставить("Распоряжение", "Распоряжения");
ТекстЗапросаРегистраЗаказы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаОстаткиПоВозвратам(
"ВтДанныеУчета",
Отбор,
"КОформлению <> 0");
КонецЕсли;
ТекстЗапроса = ТекстЗапросаРегистраЗаказы
+ ТекстРазделителя
+ ТекстЗапросаЗаказ;
ТипыНоменклатуры = Новый Массив();
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Распоряжения", МассивЗаказов);
Запрос.УстановитьПараметр("Регистратор", ИсключаемыеНакладные);
Запрос.УстановитьПараметр("ТипыНоменклатуры", ТипыНоменклатуры);
Запрос.УстановитьПараметр("Склад", Склад);
ТаблицаЗаказы = Запрос.Выполнить().Выгрузить();
КолонкаЗаказ = ТаблицаЗаказы.Колонки.Найти("ЗаказПоставщику");
КолонкаКОформлению = ТаблицаЗаказы.Колонки.КОформлению;
КолонкаКОформлению.Имя = "КоличествоВЗаказе";
Запрос = Новый Запрос();
Отбор = Новый Структура("Склад", Новый Структура("ВидСравнения, ПравоеЗначение", "=", "&Склад"));
ТекстЗапросаОсталосьОформить = "";
ТекстЗапросаОсталосьОформить = РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаОформленоПоОрдерам(Отбор);
Запрос.Текст = ТекстЗапросаОсталосьОформить;
Запрос.УстановитьПараметр("Распоряжения", РаспоряженияДляОрдеров);
Запрос.УстановитьПараметр("Регистратор", ИсключаемыеНакладные);
Запрос.УстановитьПараметр("Склад", Склад);
ТаблицаОрдера = Объект.Товары.Выгрузить(Новый Массив()).СкопироватьКолонки();
ТипыРаспоряжений = Новый ОписаниеТипов("ДокументСсылка.ЗаказПоставщику, ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента,
|ДокументСсылка.ВозвратТоваровОтКлиента, ДокументСсылка.ПриобретениеТоваровУслуг,
|ДокументСсылка.ПриемкаТоваровНаХранение, СправочникСсылка.ДоговорыКонтрагентов, СправочникСсылка.СоглашенияСПоставщиками,
|ДокументСсылка.ПоступлениеТоваровОтХранителя");
ТаблицаОрдера.Колонки.Добавить("Распоряжение", ТипыРаспоряжений);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Запрос.Выполнить().Выгрузить(), ТаблицаОрдера);
ТаблицаОрдера = ДополнитьТаблицуСпособомСоединения(ТаблицаОрдера, ПараметрыУказанияСерий, ОрдернаяСхемаПриПриемке);
КолонкаКоличество = ТаблицаОрдера.Колонки.Количество;
КолонкаКоличество.Имя = "КоличествоВОрдере";
Если КолонкаЗаказ <> Неопределено Тогда
КолонкаЗаказ.Имя = "Распоряжение";
КонецЕсли;
ТаблицаНакладная.Индексы.Добавить(ПараметрыЗаполнения.КлючевыеПоля);
Ключ = "Распоряжение, Склад, КодСтроки";
Условие = "ПО [КоличествоМаксимум]";
НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, ТаблицаНакладная, "КоличествоВЗаказе", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, ТаблицаНакладная, "КоличествоВЗаказе");
ТаблицаНакладная = ДополнитьТаблицуСпособомСоединения(ТаблицаНакладная, ПараметрыУказанияСерий, ОрдернаяСхемаПриПриемке);
ТаблицаНакладнаяИсходная = ТаблицаНакладная.Скопировать();
ТаблицыНакладных = ОбеспечениеСервер.РазбитьТаблицуПоЗначениюКлюча(ТаблицаНакладная, "СпособСоединения");
ТаблицыПолученных = ОбеспечениеСервер.РазбитьТаблицуПоЗначениюКлюча(ТаблицаОрдера, "СпособСоединения");
ДействияСПолученнымиТаблицами = Новый Структура();
Для Каждого КлючЗначение Из ТаблицыНакладных Цикл
Ключ = КлючЗначение.Ключ.СпособСоединения;
СтруктураДействий = Новый Структура("ТаблицаНакладная, ТаблицаПолученоОстаток", КлючЗначение.Таблица, ТаблицаОрдера.СкопироватьКолонки());
ДействияСПолученнымиТаблицами.Вставить(Ключ, СтруктураДействий);
КонецЦикла;
Для Каждого КлючЗначение Из ТаблицыПолученных Цикл
Ключ = КлючЗначение.Ключ.СпособСоединения;
Если ДействияСПолученнымиТаблицами.Свойство(Ключ) Тогда
СтруктураДействий = ДействияСПолученнымиТаблицами[Ключ];
СтруктураДействий.ТаблицаПолученоОстаток = КлючЗначение.Таблица;
Иначе
СтруктураДействий = Новый Структура("ТаблицаНакладная, ТаблицаПолученоОстаток", ТаблицаНакладная.СкопироватьКолонки(), КлючЗначение.Таблица);
ДействияСПолученнымиТаблицами.Вставить(Ключ, СтруктураДействий);
КонецЕсли;
КонецЦикла;
РезультирующаяТаблица = ТаблицаНакладная.СкопироватьКолонки();
РезультирующаяТаблицаСерии = ТаблицаНакладная.СкопироватьКолонки();
ИспользуетсяДокументПоступлениеТоваров = ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(Объект.ХозяйственнаяОперация);
ВозможноПревышениеКоличестваПоДокументу = Ложь;
ВозможноОднозначноИдентифицироватьРаспоряжение =
Не ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Объект.ВариантПриемкиТоваров)
И Не ИспользуетсяДокументПоступлениеТоваров;
Для Каждого КлючЗначение Из ДействияСПолученнымиТаблицами Цикл
Действие = КлючЗначение.Ключ;
СтруктураДействий = КлючЗначение.Значение;
ТаблицаНакладнойПоДействию = СтруктураДействий.ТаблицаНакладная;
ТаблицаОрдераПоДействию = СтруктураДействий.ТаблицаПолученоОстаток;
Если Не ВозможноОднозначноИдентифицироватьРаспоряжение Тогда
Ключ = "Склад, Номенклатура, Характеристика, Серия, Назначение";
Иначе
Ключ = "Распоряжение, Склад, Номенклатура, Характеристика, Серия, Назначение";
КонецЕсли;
Если Действие = "А0" Или Действие = "А3" Тогда
Ключ = СтрЗаменить(Ключ, ", Серия", "")
КонецЕсли;
Проходов = ?(Действие = "А1", 2, 1);
Для Проход = 1 По Проходов Цикл
Если Проход = 1 Тогда
Условие = "[КоличествоМаксимум], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдераПоДействию, ТаблицаНакладнойПоДействию, "КоличествоВОрдере", Ключ, Условие, Ложь);
Условие = "НЕ [КоличествоМаксимум], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдераПоДействию, ТаблицаНакладнойПоДействию, "КоличествоВОрдере", Ключ, Условие, Ложь);
Условие = "[КоличествоМаксимум], НЕ [КоличествоВЗаказе], ПО [КоличествоМаксимум]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдераПоДействию, ТаблицаНакладнойПоДействию, "КоличествоВОрдере", Ключ, Условие, Истина);
Иначе
Ключ = СтрЗаменить(Ключ, ", Серия", "");
СтруктураПоиска = Новый Структура("Серия", Справочники.СерииНоменклатуры.ПустаяСсылка());
НайденныеСтроки = ТаблицаНакладнойПоДействию.НайтиСтроки(СтруктураПоиска);
ТаблицаНакладнойПоДействиюПустыеСерии = ТаблицаНакладнойПоДействию.Скопировать(НайденныеСтроки);
Для Каждого СтрокаКУдалению Из НайденныеСтроки Цикл
ТаблицаНакладнойПоДействию.Удалить(СтрокаКУдалению);
КонецЦикла;
Условие = "[КоличествоМаксимум], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдераПоДействию, ТаблицаНакладнойПоДействиюПустыеСерии, "КоличествоВОрдере", Ключ, Условие, Ложь, "Серия");
Условие = "НЕ [КоличествоМаксимум], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдераПоДействию, ТаблицаНакладнойПоДействиюПустыеСерии, "КоличествоВОрдере", Ключ, Условие, Ложь, "Серия");
Условие = "[КоличествоМаксимум], НЕ [КоличествоВЗаказе], ПО [КоличествоМаксимум]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдераПоДействию, ТаблицаНакладнойПоДействиюПустыеСерии, "КоличествоВОрдере", Ключ, Условие, Истина, "Серия");
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаНакладнойПоДействиюПустыеСерии, ТаблицаНакладнойПоДействию);
ВозможноПревышениеКоличестваПоДокументу = Истина;
КонецЕсли;
КонецЦикла;
НакладныеСервер.ДополнитьТаблицу(ТаблицаОрдераПоДействию, ТаблицаНакладнойПоДействию, "КоличествоВОрдере");
ДопустимыеТипыДокументаОснования = Новый Массив();
ДопустимыеТипыДокументаОснования.Добавить(Тип("ДокументСсылка.ВозвратТоваровОтКлиента"));
ДопустимыеТипыДокументаОснования.Добавить(Тип("ДокументСсылка.ПриобретениеТоваровУслуг"));
ДопустимыеТипыДокументаОснования.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровОтХранителя"));
ДопустимыеТипыДокументаОснования.Добавить(Тип("ДокументСсылка.ПриемкаТоваровНаХранение"));
ПараметрыОтбора = Новый Структура("ЗаказПоставщику", Документы.ЗаказПоставщику.ПустаяСсылка());
СтрокиСПустымЗаказом = ТаблицаНакладнойПоДействию.НайтиСтроки(ПараметрыОтбора);
ПараметрыОтбора.ЗаказПоставщику = Неопределено;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(СтрокиСПустымЗаказом, ТаблицаНакладнойПоДействию.НайтиСтроки(ПараметрыОтбора));
Для Каждого Строка Из СтрокиСПустымЗаказом Цикл
Если ТипЗнч(Строка.Распоряжение) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
Строка.ЗаказПоставщику = Строка.Распоряжение;
ПараметрыОтбора.ЗаказПоставщику = Строка.Распоряжение;
СтрокиСДокументомОснованием = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
НайденныйДокументОснование = СтрокиСДокументомОснованием[0].ДокументОснование;
Если СтрокиСДокументомОснованием.Количество() > 0
И ДопустимыеТипыДокументаОснования.Найти(ТипЗнч(НайденныйДокументОснование)) <> Неопределено Тогда
Строка.ДокументОснование = НайденныйДокументОснование;
КонецЕсли;
ИначеЕсли ДопустимыеТипыДокументаОснования.Найти(ТипЗнч(Строка.Распоряжение)) <> Неопределено Тогда
Строка.ДокументОснование = Строка.Распоряжение;
КонецЕсли;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаНакладнойПоДействию, РезультирующаяТаблица);
КонецЦикла;
КолонкаКоличество = РезультирующаяТаблица.Колонки.Количество;
КолонкаКоличествоВОрдере = РезультирующаяТаблица.Колонки.КоличествоВОрдере;
КолонкаКоличество.Имя = "КоличествоДоИзменения";
КолонкаКоличествоВОрдере.Имя = "Количество";
КолонкаКоличество = РезультирующаяТаблицаСерии.Колонки.Количество;
КолонкаКоличествоВОрдере = РезультирующаяТаблицаСерии.Колонки.КоличествоВОрдере;
КолонкаКоличество.Имя = "КоличествоДоИзменения";
КолонкаКоличествоВОрдере.Имя = "Количество";
СтрокиНеПоДокументу = РезультирующаяТаблица.НайтиСтроки(Новый Структура("КоличествоПоДокументу", 0));
Для каждого Строка Из СтрокиНеПоДокументу Цикл
Если Строка.Количество = 0 Тогда
РезультирующаяТаблица.Удалить(Строка);
КонецЕсли;
КонецЦикла;
Если ВозможноПревышениеКоличестваПоДокументу Тогда
Если Не ВозможноОднозначноИдентифицироватьРаспоряжение Тогда
Ключ = "Склад, Номенклатура, Характеристика, Серия, Назначение";
Иначе
Ключ = "Распоряжение, Склад, Номенклатура, Характеристика, Серия, Назначение";
КонецЕсли;
Условие = "[КоличествоПоДокументу], ПО [КоличествоПоДокументу]";
ТаблицаНакладнаяИсходная.Колонки.КоличествоПоДокументу.Имя = "КоличествоПоДокументуНовое";
РезультирующаяТаблица.ЗаполнитьЗначения(Ложь, "ЗаполненоПоОснованию");
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаНакладнаяИсходная, РезультирующаяТаблица, "КоличествоПоДокументуНовое", Ключ, Условие, Ложь, "ЗаполненоПоОснованию");
Ключ = СтрЗаменить(Ключ, ", Серия", "");
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаНакладнаяИсходная, РезультирующаяТаблица, "КоличествоПоДокументуНовое", Ключ, Условие, Ложь, "ЗаполненоПоОснованию");
РезультирующаяТаблица.Колонки.КоличествоПоДокументу.Имя = "КоличествоПоДокументуСтарое";
РезультирующаяТаблица.Колонки.КоличествоПоДокументуНовое.Имя = "КоличествоПоДокументу";
КонецЕсли;
РезультирующаяТаблица.Сортировать("НомерСтроки");
ФактПоПриемке.РезультирующаяТаблица = РезультирующаяТаблица;
ФактПоПриемке.РезультирующаяТаблицаСерии = РезультирующаяТаблицаСерии;
Возврат ФактПоПриемке;
КонецФункции
&НаСервере
Функция ЗаполнитьПоПриемкеСервер()
УстановитьПривилегированныйРежим(Истина);
ОрдернаяСхемаПриПриемке = ОрдернаяСхемаПриПриемке();
УстановитьПривилегированныйРежим(Ложь);
Если Не ОрдернаяСхемаПриПриемке Тогда
Возврат Ложь;
КонецЕсли;
СкладыТаблицы = Объект.Товары.Выгрузить(,"Склад").ВыгрузитьКолонку("Склад");
СкладыТаблицы = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СкладыТаблицы);
РезультирующаяТаблица = Объект.Товары.Выгрузить(Новый Массив).СкопироватьКолонки();
РезультирующаяТаблицаСерии = РезультирующаяТаблица.СкопироватьКолонки();
Для Каждого Склад Из СкладыТаблицы Цикл
ФактПоПриемке = ПолучитьФактПоПриемке(Склад);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ФактПоПриемке.РезультирующаяТаблица, РезультирующаяТаблица);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ФактПоПриемке.РезультирующаяТаблицаСерии, РезультирующаяТаблицаСерии);
КонецЦикла;
Объект.Товары.Загрузить(РезультирующаяТаблица);
Объект.Серии.Загрузить(РезультирующаяТаблицаСерии);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(Объект, ПараметрыУказанияСерий);
Документы.АктОРасхожденияхПослеПриемки.ОбновитьЗависимыеРеквизитыПослеЗаполненияФактаПоПриемке(Объект);
РасхожденияСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(Объект);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
УчетНДСНеВедется = РасхожденияКлиентСервер.УчетНДСНеВедется(Объект.ТипОснованияАктаОРасхождении);
ДанныеСтрокиДоИзменения = Неопределено;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
Если Объект.ТипОснованияАктаОРасхождении =
ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг")
Или Объект.ТипОснованияАктаОРасхождении =
ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение")
Тогда
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
КонецЕсли;
Если Не УчетНДСНеВедется Тогда
СтруктураПересчетаСуммы =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");
ДанныеДоОбработки = Новый Соответствие;
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовары Из Объект.Товары Цикл
Если НЕ ЗначениеЗаполнено(СтрокаТовары.ДокументОснование) Тогда
СамообслуживаниеКлиентСервер.ЗаполнитьДокументОснованиеВСтроке(СтрокаТовары, ДокументыОснования, Ложь);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(СтрокаТовары.ВидЦеныПоставщика) Тогда
Если ДанныеСтрокиДоИзменения = Неопределено Тогда
ДанныеСтрокиДоИзменения = СформироватьСтруктуруДляДанныхСтрокиДоИзменения();
КонецЕсли;
ЗаполнитьЗначенияСвойств(ДанныеСтрокиДоИзменения, СтрокаТовары);
ДанныеДоОбработки.Вставить(СтрокаТовары, Новый ФиксированнаяСтруктура(ДанныеСтрокиДоИзменения));
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаТовары Из ОбрабатываемыеСтроки Цикл
Если СтрокаТовары.Цена = 0 Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, ДанныеДоОбработки.Получить(СтрокаТовары));
КонецЕсли;
КонецЦикла;
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг Тогда
ЗаполнитьРеквизитыМногооборотнойТары();
КонецЕсли;
РасхожденияСервер.ФормированиеНадписиДокументыОснование(ЭтотОбъект);
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
Возврат Истина;
КонецФункции
&НаСервере
Функция СформироватьСтруктуруДляДанныхСтрокиДоИзменения()
СтруктураСтроки = Новый Структура();
КолонкиТаблицыТовары = Объект.Товары.Выгрузить(Новый Массив()).Колонки;
Для Каждого Колонка Из КолонкиТаблицыТовары Цикл
СтруктураСтроки.Вставить(Колонка.Имя);
КонецЦикла;
Возврат СтруктураСтроки;
КонецФункции
&НаСервере
Функция ДополнитьТаблицуСпособомСоединения(Таблица, ПараметрыУказанияСерий, ОрдернаяСхемаПриПриемке)
Таблица.Колонки.Добавить("СпособСоединения", Новый ОписаниеТипов("Строка"));
НомерСтроки = 1;
Для Каждого Строка Из Таблица Цикл
Строка["НомерСтроки"] = НомерСтроки;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
ОбъектДляЗаполненияСерий = Новый Структура();
ОбъектДляЗаполненияСерий.Вставить("Товары", Таблица);
ОбъектДляЗаполненияСерий.Вставить("Серии", Таблица.СкопироватьКолонки());
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ОбъектДляЗаполненияСерий, ПараметрыУказанияСерий);
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.НомерСтроки,
| ВЫБОР
| КОГДА &ОрдернаяСхемаПриПриемке
| И Таблица.СтатусУказанияСерийПолучатель В (0)
| ТОГДА ""А0""
| КОГДА &ОрдернаяСхемаПриПриемке
| И Таблица.СтатусУказанияСерийПолучатель В (13, 14)
| ТОГДА ""А1""
| ИНАЧЕ ""А3""
| КОНЕЦ КАК СпособСоединения
|ПОМЕСТИТЬ ВтТовары
|ИЗ
| &Таблица КАК Таблица
|;
|
|
|ВЫБРАТЬ
| ВтТовары.НомерСтроки,
| ВтТовары.СпособСоединения
|ИЗ
| ВтТовары КАК ВтТовары";
Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапроса;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Таблица", ОбъектДляЗаполненияСерий.Товары);
Запрос.УстановитьПараметр("ОрдернаяСхемаПриПриемке", ОрдернаяСхемаПриПриемке);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Строка = Таблица[Выборка.НомерСтроки - 1];
Строка.СпособСоединения = Выборка.СпособСоединения;
КонецЦикла;
Таблица.Сортировать("СпособСоединения");
Возврат Таблица;
КонецФункции
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение)
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, КэшированныеЗначения)
РасхожденияСервер.ОбработкаВыбораПодборНаСервере(ЭтотОбъект, КэшированныеЗначения, ВыбранноеЗначение, Ложь);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище, КэшированныеЗначения)
СамообслуживаниеСервер.ПолучитьЗагруженныеТоварыИзХранилища(ЭтотОбъект,
КэшированныеЗначения,
АдресТоваровВХранилище,
Ложь);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
СтруктураДействий = Новый Структура;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
СтрокиКУдалению = Новый Массив();
СтрокиКОбработке = Новый Массив();
Для Каждого СтрокаТЧТовары Из Объект.Товары Цикл
Если СтрокаТЧТовары.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
Или СтрокаТЧТовары.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара Тогда
СтрокиКОбработке.Добавить(СтрокаТЧТовары);
Иначе
СтрокиКУдалению.Добавить(СтрокаТЧТовары);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
СтрокиКОбработке,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаКУдалению из СтрокиКУдалению Цикл
Объект.Товары.Удалить(СтрокаКУдалению);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУсловияПродаж()
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ПриИзмененииХозяйственнойОперацииСервер();
РасхожденияСервер.УстановитьДоступностьДоговора(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУсловияЗакупок()
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияЗакупокПоУмолчанию();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
РасхожденияСервер.УстановитьДоступностьДоговора(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработатьПодборДокументовОснований(МассивДокументовОснований, ПараметрВариантЗаполнения)
ВариантЗаполнения = ПараметрВариантЗаполнения;
РасхожденияСервер.СформироватьТаблицуДокументовОснований(ЭтотОбъект, МассивДокументовОснований);
ЗаполнитьПоОснованиям();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ЗаполнитьРеквизитыМногооборотнойТары();
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДС(НалогообложениеНДСПродажи = Истина, НалогообложениеНДСЗакупки = Истина)
Если РасхожденияКлиентСервер.ТипОснованияПриобретениеТоваровУслуг(Объект.ТипОснованияАктаОРасхождении) И НалогообложениеНДСЗакупки Тогда
ПараметрыЗаполнения = Документы.АктОРасхожденияхПослеПриемки.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(Объект.НалогообложениеНДС, ПараметрыЗаполнения);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента И НалогообложениеНДСПродажи Тогда
ПараметрыЗаполнения = Документы.АктОРасхожденияхПослеПриемки.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС, ПараметрыЗаполнения);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьРасхожденияПослеПриемки");
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
СтрокиНаУдаление = Новый Массив;
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
Если СтрокаТабличнойЧасти.ЗаполненоПоОснованию Тогда
СтрокиНаУдаление.Добавить(СтрокаТабличнойЧасти);
Продолжить;
КонецЕсли;
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
Для каждого СтрокаНаУдаление Из СтрокиНаУдаление Цикл
ВыделенныеСтроки.Удалить(ВыделенныеСтроки.Найти(СтрокаНаУдаление));
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СтандартныеПодсистемы
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ПриИзмененииКлючевыхРеквизитовСостояниеЭДО()
ПараметрыПриИзменении = ОбменСКонтрагентами.ПараметрыПриИзмененииКлючевыхРеквизитовЭДО();
ПараметрыПриИзменении.Форма = ЭтотОбъект;
ПараметрыПриИзменении.ДокументСсылка = Объект.Ссылка;
ПараметрыПриИзменении.ДокументОбъект = РеквизитФормыВЗначение("Объект");
ПараметрыПриИзменении.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПриИзменении.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриИзмененииКлючевыхРеквизитовЭДО(ПараметрыПриИзменении);
КонецПроцедуры
&НаКлиенте
Процедура КомментарийМенеджераНачалоВыбора()
РасхожденияКлиент.КомментарийНачалоВыбора(ЭтотОбъект,
"КомментарийМенеджера",
"ЕстьКомментарийМенеджера",
"ТоварыКомментарийМенеджераПодвал");
КонецПроцедуры
&НаКлиенте
Процедура КомментарийПоставщикаНачалоВыбора()
РасхожденияКлиент.КомментарийНачалоВыбора(ЭтотОбъект,
"КомментарийПоставщика",
"ЕстьКомментарийПоставщика",
"ТоварыКомментарийПоставщикаПодвал");
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьИсправлениеДокументов = ПолучитьФункциональнуюОпцию("ИспользоватьИсправлениеДокументов");
ИспользоватьКорректировкиПриобретений = ПолучитьФункциональнуюОпцию("ИспользоватьКорректировкиПриобретений");
РасхожденияСервер.УстановитьЗначенияКешируемыхРеквизитовФормыАкта(ЭтотОбъект);
ЗапретитьПоступлениеТоваровБезНомеровГТД = ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД");
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров = УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(
Объект.Дата);
УправлениеРеквизитамиФормыВЗависимостиОтТипаОснования();
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.АктОРасхожденияхПослеПриемки));
УстановитьВидимостьЭлементовСерий();
РасхожденияСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(Объект);
УстановитьВидимостьСпособыОтражения();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
РасхожденияСервер.ФормированиеНадписиДокументыОснование(ЭтотОбъект);
РасхожденияСервер.ОпределитьДоступныеСпособыОтработкиАктаВЗависимостиОтСостоянияДокументаЭДО(ЭтотОбъект);
СформироватьТаблицуЗаказыСделки();
РасхожденияСервер.УстановитьДоступностьДоговора(ЭтотОбъект);
РасхожденияСервер.УправлениеВидимостьюНДС(ЭтотОбъект);
РасхожденияСервер.ЗаполнитьЗависимыеРеквизитыТоваровРасхожденияПослеПриемки(Объект);
УстановитьВидимостьЭлементовПоОперацииСервер();
РасхожденияКлиентСервер.РассчитатьИтоговыеПоказателиФормы(ЭтотОбъект);
РасхожденияСервер.СформироватьНадписьСпособаОтраженияРасхождений(
ЭтотОбъект,
Объект.Товары,
Элементы.НадписьРасхождения,
Элементы.ОформитьДокументы,
ТипЗнч(Объект.Ссылка),
ТипОперации());
Элементы.ГруппаСпособОтражения.Доступность = Элементы.НадписьРасхождения.Доступность;
РасхожденияКлиентСервер.УправлениеДоступностью(ЭтотОбъект);
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
Если Объект.ТипОснованияАктаОРасхождении = ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриемкаТоваровНаХранение") Тогда
Объект.ХозяйственнаяОперация = ПредопределенноеЗначение(
"Перечисление.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи");
КонецЕсли;
Если РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(Объект.ТипОснованияАктаОРасхождении) Тогда
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействийПоТипуОснованияАкта(Объект.ТипОснованияАктаОРасхождении);
Объект.ХозяйственнаяОперация = Обработчик.ХозяйственнаяОперация();
КонецЕсли;
ВариантЗаполнения = "Вариант1";
ПоказыватьПояснение = ПолучитьФункциональнуюОпцию("ИспользоватьКорректировкиПриобретений")
И (Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг);
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента Тогда
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор");
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента") Тогда
Элементы.ТоварыЗаполнитьФактПоПриемке.Видимость = Ложь;
КонецЕсли;
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратОтКомиссионера Тогда
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор", Истина);
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента") Тогда
Элементы.ТоварыЗаполнитьФактПоПриемке.Видимость = Ложь;
КонецЕсли;
ИначеЕсли РасхожденияКлиентСервер.ТипОснованияПоступлениеТоваровОтХранителя(Объект.ТипОснованияАктаОРасхождении) Тогда
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействийПоТипуОснованияАкта(Объект.ТипОснованияАктаОРасхождении);
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор", Не Обработчик.СоглашенияСКлиентамиПрименимы());
Если Не Обработчик.ИспользоватьРасширенныеВозможностиЗаказаКлиента() Тогда
Элементы.ТоварыЗаполнитьФактПоПриемке.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
Если РасхожденияКлиентСервер.ТипОснованияПриобретениеТоваровУслуг(Объект.ТипОснованияАктаОРасхождении) Тогда
ПараметрыЗаполнения = Документы.АктОРасхожденияхПослеПриемки.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ИначеЕсли Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ВозвратТоваровОтКлиента Тогда
ПараметрыЗаполнения = Документы.АктОРасхожденияхПослеПриемки.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
Если Объект.ТипОснованияАктаОРасхождении = Перечисления.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг Тогда
ЗаполнитьРеквизитыМногооборотнойТары();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьТаблицуЗаказыСделки()
ЗаказыСделки.Очистить();
МассивЗаказовПоставщику = Новый Массив;
Для Каждого СтрокаОснование Из ДокументыОснования Цикл
Для Каждого ЭлементСписка Из СтрокаОснование.ЗаказыОснования Цикл
Если ТипЗнч(ЭлементСписка.Значение) = Тип("ДокументСсылка.ЗаказПоставщику")
И МассивЗаказовПоставщику.Найти(ЭлементСписка.Значение) = Неопределено Тогда
МассивЗаказовПоставщику.Добавить(ЭлементСписка.Значение);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если МассивЗаказовПоставщику.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ЗаказПоставщику.Ссылка КАК ЗаказПоставщику,
| ЗаказПоставщику.Сделка КАК Сделка
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
| ЗаказПоставщику.Ссылка В (&МассивЗаказов)";
Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказовПоставщику);
ЗаказыСделки.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
&НаСервере
Функция ТипОперации()
ОперацииДвухходовки = ЗакупкиСервер.ХозяйственныеОперацииРаздельнойЗакупкиБезОтборов();
Если Объект.СпособОтраженияРасхождений = Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ОформлениеКорректировокПоступления
И ОперацииДвухходовки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
Возврат "ДвухходовкаОформлениеКорректировок";
Иначе
Возврат "";
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ХозяйственныеОперацииИмпорта()
ХозяйственныеОперацииИмпорта = Новый СписокЗначений;
ХозяйственныеОперацииИмпорта.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпорту"));
ХозяйственныеОперацииИмпорта.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути"));
Возврат ХозяйственныеОперацииИмпорта;
КонецФункции
&НаСервере
Процедура ДоговорПриИзмененииНаСервере()
Если ДоговорДоИзменения <> Объект.Договор Тогда
Распоряжение = РаспоряжениеДляПолученияВариантаПриемкиТоваров();
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Распоряжение, Объект.Договор);
ЗаполнитьНалогообложениеНДС();
ПриИзмененииНалогообложенияНДССервер();
КонецЕсли;
ДоговорДоИзменения = Объект.Договор;
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
КонецПроцедуры
&НаСервере
Функция РаспоряжениеДляПолученияВариантаПриемкиТоваров()
ВариантПриемкиТоваровДоговор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВариантПриемкиТоваров");
Если Объект.Соглашение <> Неопределено
И ТипЗнч(Объект.Соглашение) = Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
ВариантПриемкиТоваровСоглашение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ВариантПриемкиТоваров");
Иначе
ВариантПриемкиТоваровСоглашение = Перечисления.ВариантыПриемкиТоваров.ПустаяСсылка();
КонецЕсли;
ОрдернаяСхемаПриПриемке = ОрдернаяСхемаПриПриемке();
Если Справочники.ДоговорыКонтрагентов.ДоговорИспользуетсяПриПриемке(ВариантПриемкиТоваровДоговор)
И ОрдернаяСхемаПриПриемке Тогда
Возврат Объект.Договор;
ИначеЕсли Справочники.СоглашенияСПоставщиками.СоглашениеИспользуетсяПриПриемке(ВариантПриемкиТоваровСоглашение)
И ОрдернаяСхемаПриПриемке Тогда
Возврат Объект.Соглашение;
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаСервере
Функция ОрдернаяСхемаПриПриемке()
СкладыТаблицы = Объект.Товары.Выгрузить(,"Склад").ВыгрузитьКолонку("Склад");
ОрдернаяСхемаПриПриемке = СкладыСервер.ЕстьОрдерныйНаПоступлениеСклад(СкладыТаблицы, Объект.Дата);
Возврат ОрдернаяСхемаПриПриемке;
КонецФункции
&НаСервереБезКонтекста
Функция ИспользоватьОрдернуюСхемуПриПоступлении(Склад, Дата)
Возврат СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Склад, Дата);
КонецФункции
&НаСервере
Процедура ДатаПриИзмененииСервер()
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров = УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(
Объект.Дата);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеквизитыМногооборотнойТары()
ТекущийДокументОснования = Неопределено;
НайденнаяСтрока = Неопределено;
Для каждого СтрокаТаблицыТовары Из Объект.Товары Цикл
Если ТекущийДокументОснования <> СтрокаТаблицыТовары.ДокументОснование Тогда
ТекущийДокументОснования = СтрокаТаблицыТовары.ДокументОснование;
НайденныеСтроки = ДокументыОснования.НайтиСтроки(Новый Структура("Реализация", ТекущийДокументОснования));
Если НайденныеСтроки.Количество() > 0 Тогда
НайденнаяСтрока = НайденныеСтроки[0];
иначе
НайденнаяСтрока = Неопределено;
КонецЕсли;
КонецЕсли;
Если НайденнаяСтрока <> Неопределено Тогда
ЗаполнитьРеквизитыМногооборотнойТарыВСтроке(
Объект.ТипОснованияАктаОРасхождении, СтрокаТаблицыТовары, НайденнаяСтрока);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьРеквизитыМногооборотнойТарыВСтроке(ТипОснованияАкта, СтрокаТаблицыТовары, СтрокаДокументыОснования)
Если ТипОснованияАкта =
ПредопределенноеЗначение("Перечисление.ТипыОснованияАктаОРасхождении.ПриобретениеТоваровУслуг") Тогда
СтрокаТаблицыТовары.ВернутьМногооборотнуюТару = СтрокаДокументыОснования.ВернутьМногооборотнуюТару;
СтрокаТаблицыТовары.ТребуетсяЗалогЗаТару = СтрокаДокументыОснования.ТребуетсяЗалогЗаТару;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере()
КомиссионерНеВедетУчетПоРНПТ =
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
И Не Справочники.СоглашенияСКлиентами.КомиссионерВедетУчетПоРНПТ(Объект.Соглашение);
КонецПроцедуры
#КонецОбласти
#Область Тексты
&НаСервере
Функция ТекстВариантаДействияНаПрочиеРасходыИЗаСчетСтороннейКомпании(ХозяйственнаяОперация)
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ТекстВариантаДействия = НСтр("ru = 'Списать за счет сторонней компании'");
Иначе
ТекстВариантаДействия = НСтр("ru = 'Списать за счет поставщика'");
КонецЕсли;
Возврат ТекстВариантаДействия;
КонецФункции
#КонецОбласти
#КонецОбласти