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