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