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