#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ИнициализироватьПараметрыЗаполненияВидовЗапасовДляПроведения(ДокументОбъект, РежимЗаписи = Неопределено) Экспорт
ПараметрыЗаполнения = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.Сторно") Тогда
Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
ПараметрыЗаполнения.ИгнорироватьПрослеживаемыеРаботыЗакупкиПодПринципала = Истина;
КонецЕсли;
Иначе
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ПараметрыЗаполнения.ИгнорироватьПрослеживаемыеРаботыЗакупкиПодПринципала = Истина;
КонецЕсли;
КонецЕсли;
ДокументОбъект.ДополнительныеСвойства.Вставить("ПараметрыЗаполненияВидовЗапасов", ПараметрыЗаполнения);
ДокументОбъект.ДополнительныеСвойства.Вставить("ОтключитьКонтрольТоваровКОформлениюОтчетовКомитентуОЗакупках", Истина);
КонецПроцедуры
Процедура ЗаполнитьВидыЗапасовПриОбмене(Отказ, ТаблицыДокумента = Неопределено) Экспорт
ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров();
ЗаполнитьВидыЗапасов(Отказ);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение
И ЗначениеЗаполнено(ДокументОснование)
И Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование,"Проведен") Тогда
ЗакупкиСервер.СообщитьОбОшибкахПроведенияПоНепроведенномуОснованию(ДокументОснование, Отказ);
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ИсправлениеДокументов.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
ПроверитьЦепочкуИсправленийПередЗаписью(Отказ, РежимЗаписи);
ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
НоменклатураСервер.ОкруглитьКоличествоШтучныхТоваров(ЭтотОбъект, РежимЗаписи);
Если ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУвеличениеЗадолженностиСводно
ИЛИ ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно Тогда
СуммаДокумента = КорректировкаЗадолженности.Итог("СуммаКорректировки");
Иначе
СуммаДокумента = ЦенообразованиеКлиентСервер.ПолучитьСуммуДокумента(
Товары,
ЦенаВключаетНДС ИЛИ НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя);
КонецЕсли;
Если ЗначениеЗаполнено(ДокументОснование) Тогда
ТипОснования = ТипЗнч(ДокументОснование);
Если (ТипОснования = Тип("ДокументСсылка.ПриобретениеТоваровУслуг")
Или ТипОснования = Тип("ДокументСсылка.АктОРасхожденияхПослеПриемки")) Тогда
РеквизитыОснования = "ВариантПриемкиТоваров, ХозяйственнаяОперация";
ИначеЕсли ТипОснования <> Тип("ДокументСсылка.ПервичныйДокумент")
И ТипОснования <> Тип("ДокументСсылка.ОтчетПереработчика2_5")
И ТипОснования <> Тип("Неопределено") Тогда
РеквизитыОснования = "ХозяйственнаяОперация";
Иначе
РеквизитыОснования = "";
КонецЕсли;
Если ЗначениеЗаполнено(РеквизитыОснования) Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументОснование, РеквизитыОснования);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ЗначенияРеквизитов, РеквизитыОснования);
КонецЕсли;
КонецЕсли;
ПараметрыРегистрации = Документы.КорректировкаПриобретения.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПередЗаписью(ПараметрыРегистрации, РежимЗаписи, ПометкаУдаления, Проведен);
ВзаиморасчетыСервер.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи);
Если ТипКорректировки = Перечисления.ТипыКорректировки.КорректировкаДоВводаОстатковТоваровИУслуг
Или ТипКорректировки = Перечисления.ТипыКорректировки.КорректировкаДоВводаОстатковУслугИПрочихАктивов Тогда
Коэффициенты = РаботаСКурсамиВалютУТ.ПолучитьКоэффициентыПересчетаВалюты(Валюта,ВалютаВзаиморасчетов,Дата,Организация,КурсЧислитель,КурсЗнаменатель);
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.Вставить("ИмяРеквизитаТЧСуммаСНДС", "СуммаСНДС");
СтруктураПараметров.Вставить("СуммаВзаиморасчетов", Товары.Итог("СуммаСНДС") * Коэффициенты.КоэффициентПересчетаВВалютуВзаиморасчетов);
СтруктураПараметров.Вставить("СуммаВзаиморасчетовПоТаре", "");
СтруктураПараметров.Вставить("КурсЧислитель", КурсЧислитель);
СтруктураПараметров.Вставить("КурсЗнаменатель", КурсЗнаменатель);
СтруктураПараметров.Вставить("ВалютаДокумента", Валюта);
СтруктураПараметров.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
СтруктураПараметров.Вставить("Организация", Организация);
СтруктураПараметров.Вставить("ПутьКДаннымТЧ", "Объект.Товары");
ВзаиморасчетыСервер.ПроверитьЗаполнитьСуммыВзаиморасчетовВТабличнойЧасти(ЭтотОбъект, СтруктураПараметров);
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ПроверитьЗаполненностиСуммыВзаиморасчетов(Отказ);
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТ.ИзменитьПризнакСогласованностиДокумента(
ЭтотОбъект,
РежимЗаписи);
УчетПрослеживаемыхТоваровЛокализация.ОчиститьНомераГТДУПрослеживаемыхРабот(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.ОчиститьНомераГТДУПрослеживаемыхРабот(ЭтотОбъект, "Расхождения");
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС Тогда
Для Каждого Строка Из Товары Цикл
Если Не ЗначениеЗаполнено(Строка.СтавкаНДС) Тогда
Строка.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из Расхождения Цикл
Если Не ЗначениеЗаполнено(Строка.СтавкаНДС) Тогда
Строка.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров();
ЗаполнитьВидыЗапасов(Отказ);
ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
Для Каждого Строка Из Расхождения Цикл
Если ЗначениеЗаполнено(Строка.ВидЗапасов) Тогда
Строка.ВидЗапасов = Неопределено
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(ЭтотОбъект, "Расхождения,ВидыЗапасов,КорректировкаЗадолженности");
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
Документы.КорректировкаПриобретения.ЗаполнитьИменаРеквизитовПоОснованию(
ДокументОснование,
МассивВсехРеквизитов,
МассивРеквизитовОперации,
ТипКорректировки);
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизиты(
ЭтотОбъект,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект,
НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.КорректировкаПриобретения));
ОтразитьНаПрочихДоходах = Ложь;
СписатьНаРасходы = Ложь;
Если ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУвеличениеЗадолженностиСводно Тогда
СписатьНаРасходы = Истина;
ИначеЕсли ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно Тогда
ОтразитьНаПрочихДоходах = Истина;
Иначе
Для Каждого СтрокаРасхождений Из Расхождения Цикл
Если СтрокаРасхождений.ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокПоступлений.ОтразитьНаПрочихДоходах Тогда
ОтразитьНаПрочихДоходах = Истина;
ИначеЕсли СтрокаРасхождений.ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокПоступлений.СписатьНаРасходы Тогда
СписатьНаРасходы = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПараметрыДляВыбора = Новый Структура;
ПараметрыДляВыбора.Вставить("ХозяйственнаяОперация", ВидКорректировки);
ПараметрыДляВыбора.Вставить("ДокументОснование", ДокументОснование);
ПараметрыДляВыбора.Вставить("ДатаДокумента", Дата);
ПараметрыДляВыбора.Вставить("ОтразитьНаПрочихДоходах", ОтразитьНаПрочихДоходах);
ПараметрыДляВыбора.Вставить("СписатьНаРасходы", СписатьНаРасходы);
ПараметрыДляВыбора.Вставить("ТипКорректировки", ТипКорректировки);
ПараметрыВыбораСтатейИАналитик = Документы.КорректировкаПриобретения.ПараметрыВыбораСтатейИАналитик(ПараметрыДляВыбора);
ДоходыИРасходыСервер.ПередЗаписью(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
НастройкаСчетовУчетаСервер.ПередЗаписью(ЭтотОбъект,
Документы.КорректировкаПриобретения.ПараметрыНастройкиСчетовУчета(ПараметрыДляВыбора));
Если ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУвеличениеЗадолженностиСводно
ИЛИ ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно Тогда
ЦенаВключаетНДС = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(Автор) И ЭтоНовый() Тогда
Автор = Пользователи.ТекущийПользователь();
КонецЕсли;
Если Не ЗначениеЗаполнено(ТипКорректировки) Тогда
ТипКорректировки = Перечисления.ТипыКорректировки.ОбычнаяКорректировка;
КонецЕсли;
КорректировкаПриобретенияЛокализация.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
ЗаполнитьПоПоступлениюТоваровУслуг(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПриобретениеУслугПрочихАктивов") Тогда
ЗаполнитьПоПоступлениюУслугПрочихАктивов(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПервичныйДокумент") Тогда
ЗаполнитьПоПервичномуДокументу(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ОтчетПереработчика2_5") Тогда
ЗаполнитьПоОтчетуПереработчика(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("АктОРасхождениях")
И ДанныеЗаполнения.Свойство("ОснованиеАкта") Тогда
ЗаполнитьПоАктуОРасхождениях(ДанныеЗаполнения, ДанныеЗаполнения);
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")И ДанныеЗаполнения.Свойство("ХозяйственнаяОперация") Тогда
Если ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУвеличениеЗадолженностиСводно Тогда
ДанныеЗаполнения.Вставить("ВидКорректировки", Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУвеличениеЗадолженностиСводно);
ИначеЕсли ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно Тогда
ДанныеЗаполнения.Вставить("ВидКорректировки", Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно);
ИначеЕсли ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КорректировкаПоСогласованиюСторон
Или ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ИсправлениеОшибок Тогда
ДанныеЗаполнения.Вставить("ВидКорректировки", ДанныеЗаполнения.ХозяйственнаяОперация);
ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика;
Иначе
ДанныеЗаполнения.Вставить("ВидКорректировки", Перечисления.ХозяйственныеОперации.ИсправлениеОшибок);
КонецЕсли;
Если ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КорректировкаДоВводаОстатков Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика;
ДокументОснование = Документы.ПервичныйДокумент.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
ИнициализироватьДокумент(ДанныеЗаполнения);
КорректировкаПриобретенияЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка);
ПараметрДокументОснование = ДокументОснование;
ПараметрДата = Дата;
ПараметрВидКорректировки = ВидКорректировки;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
Если НЕ ЗначениеЗаполнено(ПараметрДокументОснование) Тогда
ДанныеЗаполнения.Свойство("ДокументОснование", ПараметрДокументОснование);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ПараметрДата) И
НЕ ДанныеЗаполнения.Свойство("Дата", ПараметрДата) Тогда
ПараметрДата = ТекущаяДатаСеанса();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ПараметрВидКорректировки) И
НЕ ДанныеЗаполнения.Свойство("ВидКорректировки", ПараметрВидКорректировки) Тогда
ПараметрВидКорректировки = Перечисления.ХозяйственныеОперации.ИсправлениеОшибок;
КонецЕсли;
КонецЕсли;
ПараметрыДляВыбора = Новый Структура;
ПараметрыДляВыбора.Вставить("ХозяйственнаяОперация", ПараметрВидКорректировки);
ПараметрыДляВыбора.Вставить("ДокументОснование", ПараметрДокументОснование);
ПараметрыДляВыбора.Вставить("ДатаДокумента", ПараметрДата);
ПараметрыДляВыбора.Вставить("ТипКорректировки", ТипКорректировки);
ПараметрыВыбораСтатейИАналитик = Документы.КорректировкаПриобретения.ПараметрыВыбораСтатейИАналитик(ПараметрыДляВыбора);
ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ВзаиморасчетыСервер.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
МассивНепроверяемыхРеквизитов = Новый Массив;
Документы.КорректировкаПриобретения.ЗаполнитьИменаРеквизитовПоОснованию(
ДокументОснование,
МассивВсехРеквизитов,
МассивРеквизитовОперации,
ТипКорректировки);
Для Каждого ЭлементМассива Из МассивВсехРеквизитов Цикл
Если МассивРеквизитовОперации.Найти(ЭлементМассива) = Неопределено Тогда
МассивНепроверяемыхРеквизитов.Добавить(ЭлементМассива);
КонецЕсли;
КонецЦикла;
Если ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУвеличениеЗадолженностиСводно
Или ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно Тогда
МассивНепроверяемыхРеквизитов.Добавить("ДокументОснование");
КонецЕсли;
Если Не ЗначениеЗаполнено(Соглашение)
Или Не ОбщегоНазначенияУТ.ЗначениеРеквизитаОбъектаТипаБулево(Соглашение, "ИспользуютсяДоговорыКонтрагентов") Тогда
МассивНепроверяемыхРеквизитов.Добавить("Договор");
КонецЕсли;
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПервичныйДокумент")
Или НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС Тогда
МассивНепроверяемыхРеквизитов.Добавить("Товары.СтавкаНДС");
МассивНепроверяемыхРеквизитов.Добавить("Расхождения.СтавкаНДС");
КонецЕсли;
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПервичныйДокумент")
Или ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПриобретениеУслугПрочихАктивов") Тогда
МассивНепроверяемыхРеквизитов.Добавить("Товары.КоличествоУпаковок");
МассивНепроверяемыхРеквизитов.Добавить("Товары.Количество");
КонецЕсли;
МассивНепроверяемыхРеквизитов.Добавить("Товары.КоличествоПоРНПТ");
МассивНепроверяемыхРеквизитов.Добавить("Товары.НомерГТД");
Если Не ПоступлениеПоЗаказам Тогда
МассивНепроверяемыхРеквизитов.Добавить("Товары.ЗаказПоставщику");
МассивНепроверяемыхРеквизитов.Добавить("Расхождения.ЗаказПоставщику");
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПервичныйДокумент") Тогда
МассивНепроверяемыхРеквизитов.Добавить("Товары.Содержание");
МассивНепроверяемыхРеквизитов.Добавить("Товары.Номенклатура");
МассивНепроверяемыхРеквизитов.Добавить("Товары.Характеристика");
МассивНепроверяемыхРеквизитов.Добавить("Товары.Серия");
МассивНепроверяемыхРеквизитов.Добавить("Товары.Цена");
МассивНепроверяемыхРеквизитов.Добавить("Товары.Сумма");
МассивНепроверяемыхРеквизитов.Добавить("Товары.ВариантОтражения");
МассивНепроверяемыхРеквизитов.Добавить("Товары.АналитикаРасходов");
МассивНепроверяемыхРеквизитов.Добавить("Расхождения.Содержание");
МассивНепроверяемыхРеквизитов.Добавить("Расхождения.Номенклатура");
МассивНепроверяемыхРеквизитов.Добавить("Расхождения.Характеристика");
МассивНепроверяемыхРеквизитов.Добавить("Расхождения.ВариантОтражения");
МассивНепроверяемыхРеквизитов.Добавить("Расхождения.АналитикаРасходов");
ТаблицаКорректировки = Документы.КорректировкаПриобретения.ДанныеКорректировкиДоВводаОстатков(ЭтотОбъект,
ТипКорректировки = Перечисления.ТипыКорректировки.КорректировкаДоВводаОстатковТоваровИУслуг);
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.КорректировкаПриобретения);
ПараметрыУказанияСерий.ИмяТЧТовары = "ТаблицаКорректировки";
ПараметрыУказанияСерий.ИмяТЧСерии = "ТаблицаКорректировки";
ДанныеДокумента = Новый Структура;
ДанныеДокумента.Вставить("Объект", ЭтотОбъект);
ДанныеДокумента.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ДанныеДокумента.Вставить("ТаблицаКорректировки", ТаблицаКорректировки);
Документы.КорректировкаПриобретения.ПроверитьЗаполнениеРеквизитов(ДанныеДокумента, ПроверяемыеРеквизиты, Отказ);
Иначе
Если ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ПриобретениеУслугПрочихАктивов") Тогда
НоменклатураСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);
КонецЕсли;
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ);
ПараметрыПроверки = НоменклатураСервер.ПараметрыПроверкиЗаполненияХарактеристик();
ПараметрыПроверки.ИмяТЧ = "Расхождения";
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,
МассивНепроверяемыхРеквизитов,
Отказ,
ПараметрыПроверки);
НоменклатураСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,
НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.КорректировкаПриобретения),
Отказ,
МассивНепроверяемыхРеквизитов);
Если ЗначениеЗаполнено(ДокументОснование)
И ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
МассивНепроверяемыхРеквизитов.Добавить("Товары.Цена");
МассивНепроверяемыхРеквизитов.Добавить("Товары.Сумма");
СоответствиеНоменклатураТип = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(
Товары.ВыгрузитьКолонку("Номенклатура"),
"ТипНоменклатуры");
ЗначениеРеквизитовДокументаОснования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ДокументОснование,
"ВернутьМногооборотнуюТару, ТребуетсяЗалогЗаТару");
Для ТекИндекс = 0 По Товары.Количество()-1 Цикл
ТекущаяСтрока = Товары[ТекИндекс];
ПроверитьЗаполнениеКолонкиСтроки("Цена",
ЗначениеРеквизитовДокументаОснования,
СоответствиеНоменклатураТип,
ТекущаяСтрока,
Отказ);
ПроверитьЗаполнениеКолонкиСтроки("Сумма",
ЗначениеРеквизитовДокументаОснования,
СоответствиеНоменклатураТип,
ТекущаяСтрока,
Отказ);
КонецЦикла;
Иначе
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КорректировкаОтчетаПереработчика Тогда
МассивНепроверяемыхРеквизитов.Добавить("Товары.Цена");
МассивНепроверяемыхРеквизитов.Добавить("Товары.Сумма");
КонецЕсли;
КонецЕсли;
ЭтоПрослеживаемыйДокумент = УчетПрослеживаемыхТоваровЛокализация.ЭтоПрослеживаемыйДокумент(Товары, Дата);
Если (ЭтоПрослеживаемыйДокумент
Или ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД"))
И ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг")
И ЗначениеЗаполнено(ДокументОснование)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "ХозяйственнаяОперация") <> Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту Тогда
ПараметрыПроверки = ЗапасыСервер.ПараметрыПроверкиЗаполненияНомеровГТД();
ПараметрыПроверки.ПроверятьРаботы = Истина;
ПараметрыПроверки.ХозяйственнаяОперация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "ХозяйственнаяОперация");
ЗапасыСервер.ПроверитьЗаполнениеНомеровГТД(ЭтотОбъект, Отказ, ПараметрыПроверки);
КонецЕсли;
Если ЭтоПрослеживаемыйДокумент Тогда
УчетПрослеживаемыхТоваровЛокализация.ПроверитьКорректностьНастроекТоваровРНПТ(ЭтотОбъект, Товары, Дата);
КонецЕсли;
ПроверятьПодразделениеСтатьиИАналитикуВТЧ = Истина;
Если ЗначениеЗаполнено(ДокументОснование) Тогда
ХозОперацияОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "ХозяйственнаяОперация");
ВариантОформленияЗакупокДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВариантОформленияЗакупок");
ОперацииНеотфактурованнойПоставки = Новый Массив;
ОперацииНеотфактурованнойПоставки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
ОперацииНеотфактурованнойПоставки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
ПроверятьПодразделениеСтатьиИАналитикуВТЧ = НЕ (ОперацииНеотфактурованнойПоставки.Найти(ХозОперацияОснования) <> Неопределено
И ВариантОформленияЗакупокДоговора = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг);
Если Дата < ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Дата") Тогда
ТекстОшибки = НСтр("ru='Дата документа не должна быть меньше даты документа основания.'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, "Объект.Дата",, Отказ);
КонецЕсли;
КонецЕсли;
Если ПроверятьПодразделениеСтатьиИАналитикуВТЧ
И ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ПриобретениеУслугПрочихАктивов") Тогда
МассивНепроверяемыхРеквизитов.Добавить("Товары.Подразделение");
ТипыНоменклатуры = Новый Массив;
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ТекстОшибки = НСтр("ru = 'Не указан получатель товаров/работ/услуг в строке %1 списка Товары'");
ЗапасыСервер.ПроверитьЗаполнениеПодразделенияВТабличнойЧасти(ЭтотОбъект, ТипыНоменклатуры, ТекстОшибки, Отказ);
КонецЕсли;
РезультатПроверкиПоРасхождениям = ПроверитьЗаполнениеПоРасхождениям(МассивНепроверяемыхРеквизитов, Отказ);
ОтразитьНаПрочихДоходах =
РезультатПроверкиПоРасхождениям.ОтразитьНаПрочихДоходах
Или ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно;
СписатьНаРасходы = РезультатПроверкиПоРасхождениям.СписатьНаРасходы
Или ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУвеличениеЗадолженностиСводно;
ПараметрыДляВыбора = Новый Структура;
ПараметрыДляВыбора.Вставить("ХозяйственнаяОперация", ВидКорректировки);
ПараметрыДляВыбора.Вставить("ДокументОснование", ДокументОснование);
ПараметрыДляВыбора.Вставить("ДатаДокумента", Дата);
ПараметрыДляВыбора.Вставить("ОтразитьНаПрочихДоходах", ОтразитьНаПрочихДоходах);
ПараметрыДляВыбора.Вставить("СписатьНаРасходы", СписатьНаРасходы);
ПараметрыДляВыбора.Вставить("ПроверятьСтатьиИАналитику", ПроверятьПодразделениеСтатьиИАналитикуВТЧ);
ПараметрыДляВыбора.Вставить("ТипКорректировки", ТипКорректировки);
ПараметрыВыбораСтатейИАналитик = Документы.КорректировкаПриобретения.ПараметрыВыбораСтатейИАналитик(ПараметрыДляВыбора);
ДоходыИРасходыСервер.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, ПараметрыВыбораСтатейИАналитик);
ЗакупкиСервер.ПроверитьКорректностьЗаполненияДокументаЗакупки(ЭтотОбъект, Отказ);
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
ПроверитьЗаполнениеТаблицыКорректировкаЗадолженности(Отказ);
ПараметрыПроверки = УчетНДСУП.ПараметрыПроверкиЗаполнениеДокументаПоНалогообложениюНДСЗакупки();
ПараметрыПроверки.ИмяТабличнойЧасти = "Товары";
ПараметрыПроверки.ИмяРеквизитаСтатьяРасходов = "СтатьяРасходов";
ПараметрыПроверки.ИмяРеквизитаАналитикаРасходов = "АналитикаРасходов";
УчетНДСУП.ПроверитьЗаполнениеДокументаЗакупкиПоНалогообложениюНДС(ЭтотОбъект, НалогообложениеНДС, ПараметрыПроверки, Отказ);
ПараметрыПроверки = УчетНДСУП.ПараметрыПроверкиЗаполнениеДокументаПоНалогообложениюНДСЗакупки();
ПараметрыПроверки.ИмяТабличнойЧасти = "Расхождения";
ПараметрыПроверки.ИмяРеквизитаСтатьяРасходов = "СтатьяРасходов";
ПараметрыПроверки.ИмяРеквизитаАналитикаРасходов = "АналитикаРасходов";
УчетНДСУП.ПроверитьЗаполнениеДокументаЗакупкиПоНалогообложениюНДС(ЭтотОбъект, НалогообложениеНДС, ПараметрыПроверки, Отказ);
КорректировкаПриобретенияЛокализация.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
Если Не Отказ
И ОбщегоНазначенияУТ.ПроверитьЗаполнениеРеквизитовОбъекта(ЭтотОбъект, ПроверяемыеРеквизиты) Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ИнициализироватьПараметрыЗаполненияВидовЗапасовДляПроведения(ЭтотОбъект, РежимЗаписиДокумента.Проведение);
ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
ПараметрыРегистрации = Документы.КорректировкаПриобретения.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПриПроведении(ПараметрыРегистрации);
КорректировкаПриобретенияЛокализация.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
ИнициализироватьПараметрыЗаполненияВидовЗапасовДляПроведения(ЭтотОбъект, РежимЗаписиДокумента.ОтменаПроведения);
ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
ПараметрыРегистрации = Документы.КорректировкаПриобретения.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПриУдаленииПроведения(ПараметрыРегистрации);
КорректировкаПриобретенияЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
МетаданныеДокументОснование = ДокументОснование.Метаданные();
Если Не ПравоДоступа("Изменение", МетаданныеДокументОснование) Тогда
ТекстОшибки = НСтр("ru = 'У пользователя недостаточно прав на корректировку документа ""%1"".'");
ТекстОшибки = СтрШаблон(ТекстОшибки, МетаданныеДокументОснование.Синоним);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Если ТипКорректировки = Перечисления.ТипыКорректировки.ОбычнаяКорректировка Тогда
Товары.Очистить();
Расхождения.Очистить();
КонецЕсли;
ВидыЗапасов.Очистить();
Согласован = Ложь;
ДатаДокументаОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Дата");
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
ПараметрыЗаполненияСтакиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ЭтотОбъект);
ПараметрыЗаполненияСтакиНДС.Дата = ДатаДокументаОснования;
ПараметрыЗаполненияСтакиНДС.ИнициализацияВходящегоДокумента = Истина;
СтруктураДействий = Новый Структура;
КэшРасхождения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КэшТовары = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", ПараметрыЗаполненияСтакиНДС);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Расхождения, СтруктураДействий, КэшРасхождения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий, КэшТовары);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшРасхождения.ОбработанныеСтроки,
СтруктураДействий,
Расхождения,
Неопределено);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшТовары.ОбработанныеСтроки,
СтруктураДействий,
Товары,
Неопределено);
ВзаиморасчетыСервер.ПриКопировании(ЭтотОбъект);
ОбщегоНазначенияУТ.ОчиститьИдентификаторыДокумента(ЭтотОбъект, "Расхождения,ВидыЗапасов");
КорректировкаПриобретенияЛокализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
Автор = Пользователи.ТекущийПользователь();
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
КорректировкаПриобретенияЛокализация.ПриЗаписи(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Инициализация_и_Заполнение
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Автор = Пользователи.ТекущийПользователь();
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Склад);
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Валюта")
И ЗначениеЗаполнено(ДанныеЗаполнения.Валюта) Тогда
Валюта = ДанныеЗаполнения.Валюта;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ВалютаВзаиморасчетов")
И ЗначениеЗаполнено(ДанныеЗаполнения.ВалютаВзаиморасчетов) Тогда
ВалютаВзаиморасчетов = ДанныеЗаполнения.ВалютаВзаиморасчетов;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ПорядокРасчетов")
И ЗначениеЗаполнено(ДанныеЗаполнения.ПорядокРасчетов) Тогда
ПорядокРасчетов = ДанныеЗаполнения.ПорядокРасчетов;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("Организация")
И ЗначениеЗаполнено(ДанныеЗаполнения.Организация) Тогда
Организация = ДанныеЗаполнения.Организация;
Иначе
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ДокументОснование")
И ЗначениеЗаполнено(ДанныеЗаполнения.ДокументОснование) Тогда
ДатаКурса = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения.ДокументОснование,"Дата");
Иначе
ДатаКурса = ТекущаяДатаСеанса();
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ДанныеЗаполнения.Свойство("ЗакупкаПодДеятельность")
И ЗначениеЗаполнено(ДанныеЗаполнения.ЗакупкаПодДеятельность) Тогда
ЗакупкаПодДеятельность = ДанныеЗаполнения.ЗакупкаПодДеятельность;
Иначе
ПараметрыЗаполнения = Документы.КорректировкаПриобретения.ПараметрыЗаполненияВидаДеятельностиНДС(ЭтотОбъект);
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(ЗакупкаПодДеятельность, ПараметрыЗаполнения);
КонецЕсли;
Если Не ЗначениеЗаполнено(ТипКорректировки) Тогда
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ((ДанныеЗаполнения.Свойство("ДокументОснование")
И ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("ДокументСсылка.ПервичныйДокумент"))
Или (ДанныеЗаполнения.Свойство("ХозяйственнаяОперация")
И ДанныеЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КорректировкаДоВводаОстатков)) Тогда
ТипКорректировки = Перечисления.ТипыКорректировки.КорректировкаДоВводаОстатковТоваровИУслуг;
Иначе
ТипКорректировки = Перечисления.ТипыКорректировки.ОбычнаяКорректировка;
КонецЕсли;
КонецЕсли;
РаботаСКурсамиВалютУТ.ЗаполнитьКурсДокументаПоУмолчанию(КурсЧислитель, КурсЗнаменатель, Валюта, ВалютаВзаиморасчетов, Организация, ДатаКурса, Договор);
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ДанныеЗаполнения, "ДокументОснование") Тогда
ОснованиеИзДанныхЗаполнения = ДанныеЗаполнения.ДокументОснование;
ИначеЕсли ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ДанныеЗаполнения)) Тогда
ОснованиеИзДанныхЗаполнения = ДанныеЗаполнения;
Иначе
ОснованиеИзДанныхЗаполнения = Неопределено;
КонецЕсли;
ОтветственныеЛицаСервер.УстановитьМенеджера(ЭтотОбъект, ОснованиеИзДанныхЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоПоступлениюТоваровУслуг(Знач ДокументОснование, ДанныеЗаполнения)
МетаданныеДокументОснование = ДокументОснование.Метаданные();
Если НЕ ПравоДоступа("Изменение", МетаданныеДокументОснование) Тогда
ТекстОшибки = НСтр("ru = 'У пользователя недостаточно прав на корректировку документа ""'")
+ МетаданныеДокументОснование.Синоним + """.";
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("ДокументОснование", ДокументОснование);
Если НЕ ЗначениеЗаполнено(ДокументОснование) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.ЗакупкаПодДеятельность КАК ЗакупкаПодДеятельность,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.Сделка КАК Сделка,
| ДанныеДокумента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.ПоступлениеПоЗаказам КАК ПоступлениеПоЗаказам,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
| ДанныеДокумента.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперацияОснования,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация В (&ДоступныеХозОперации) ТОГДА
| ЛОЖЬ
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиОперация,
|
| ВЫБОР
| КОГДА ДанныеДокумента.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.НалоговыйАгентПоНДС),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭлектронныеУслуги)) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиНалогообложениеНДС,
|
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|
|ИЗ
| Документ.ПриобретениеТоваровУслуг КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументОснование
|");
ДоступныеХозОперации = Новый Массив();
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаНеотфактурованнаяПоставка);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаПоступлениеИзТоваровВПути);
НоваяМеханикаСозданияЗаявленийОВвозе = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "НоваяМеханикаСозданияЗаявленийОВвозе");
Если НоваяМеханикаСозданияЗаявленийОВвозе = Истина Тогда
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
КонецЕсли;
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Запрос.УстановитьПараметр("ДоступныеХозОперации", ДоступныеХозОперации);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку поступления на основании документа %1.'"),
ДокументОснование);
ВызватьИсключение Текст;
КонецЕсли;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Если Выборка.ЕстьОшибкиОперация Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для поступления с операцией ""%1"" не требуется вводить корректировку.'"),
Выборка.ХозяйственнаяОперацияОснования);
ВызватьИсключение Текст;
КонецЕсли;
Если Выборка.ЕстьОшибкиНалогообложениеНДС Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для поступления с налогообложением ""%1"" не требуется вводить корректировку.'"),
Выборка.НалогообложениеНДС);
ВызватьИсключение Текст;
КонецЕсли;
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.ДокументОснование,
,
Выборка.ЕстьОшибкиПроведен);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка, "ХозяйственнаяОперация, Организация, Партнер, Контрагент, Соглашение, Договор, Валюта, ВалютаВзаиморасчетов ");
Документы.КорректировкаПриобретения.ЗаполнитьТоварыПоИсходнымДанным(Выборка.ДокументОснование, Товары);
КонецПроцедуры
Процедура ЗаполнитьПоПоступлениюУслугПрочихАктивов(Знач ДокументОснование, ДанныеЗаполнения)
МетаданныеДокументОснование = ДокументОснование.Метаданные();
Если НЕ ПравоДоступа("Изменение", МетаданныеДокументОснование) Тогда
ТекстОшибки = НСтр("ru = 'У пользователя недостаточно прав на корректировку документа ""'")
+ МетаданныеДокументОснование.Синоним + """.";
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("ДокументОснование", ДокументОснование);
Если НЕ ЗначениеЗаполнено(ДокументОснование) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.ЗакупкаПодДеятельность КАК ЗакупкаПодДеятельность,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ЛОЖЬ КАК ПоступлениеПоЗаказам,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперацияОснования,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика) ТОГДА
| ЛОЖЬ
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиОперация,
|
| ВЫБОР
| КОГДА ДанныеДокумента.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.НалоговыйАгентПоНДС),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭлектронныеУслуги)) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиНалогообложениеНДС,
|
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|
|ИЗ
| Документ.ПриобретениеУслугПрочихАктивов КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументОснование
|");
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку поступления на основании документа %1.'"),
ДокументОснование);
ВызватьИсключение Текст;
КонецЕсли;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Если Выборка.ЕстьОшибкиОперация Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для поступления с операцией ""%1"" не требуется вводить корректировку.'"),
Выборка.ХозяйственнаяОперацияОснования);
ВызватьИсключение Текст;
КонецЕсли;
Если Выборка.ЕстьОшибкиНалогообложениеНДС Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для поступления с налогообложением ""%1"" не требуется вводить корректировку.'"),
Выборка.НалогообложениеНДС);
ВызватьИсключение Текст;
КонецЕсли;
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.ДокументОснование,
,
Выборка.ЕстьОшибкиПроведен);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка, "Организация, Партнер, Контрагент, Соглашение, Договор, Валюта, ВалютаВзаиморасчетов, ХозяйственнаяОперация");
Документы.КорректировкаПриобретения.ЗаполнитьТоварыПоИсходнымДанным(Выборка.ДокументОснование, Товары);
КонецПроцедуры
Процедура ЗаполнитьПоПервичномуДокументу(Знач ДокументОснование, ДанныеЗаполнения)
МетаданныеДокументОснование = ДокументОснование.Метаданные();
Если НЕ ПравоДоступа("Чтение", МетаданныеДокументОснование) Тогда
ТекстОшибки = НСтр("ru = 'У пользователя недостаточно прав на корректировку документа ""'")
+ МетаданныеДокументОснование.Синоним + """.";
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("ДокументОснование", ДокументОснование);
Если НЕ ЗначениеЗаполнено(ДокументОснование) Тогда
Возврат;
КонецЕсли;
ТекстЗапросаДанныеОснования =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПервичныйДокумент.Ссылка КАК ДокументОснование,
| ПервичныйДокумент.ТипПервичногоДокумента КАК ТипДокумента,
| ПервичныйДокумент.Организация КАК Организация,
| ПервичныйДокумент.Контрагент КАК Контрагент,
| ПервичныйДокумент.Договор КАК Договор,
| ЕСТЬNULL(ПервичныйДокумент.Договор.ТипДоговора, ЗНАЧЕНИЕ(Перечисление.ТипыДоговоров.ПустаяСсылка)) КАК ТипДоговора,
| ПервичныйДокумент.Валюта КАК Валюта,
| ПервичныйДокумент.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ПервичныйДокумент.СуммаДокумента КАК СуммаДокумента,
| ПервичныйДокумент.Партнер КАК Партнер,
| ПервичныйДокумент.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ПервичныйДокумент.Подразделение КАК Подразделение,
| ПервичныйДокумент.ПорядокРасчетов КАК ПорядокРасчетов,
| ПервичныйДокумент.НалогообложениеНДС КАК НалогообложениеНДС,
| НЕ ПервичныйДокумент.Проведен КАК ЕстьОшибкиПроведен,
| ЕСТЬNULL(ПредыдущийДокумент.ТипКорректировки,
| &ТипКорректировки)КАК ТипКорректировки,
| ЕСТЬNULL(ПредыдущийДокумент.Ссылка.Соглашение, ЗНАЧЕНИЕ(Справочник.СоглашенияСПоставщиками.ПустаяСсылка)) КАК Соглашение,
| ЕСТЬNULL(ПредыдущийДокумент.Ссылка.Склад, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК Склад
|ИЗ
| Документ.ПервичныйДокумент КАК ПервичныйДокумент
| ЛЕВОЕ СОЕДИНЕНИЕ
| ВТПредыдущаяКорректировка КАК ПредыдущийДокумент
| ПО ИСТИНА
|ГДЕ
| ПервичныйДокумент.Ссылка = &ДокументОснование";
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(Документы.КорректировкаПриобретения.ТекстЗапросаВТДанныеПредыдущейКорректировки());
ТекстыЗапроса.Добавить(ТекстЗапросаДанныеОснования);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("ТипКорректировки", ТипКорректировки);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку поступления на основании документа %1.'"),
ДокументОснование);
ВызватьИсключение Текст;
КонецЕсли;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Если Выборка.ТипДокумента <> Перечисления.ТипыПервичныхДокументов.ПриобретениеУПоставщика Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку поступления на основании документа %1, с типом документа %2.'"),
ДокументОснование,
Выборка.ТипДокумента);
ВызватьИсключение Текст;
КонецЕсли;
Если Выборка.ТипДоговора <> Перечисления.ТипыДоговоров.СПоставщиком
И Выборка.ТипДоговора <> Перечисления.ТипыДоговоров.СПереработчиком2_5
И ЗначениеЗаполнено(Выборка.Договор) Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку поступления на основании документа %1, с типом договора %2.'"),
ДокументОснование,
Выборка.ТипДоговора);
ВызватьИсключение Текст;
КонецЕсли;
Если Не ЗначениеЗаполнено(Выборка.НалогообложениеНДС) Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку поступления на основании документа %1, с не заполненным налогообложением.'"),
ДокументОснование,
Выборка.ТипДоговора);
ВызватьИсключение Текст;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов") Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку поступления на основании документа %1, при выключенной функциональной опции ""Новая архитектура взаиморасчетов"".'"),
ДокументОснование);
ВызватьИсключение Текст;
КонецЕсли;
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.ДокументОснование,
,
Выборка.ЕстьОшибкиПроведен);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
Документы.КорректировкаПриобретения.ЗаполнитьТоварыПоИсходнымДанным(Выборка.ДокументОснование, Товары);
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.КорректировкаПриобретения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ЭтотОбъект, ПараметрыУказанияСерий);
КонецПроцедуры
Процедура ЗаполнитьПоАктуОРасхождениях(Знач СтруктураПараметров, ДанныеЗаполнения)
ДокументОснованиеПоступление = СтруктураПараметров.ОснованиеАкта;
ДокументОснованиеАктОРасхождениях = СтруктураПараметров.АктОРасхождениях;
МетаданныеДокументОснование = ДокументОснованиеПоступление.Метаданные();
Если НЕ ПравоДоступа("Изменение", МетаданныеДокументОснование) Тогда
ТекстОшибки = НСтр("ru = 'У пользователя недостаточно прав на корректировку документа ""'")
+ МетаданныеДокументОснование.Синоним + """.";
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументОснованиеПоступление)
ИЛИ НЕ ЗначениеЗаполнено(ДокументОснованиеАктОРасхождениях) Тогда
Возврат;
КонецЕсли;
ДанныеЗаполнения = Новый Структура;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Сделка КАК Сделка,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Менеджер КАК Менеджер,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплаты,
| ДанныеДокумента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.ПоступлениеПоЗаказам КАК ПоступлениеПоЗаказам,
| ДанныеДокумента.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| ДанныеДокумента.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперацияОснования,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация В (&ДоступныеХозОперации)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиОперация,
| ВЫБОР
| КОГДА ДанныеДокумента.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.НалоговыйАгентПоНДС),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭлектронныеУслуги))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиНалогообложениеНДС,
| ЛОЖЬ КАК ЕстьОшибкиСтатус,
| АктОРасхожденияхПослеПриемки.СпособОтраженияРасхождений КАК СпособОтраженияРасхождений,
| АктОРасхожденияхПослеПриемки.Ссылка КАК АктОРасхожденияхПослеПриемкиОснование,
| ВЫБОР
| КОГДА АктОРасхожденияхПослеПриемки.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.КВыполнению), ЗНАЧЕНИЕ(Перечисление.СтатусыАктаОРасхождениях.Отработано))
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиСтатусАктОРасхождениях,
| НЕ АктОРасхожденияхПослеПриемки.Проведен КАК ЕстьОшибкиПроведенАктОРасхождениях,
| АктОРасхожденияхПослеПриемки.Статус КАК СтатусАктОРасхождениях,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПриобретениеТоваровУслуг КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АктОРасхожденияхПослеПриемки КАК АктОРасхожденияхПослеПриемки
| ПО (ИСТИНА)
|ГДЕ
| АктОРасхожденияхПослеПриемки.Ссылка = &ДокументОснованиеАктОРасхождениях
| И ДанныеДокумента.Ссылка = &ДокументОснованиеПоступление";
ДоступныеХозОперации = Новый Массив();
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаНеотфактурованнаяПоставка);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаПоступлениеИзТоваровВПути);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСНеотфактурованнаяПоставка);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСПоступлениеИзТоваровВПути);
ДоступныеХозОперации.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути);
Запрос.УстановитьПараметр("ДоступныеХозОперации", ДоступныеХозОперации);
Запрос.УстановитьПараметр("ДокументОснованиеАктОРасхождениях", ДокументОснованиеАктОРасхождениях);
Запрос.УстановитьПараметр("ДокументОснованиеПоступление", ДокументОснованиеПоступление);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку поступления на основании документа %1.'"),
ДокументОснование);
ВызватьИсключение Текст;
КонецЕсли;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Если Выборка.ЕстьОшибкиОперация Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для поступления с операцией ""%1"" не требуется вводить корректировку.'"),
Выборка.ХозяйственнаяОперацияОснования);
ВызватьИсключение Текст;
КонецЕсли;
Если Выборка.СпособОтраженияРасхождений = Перечисления.СпособыОтраженияАктовОРасхожденияПослеПоступления.ИсправлениеПервичныхДокументов Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для акта со способом отражения расхождений ""%1"" не требуется вводить корректировку.'"),
Выборка.СпособОтраженияРасхождений);
ВызватьИсключение Текст;
КонецЕсли;
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыАктаОРасхождениях.КВыполнению);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыАктаОРасхождениях.Отработано);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.АктОРасхожденияхПослеПриемкиОснование,
Выборка.СтатусАктОРасхождениях,
Выборка.ЕстьОшибкиПроведенАктОРасхождениях,
Выборка.ЕстьОшибкиСтатусАктОРасхождениях,
МассивДопустимыхСтатусов);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.ДокументОснование,
,
Выборка.ЕстьОшибкиПроведен);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка, "Организация, Склад, Валюта, ВалютаВзаиморасчетов, ДокументОснование, АктОРасхожденияхПослеПриемкиОснование, ЦенаВключаетНДС, НалогообложениеНДС, ХозяйственнаяОперация");
Документы.КорректировкаПриобретения.ЗаполнитьТоварыПоАктуОРасхождениях(ЭтотОбъект);
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.КорректировкаПриобретения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ЭтотОбъект, ПараметрыУказанияСерий);
ПараметрыУказанияСерий.ИмяТЧТовары = "Расхождения";
ПараметрыУказанияСерий.ИмяТЧСерии = "Расхождения";
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ЭтотОбъект, ПараметрыУказанияСерий);
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуПереработчика(Знач ДокументОснование, ДанныеЗаполнения)
МетаданныеДокументОснование = ДокументОснование.Метаданные();
Если НЕ ПравоДоступа("Изменение", МетаданныеДокументОснование) Тогда
ТекстОшибки = НСтр("ru = 'У пользователя недостаточно прав на корректировку документа ""'")
+ МетаданныеДокументОснование.Синоним + """.";
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("ДокументОснование", ДокументОснование);
Если НЕ ЗначениеЗаполнено(ДокументОснование) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ЗНАЧЕНИЕ(Справочник.СоглашенияСПоставщиками.ПустаяСсылка) КАК Соглашение,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Договор КАК Договор,
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.Сделка КАК Сделка,
| ДанныеДокумента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.ПоЗаказам КАК ПоступлениеПоЗаказам,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаОтчетаПереработчика) КАК ХозяйственнаяОперацияОснования,
|
| ЛОЖЬ КАК ЕстьОшибкиОперация,
| ЛОЖЬ КАК ЕстьОшибкиНалогообложениеНДС,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаОтчетаПереработчика) КАК ХозяйственнаяОперация
|
|ИЗ
| Документ.ОтчетПереработчика2_5 КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументОснование
|");
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить корректировку на основании документа %1.'"),
ДокументОснование);
ВызватьИсключение Текст;
КонецЕсли;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.ДокументОснование,
,
Выборка.ЕстьОшибкиПроведен);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, Выборка);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка, "Организация, Валюта, ВалютаВзаиморасчетов, ДокументОснование, ЦенаВключаетНДС, НалогообложениеНДС, ХозяйственнаяОперация");
Документы.КорректировкаПриобретения.ЗаполнитьТоварыПоИсходнымДанным(Выборка.ДокументОснование, Товары);
КонецПроцедуры
#Конецобласти
#Область ВидыЗапасов
Процедура ЗаполнитьВидыЗапасов(Отказ)
Если ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУвеличениеЗадолженностиСводно
ИЛИ ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПриобретениеУслугПрочихАктивов")
ИЛИ ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ОтчетПереработчика2_5")
Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ПервичныйДокумент") Тогда
ХозяйственнаяОперацияДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "ХозяйственнаяОперация");
Иначе
ХозяйственнаяОперацияДокумента = ХозяйственнаяОперация;
КонецЕсли;
ИспользоватьРаздельноеОформлениеЗакупок = ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(ХозяйственнаяОперацияДокумента);
ИспользоватьПервичныйДокумент = ТипКорректировки = Перечисления.ТипыКорректировки.КорректировкаДоВводаОстатковТоваровИУслуг
Или ТипКорректировки = Перечисления.ТипыКорректировки.КорректировкаДоВводаОстатковУслугИПрочихАктивов;
МенеджерВременныхТаблиц = ВременныеТаблицыДанныхДокумента(ХозяйственнаяОперацияДокумента);
ПерезаполнитьВидыЗапасов = Не Проведен
Или ЗапасыСервер.ПроверитьНеобходимостьПерезаполненияВидовЗапасовДокумента(ЭтотОбъект)
Или ПроверитьИзменениеРеквизитовДокумента(МенеджерВременныхТаблиц)
Или ПроверитьИзменениеТоваров(МенеджерВременныхТаблиц);
Если ИспользоватьРаздельноеОформлениеЗакупок
И ПерезаполнитьВидыЗапасов Тогда
ЗаполнитьВидЗапасовПрослеживаемыхРабот(ХозяйственнаяОперацияДокумента);
Отбор = Новый Структура("ВариантОтражения, ВключатьПрослеживаемыеРаботы", Новый Массив, Ложь);
Отбор.ВариантОтражения.Добавить(Перечисления.ВариантыОтраженияКорректировокПоступлений.УвеличитьЗакупкуУвеличитьТоварыУПартнеров);
Отбор.ВариантОтражения.Добавить(Перечисления.ВариантыОтраженияКорректировокПоступлений.УвеличитьСтоимостьТовара);
Отбор.ВариантОтражения.Добавить(Перечисления.ВариантыОтраженияКорректировокПоступлений.ОтразитьНаПрочихДоходах);
МенеджерВременныхТаблицИзлишки = ВременныеТаблицыДанныхДокумента(ХозяйственнаяОперацияДокумента, Отбор);
Отбор.Вставить("ВключатьПрослеживаемыеРаботы", Ложь);
Отбор.ВариантОтражения.Очистить();
Отбор.ВариантОтражения.Добавить(Перечисления.ВариантыОтраженияКорректировокПоступлений.УменьшитьЗакупкуУменьшитьТоварыУПартнеров);
Отбор.ВариантОтражения.Добавить(Перечисления.ВариантыОтраженияКорректировокПоступлений.УменьшитьСтоимостьТовара);
Отбор.ВариантОтражения.Добавить(Перечисления.ВариантыОтраженияКорректировокПоступлений.СписатьНаРасходы);
МенеджерВременныхТаблицНедостачи = ВременныеТаблицыДанныхДокумента(ХозяйственнаяОперацияДокумента, Отбор);
ВидыЗапасовПромежуточная = ВидыЗапасов.Выгрузить(Новый Массив);
ВидыЗапасов.Очистить();
ДополнительныеСвойства.Вставить("КонтролироватьНомераГТД", Ложь);
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов(Истина, ХозяйственнаяОперацияДокумента);
ЗапасыСервер.ЗаполнитьВидыЗапасовПоОстаткамКОформлению(ЭтотОбъект,
МенеджерВременныхТаблицИзлишки,
Отказ,
ПараметрыЗаполнения);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ВидыЗапасов.Выгрузить(), ВидыЗапасовПромежуточная);
ВидыЗапасов.Очистить();
ДополнительныеСвойства.Вставить("КонтролироватьНомераГТД", Ложь);
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов(Ложь, ХозяйственнаяОперацияДокумента);
ЗапасыСервер.ЗаполнитьВидыЗапасовПоОстаткамКОформлению(ЭтотОбъект,
МенеджерВременныхТаблицНедостачи,
Отказ,
ПараметрыЗаполнения);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ВидыЗапасовПромежуточная, ВидыЗапасов);
ВидыЗапасовСЦенами = ВидыЗапасов.Выгрузить();
Для Каждого СтрокаТаблицы Из ВидыЗапасовСЦенами Цикл
СтрокаТаблицы.Цена = ?(СтрокаТаблицы.Количество = 0, 0, СтрокаТаблицы.СуммаСНДС / СтрокаТаблицы.Количество);
КонецЦикла;
ВидыЗапасовСЦенами.Свернуть(
"АналитикаУчетаНоменклатуры, ВидЗапасов, НомерГТД, ВариантОтражения, СтавкаНДС, Цена",
"Количество, КоличествоПоРНПТ"
);
ВидыЗапасов.Загрузить(ВидыЗапасовСЦенами);
ЗаполнитьДопКолонкиВидовЗапасов();
ЭтоНеотфактуровка = ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки
Или ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки;
Если ЭтоНеотфактуровка Тогда
ЗаполнитьАналитикамиСУчетомСерий();
КонецЕсли;
ИначеЕсли Не ИспользоватьРаздельноеОформлениеЗакупок
И Не ИспользоватьПервичныйДокумент
И ПерезаполнитьВидыЗапасов Тогда
ЗапасыСервер.ЗаполнитьВидыЗапасовПоУмолчанию(МенеджерВременныхТаблиц, Расхождения);
РасхожденияДокумента = Расхождения.Выгрузить();
Отбор = Новый Структура("ВключатьПрослеживаемыеРаботы", Ложь);
МенеджерВременныхТаблиц = ВременныеТаблицыДанныхДокумента(ХозяйственнаяОперацияДокумента, Отбор);
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов(Ложь, ХозяйственнаяОперацияДокумента);
ПараметрыЗаполнения.ИмяТЧВидыЗапасов = "Расхождения";
ПараметрыЗаполнения.ИмяТаблицыОстатков = "ПринятыеТовары";
ЗапасыСервер.ЗаполнитьВидыЗапасовПоОстаткамКОформлению(ЭтотОбъект,
МенеджерВременныхТаблиц,
Отказ,
ПараметрыЗаполнения);
РаспределитьЗапасыНаРасхождения(РасхожденияДокумента, ХозяйственнаяОперацияДокумента);
ИначеЕсли ПерезаполнитьВидыЗапасов Тогда
ЗапасыСервер.ЗаполнитьВидыЗапасовПоУмолчанию(МенеджерВременныхТаблиц, Расхождения);
РасхожденияДокумента = Расхождения.Выгрузить();
Отбор = Новый Структура("ВключатьПрослеживаемыеРаботы", Ложь);
МенеджерВременныхТаблиц = ВременныеТаблицыДанныхДокумента(ХозяйственнаяОперацияДокумента, Отбор);
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов(Ложь, ХозяйственнаяОперацияДокумента);
ПараметрыЗаполнения.ИмяТЧВидыЗапасов = "Расхождения";
ПараметрыЗаполнения.ИмяТаблицыОстатков = "ТоварыОрганизаций";
ПараметрыЗаполнения.ПодбиратьВТЧТоварыПринятыеНаОтветственноеХранение.Вставить(Перечисления.ТипыЗапасов.ТоварНаХраненииСПравомПродажи, "Никогда");
ПараметрыЗаполнения.ДокументДелаетИПриходИРасход = Истина;
ЗапасыСервер.ЗаполнитьВидыЗапасовПоТоварамОрганизаций(ЭтотОбъект,
МенеджерВременныхТаблиц,
Отказ,
ПараметрыЗаполнения);
РасхожденияВидыЗапасов = Расхождения.Выгрузить();
РасхожденияВидыЗапасов.Колонки.Количество.Имя = "КоличествоДляРаспределения";
Для Каждого Строка Из РасхожденияВидыЗапасов Цикл
Строка.КоличествоДляРаспределения = -Строка.КоличествоДляРаспределения;
КонецЦикла;
Ключ = "Номенклатура, Характеристика, Назначение, Серия, НомерГТД";
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(РасхожденияВидыЗапасов,
РасхожденияДокумента,
"КоличествоДляРаспределения",
Ключ,
Условие,
Истина,
"ВидЗапасов");
Расхождения.Загрузить(РасхожденияДокумента);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьАналитикамиСУчетомСерий()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ПриобретениеТоваровУслугВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ПриобретениеТоваровУслугВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ПриобретениеТоваровУслугВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ПриобретениеТоваровУслугВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ПриобретениеТоваровУслугВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| ПриобретениеТоваровУслугВидыЗапасов.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ПриобретениеТоваровУслугВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ПриобретениеТоваровУслугВидыЗапасов.НомерГТД КАК НомерГТД,
| ПриобретениеТоваровУслугВидыЗапасов.Количество КАК Количество,
| ПриобретениеТоваровУслугВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ
|ИЗ
| Документ.ПриобретениеТоваровУслуг.ВидыЗапасов КАК ПриобретениеТоваровУслугВидыЗапасов
|ГДЕ
| ПриобретениеТоваровУслугВидыЗапасов.Ссылка = &Ссылка";
ТаблицаВидыЗапасов = ВидыЗапасов.Выгрузить();
ТаблицаВидыЗапасов.Колонки.Добавить("АналитикаУчетаНоменклатурыПоДаннымПриобретения", Новый ОписаниеТипов("СправочникСсылка.КлючиАналитикиУчетаНоменклатуры"));
ТаблицаВидыЗапасов.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаВидыЗапасов.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ТаблицаВидыЗапасов.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ТаблицаВидыЗапасов.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ТаблицаВидыЗапасов.Колонки.Добавить("КоличествоПоДаннымПриобретения", Новый ОписаниеТипов("Число"));
ТаблицаВидыЗапасов.Колонки.Добавить("КоличествоПоМодулю", Новый ОписаниеТипов("Число"));
ТаблицаВидыЗапасов.Колонки.Добавить("КоличествоПоРНПТПоМодулю", Новый ОписаниеТипов("Число"));
Для Каждого Строка Из ТаблицаВидыЗапасов Цикл
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Строка.АналитикаУчетаНоменклатуры, "Номенклатура, Характеристика, Назначение, Серия");
ЗаполнитьЗначенияСвойств(Строка, ЗначенияРеквизитов);
Строка.КоличествоПоМодулю = ?(Строка.Количество < 0, -Строка.Количество, Строка.Количество);
Строка.КоличествоПоРНПТПоМодулю = ?(Строка.КоличествоПоРНПТ < 0, -Строка.КоличествоПоРНПТ, Строка.КоличествоПоРНПТ);
КонецЦикла;
Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
Результат = Запрос.Выполнить().Выгрузить();
Результат.Колонки.Количество.Имя = "КоличествоПоДаннымПриобретения";
Результат.Колонки.АналитикаУчетаНоменклатуры.Имя = "АналитикаУчетаНоменклатурыПоДаннымПриобретения";
Ключ = "Номенклатура, Характеристика, Назначение";
Условие = "ПО [КоличествоПоМодулю]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(Результат, ТаблицаВидыЗапасов,
"КоличествоПоДаннымПриобретения", Ключ, Условие, Ложь, "АналитикаУчетаНоменклатурыПоДаннымПриобретения");
Для Каждого Строка Из ТаблицаВидыЗапасов Цикл
Если ЗначениеЗаполнено(Строка.АналитикаУчетаНоменклатурыПоДаннымПриобретения)
И Строка.Количество < 0
Или (Строка.Количество <= 0
И Строка.СуммаВзаиморасчетов < 0) Тогда
Строка.АналитикаУчетаНоменклатуры = ?(Строка.АналитикаУчетаНоменклатурыПоДаннымПриобретения
<> Справочники.КлючиАналитикиУчетаНоменклатуры.ПустаяСсылка(),
Строка.АналитикаУчетаНоменклатурыПоДаннымПриобретения,
Строка.АналитикаУчетаНоменклатуры);
Если Строка.Количество > 0 Тогда
Строка.Количество = Строка.КоличествоПоДаннымПриобретения;
Строка.КоличествоПоРНПТ = Строка.Количество * Строка.КоличествоПоРНПТПоМодулю / Строка.КоличествоПоМодулю;
ИначеЕсли Строка.Количество < 0 Тогда
Строка.Количество = -Строка.КоличествоПоДаннымПриобретения;
Строка.КоличествоПоРНПТ = Строка.Количество * Строка.КоличествоПоРНПТПоМодулю / Строка.КоличествоПоМодулю;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(ВидыЗапасов.АналитикаУчетаНоменклатуры КАК Справочник.КлючиАналитикиУчетаНоменклатуры) КАК АналитикаУчетаНоменклатуры,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов
|ПОМЕСТИТЬ ВтВидыЗапасовИсходная
|ИЗ
| &ВидыЗапасов КАК ВидыЗапасов
|;
|
|
|ВЫБРАТЬ
| ВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| ВтВидыЗапасовИсходная КАК ВидыЗапасов
|СГРУППИРОВАТЬ ПО
| ВидыЗапасов.АналитикаУчетаНоменклатуры,
| ВидыЗапасов.ВидЗапасов
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры,
| ВидЗапасов
|;
|
|
|ВЫБРАТЬ
| Аналитика.КлючАналитики КАК Аналитика,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов
|ПОМЕСТИТЬ ВТОтборАналитик
|ИЗ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ВидыЗапасов
| ПО Аналитика.Номенклатура = ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура
| И Аналитика.Характеристика = ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика
| И Аналитика.МестоХранения = ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения
| И Аналитика.Назначение = ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение
| И Аналитика.СтатьяКалькуляции = ВидыЗапасов.АналитикаУчетаНоменклатуры.СтатьяКалькуляции
|;
|
|
|ВЫБРАТЬ
| Набор.Приоритет КАК Приоритет,
| Набор.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Набор.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| Набор.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| Набор.АналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| СУММА(Набор.Количество) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| Остатки.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| -Остатки.КоличествоОстаток КАК Количество,
| 2 КАК Приоритет
| ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(
| ,
| (АналитикаУчетаНоменклатуры, ВидЗапасов) В
| (ВЫБРАТЬ
| Таблица.Аналитика,
| Таблица.ВидЗапасов
| ИЗ
| ВТОтборАналитик КАК Таблица)
| И Организация = &Организация) КАК Остатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ВидыЗапасов
| ПО Остатки.АналитикаУчетаНоменклатуры.Номенклатура = ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура
| И Остатки.АналитикаУчетаНоменклатуры.Характеристика = ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика
| И Остатки.АналитикаУчетаНоменклатуры.МестоХранения = ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения
| И Остатки.АналитикаУчетаНоменклатуры.Назначение = ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение
| И Остатки.АналитикаУчетаНоменклатуры.СтатьяКалькуляции = ВидыЗапасов.АналитикаУчетаНоменклатуры.СтатьяКалькуляции
| ГДЕ
| Остатки.КоличествоОстаток < 0
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Движения.АналитикаУчетаНоменклатуры,
| Движения.Количество,
| 1 КАК Приоритет
| ИЗ
| РегистрНакопления.ТоварыОрганизаций КАК Движения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ВидыЗапасов
| ПО Движения.АналитикаУчетаНоменклатуры.Номенклатура = ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура
| И Движения.АналитикаУчетаНоменклатуры.Характеристика = ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика
| И Движения.АналитикаУчетаНоменклатуры.МестоХранения = ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения
| И Движения.АналитикаУчетаНоменклатуры.Назначение = ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение
| И Движения.АналитикаУчетаНоменклатуры.СтатьяКалькуляции = ВидыЗапасов.АналитикаУчетаНоменклатуры.СтатьяКалькуляции
| ГДЕ
| Движения.Регистратор = &Ссылка
| ) КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.Приоритет,
| Набор.АналитикаУчетаНоменклатуры
|
|УПОРЯДОЧИТЬ ПО
| Приоритет
|";
ТаблицаВидыЗапасов.Колонки.Добавить("АналитикаУчетаНоменклатурыПоРегистру", Новый ОписаниеТипов("СправочникСсылка.КлючиАналитикиУчетаНоменклатуры"));
ТаблицаВидыЗапасов.Колонки.Добавить("КоличествоПоРегистру", Новый ОписаниеТипов("Число"));
Для Каждого Строка Из ТаблицаВидыЗапасов Цикл
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Строка.АналитикаУчетаНоменклатуры, "Номенклатура, Характеристика, Назначение, Серия");
ЗаполнитьЗначенияСвойств(Строка, ЗначенияРеквизитов);
КонецЦикла;
Запрос.УстановитьПараметр("ВидыЗапасов", ТаблицаВидыЗапасов);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Результат = Запрос.Выполнить().Выгрузить();
Результат.Колонки.Количество.Имя = "КоличествоПоРегистру";
Результат.Колонки.АналитикаУчетаНоменклатуры.Имя = "АналитикаУчетаНоменклатурыПоРегистру";
Ключ = "Номенклатура, Характеристика, Назначение";
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(Результат, ТаблицаВидыЗапасов,
"КоличествоПоРегистру", Ключ, Условие, Ложь, "АналитикаУчетаНоменклатурыПоРегистру");
Для Каждого Строка Из ТаблицаВидыЗапасов Цикл
Если ЗначениеЗаполнено(Строка.АналитикаУчетаНоменклатурыПоРегистру)
И (Строка.Количество > 0
Или (Строка.Количество >= 0
И Строка.СуммаВзаиморасчетов > 0)) Тогда
Строка.АналитикаУчетаНоменклатуры = ?(
Строка.АналитикаУчетаНоменклатурыПоРегистру
<> Справочники.КлючиАналитикиУчетаНоменклатуры.ПустаяСсылка(),
Строка.АналитикаУчетаНоменклатурыПоРегистру,
Строка.АналитикаУчетаНоменклатуры);
Если Строка.Количество > 0 Тогда
Строка.Количество = Строка.КоличествоПоРегистру;
ИначеЕсли Строка.Количество < 0 Тогда
Строка.Количество = -Строка.КоличествоПоРегистру;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ВидыЗапасов.Загрузить(ТаблицаВидыЗапасов);
КонецПроцедуры
Процедура ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров(ТаблицыДокумента = Неопределено)
Если ТаблицыДокумента = Неопределено Тогда
ТаблицыДокумента = Документы.КорректировкаПриобретения.КоллекцияТабличныхЧастейТоваров();
ЗаполнитьЗначенияСвойств(ТаблицыДокумента, ЭтотОбъект);
КонецЕсли;
ТаблицаРасхождения = ТаблицыДокумента.Расхождения;
ОперацияПодбораАналитики = ВидКорректировки;
Если ЗначениеЗаполнено(ДокументОснование)
И ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ПервичныйДокумент") Тогда
ОперацияОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "ХозяйственнаяОперация");
Если ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(ОперацияОснования) Тогда
ОперацияПодбораАналитики = ОперацияОснования;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КорректировкаОтчетаПереработчика Тогда
ОперацияПодбораАналитики = ОперацияОснования;
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ПриобретениеУслугПрочихАктивов")
И ТипКорректировки <> Перечисления.ТипыКорректировки.КорректировкаДоВводаОстатковУслугИПрочихАктивов Тогда
МестаУчета = РегистрыСведений.АналитикаУчетаНоменклатуры.МестаУчета(ОперацияПодбораАналитики,
Склад,
Подразделение,
Партнер,
Договор);
Если ЗначениеЗаполнено(ДокументОснование) Тогда
ОперацииФактуровка = Новый Массив;
ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
Если ОперацииФактуровка.Найти(ОперацияОснования) <> Неопределено
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВариантОформленияЗакупок") = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг Тогда
МестаУчета.Работа = Договор;
МестаУчета.Вставить("Услуга", Договор);
КонецЕсли;
КонецЕсли;
ИменаПолей = РегистрыСведений.АналитикаУчетаНоменклатуры.ИменаПолейКоллекцииПоУмолчанию();
ИменаПолей.Вставить("Работа", "Подразделение");
ТекстПоляСкладТовар = "
|ВЫБОР
| КОГДА Коллекция.СписатьНаРасходы
| ТОГДА Коллекция.Подразделение
| ИНАЧЕ НЕОПРЕДЕЛЕНО
|КОНЕЦ";
Если ЗначениеЗаполнено(Склад) Тогда
РеквизитыСклада = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Склад, "ЭтоГруппа, ВыборГруппы");
Иначе
РеквизитыСклада = Новый Структура;
РеквизитыСклада.Вставить("ЭтоГруппа", Ложь);
РеквизитыСклада.Вставить("ВыборГруппы", Неопределено);
КонецЕсли;
Если РеквизитыСклада.ЭтоГруппа
И Не ЗакупкиСервер.ЭтоХозяйственнаяОперацияРаздельнойЗакупки(ОперацияОснования)
И РеквизитыСклада.ВыборГруппы = Перечисления.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных Тогда
ИменаПолей.Вставить("Произвольный", "Склад");
ТекстПоляСкладТовар = "
|ВЫБОР
| КОГДА Коллекция.СписатьНаРасходы
| ТОГДА Коллекция.Подразделение
| ИНАЧЕ Коллекция.Склад
|КОНЕЦ";
КонецЕсли;
ИменаПолей.Вставить("Товар", Новый Структура("ТекстПоля", ТекстПоляСкладТовар));
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.КорректировкаОтчетаПереработчика Тогда
ИменаПолей.Вставить("СтатьяКалькуляции", "СтатьяКалькуляции");
ИменаПолей.Назначение = "";
ИменаПолей.Работа = "";
МестаУчета.Удалить("Работа");
КонецЕсли;
РегистрыСведений.АналитикаУчетаНоменклатуры.ЗаполнитьВКоллекции(ТаблицаРасхождения, МестаУчета, ИменаПолей);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьВидЗапасовПрослеживаемыхРабот(ХозяйственнаяОперацияДокумента)
НалогообложениеОрганизации = УчетНДСУП.ПараметрыУчетаПоОрганизации(Организация, Дата).ОсновноеНалогообложениеНДСПродажи;
ИменаРеквизитовДокумента = "Организация, ТипЗапасов, ВладелецТовара, Контрагент, Соглашение,
|Договор, Валюта, НалогообложениеНДС, НалогообложениеОрганизации, ВидЗапасов, ГруппаФинансовогоУчета, ГруппаПродукции,
|ХозяйственнаяОперация, ВидЦены, СохраняемыйВидЗапасов";
РеквизитыДокумента = Новый Структура(ИменаРеквизитовДокумента);
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ЭтотОбъект);
РеквизитыДокумента.ВладелецТовара = Партнер;
РеквизитыДокумента.ТипЗапасов = Перечисления.ТипыЗапасов.Работа;
РеквизитыДокумента.НалогообложениеОрганизации = НалогообложениеОрганизации;
РеквизитыДокумента.ХозяйственнаяОперация = ХозяйственнаяОперацияДокумента;
ВидЗапасовПрослеживаемыхРабот = Справочники.ВидыЗапасов.ВидЗапасовДокумента(Организация,
ХозяйственнаяОперация,
РеквизитыДокумента);
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ВТТовары
|ИЗ
| &Товары КАК Товары
|
|;
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура
|ИЗ
| ВТТовары КАК Товары
|ГДЕ
| Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И Товары.Номенклатура.ПрослеживаемыйТовар
| И &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
|";
Запрос.УстановитьПараметр("Период", Дата);
Запрос.УстановитьПараметр("Товары", Расхождения.Выгрузить());
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
Выборка = Запрос.Выполнить().Выбрать();
СтруктураПоиска = Новый Структура("Номенклатура");
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, Выборка);
НайденныеСтроки = Расхождения.НайтиСтроки(СтруктураПоиска);
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
НайденнаяСтрока.ВидЗапасов = ВидЗапасовПрослеживаемыхРабот;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
#Конецобласти
#Область Прочее
Функция ПроверитьЗаполнениеПоРасхождениям(МассивНепроверяемыхРеквизитов, Отказ)
СуммаНаПрочиеДоходы = 0;
СуммаНаПрочиеРасходы = 0;
ОтразитьНаПрочихДоходах = Ложь;
СписатьНаРасходы = Ложь;
ТребуетсяДатаПлатежа = Ложь;
Для Каждого СтрокаРасхождений Из Расхождения Цикл
Если СтрокаРасхождений.ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокПоступлений.ОтразитьНаПрочихДоходах Тогда
ОтразитьНаПрочихДоходах = Истина;
СуммаНаПрочиеДоходы = СуммаНаПрочиеДоходы
+ ?(СтрокаРасхождений.СуммаСНДС < 0,
-СтрокаРасхождений.СуммаСНДС,
СтрокаРасхождений.СуммаСНДС);
ИначеЕсли Не СтрокаРасхождений.СписатьНаРасходы
И СтрокаРасхождений.ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокПоступлений.СписатьНаРасходы Тогда
СписатьНаРасходы = Истина;
СуммаНаПрочиеРасходы = СуммаНаПрочиеРасходы
+ ?(СтрокаРасхождений.СуммаСНДС < 0,
-СтрокаРасхождений.СуммаСНДС,
СтрокаРасхождений.СуммаСНДС);
КонецЕсли;
Если СтрокаРасхождений.Сумма > 0 Тогда
ТребуетсяДатаПлатежа = Истина;
КонецЕсли;
КонецЦикла;
Результат = Новый Структура("ОтразитьНаПрочихДоходах, СписатьНаРасходы, ТребуетсяДатаПлатежа",
ОтразитьНаПрочихДоходах, СписатьНаРасходы, ТребуетсяДатаПлатежа);
Возврат Результат;
КонецФункции
Процедура ПроверитьЗаполнениеТаблицыКорректировкаЗадолженности(Отказ)
Если ВидКорректировки <> Перечисления.ХозяйственныеОперации.КорректировкаПриобретенияУменьшениеЗадолженностиСводно Тогда
Возврат;
КонецЕсли;
ШаблонОшибки = НСтр("ru = 'В строке ""%1"" сумма уменьшения больше суммы приобретения'");
КлючДанных = ОбщегоНазначенияУТ.КлючДанныхДляСообщенияПользователю(ЭтотОбъект);
Для каждого СтрокаТаблицы Из КорректировкаЗадолженности Цикл
Если СтрокаТаблицы.СуммаКорректировки > СтрокаТаблицы.СуммаСНДС Тогда
СообщениеОбОшибке = СтрШаблон(ШаблонОшибки, СтрокаТаблицы.НомерСтроки);
Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("КорректировкаЗадолженности",
СтрокаТаблицы.НомерСтроки,
"СуммаКорректировки");
ОбщегоНазначения.СообщитьПользователю(СообщениеОбОшибке, КлючДанных, Поле, "Объект", Отказ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьЗаполненностиСуммыВзаиморасчетов(Отказ)
Если Валюта = ВалютаВзаиморасчетов Тогда
Возврат;
КонецЕсли;
ШаблонОшибки = НСтр("ru = 'В строке ""%1"" неверно указана сумма взаиморасчетов ""после"", т.к. сумма взаиморасчетов ""до"" стала нулевой.'");
КлючДанных = ОбщегоНазначенияУТ.КлючДанныхДляСообщенияПользователю(ЭтотОбъект);
КорректировкаПриобретенияУслугПрочихАктивов = ТипКорректировки = Перечисления.ТипыКорректировки.КорректировкаДоВводаОстатковУслугИПрочихАктивов;
СтрокаРеквизитов = Документы.КорректировкаПриобретения.КлючевыеРеквизитыСвязиСтрокТаблиц(КорректировкаПриобретенияУслугПрочихАктивов);
ПарамтрыОтбра = Новый Структура(СтрокаРеквизитов);
Для каждого СтрокаТаблицы Из Товары Цикл
ЗаполнитьЗначенияСвойств(ПарамтрыОтбра, СтрокаТаблицы);
СтрокиРасхождения = Расхождения.НайтиСтроки(ПарамтрыОтбра);
СуммаВзаиморасчетаРасхождения = 0;
КоличествоРасхождения = 0;
Для Каждого СтрокаРасхождения Из СтрокиРасхождения Цикл
СуммаВзаиморасчетаРасхождения = СуммаВзаиморасчетаРасхождения + СтрокаРасхождения.СуммаВзаиморасчетов;
КоличествоРасхождения = КоличествоРасхождения + СтрокаРасхождения.Количество;
КонецЦикла;
Если СтрокаТаблицы.СуммаВзаиморасчетов = СуммаВзаиморасчетаРасхождения
И СтрокаТаблицы.Количество <> КоличествоРасхождения Тогда
СообщениеОбОшибке = СтрШаблон(ШаблонОшибки, СтрокаТаблицы.НомерСтроки);
Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ТаблицаКорректировки",
СтрокаТаблицы.НомерСтроки,
"СуммаВзаиморасчетовПосле");
ОбщегоНазначения.СообщитьПользователю(СообщениеОбОшибке, КлючДанных, Поле, "", Отказ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ВременныеТаблицыДанныхДокумента(ХозяйственнаяОперацияДокумента, Отбор = Неопределено)
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| &Дата КАК Дата,
| &Организация КАК Организация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Соглашение КАК Соглашение,
| &ВидКорректировки КАК ВидКорректировки,
| &Договор КАК Договор,
| &Валюта КАК Валюта,
| &НалогообложениеНДС КАК НалогообложениеНДС,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &ТипЗапасов КАК ТипЗапасов,
| ЛОЖЬ КАК ЕстьСделкиВТабличнойЧасти
|ПОМЕСТИТЬ ТаблицаДанныхДокумента
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.ДокументПоступления КАК ДокументПоступления,
| ВЫРАЗИТЬ(ТаблицаТоваров.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ВЫРАЗИТЬ(ТаблицаТоваров.Назначение КАК Справочник.Назначения) КАК Назначение,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТоваров.ВидЗапасов КАК ВидЗапасов,
| ТаблицаТоваров.ВариантОтражения КАК ВариантОтражения,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.Склад КАК Склад,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ ТаблицаТоваров.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.ОбъектРасчетов КАК ОбъектРасчетов
|ПОМЕСТИТЬ ВТТаблицаТоваров
|ИЗ
| &ТаблицаТоваров КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.ДокументПоступления КАК ДокументПоступления,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТоваров.ВидЗапасов КАК ВидЗапасов,
| ТаблицаТоваров.ВариантОтражения КАК ВариантОтражения,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.Склад КАК Склад,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.ОбъектРасчетов КАК ОбъектРасчетов
|ПОМЕСТИТЬ ТаблицаТоваров
|ИЗ
| ВТТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| &ТаблицаТоваровОтбор
| И (ТаблицаТоваров.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ИЛИ (&ВключатьПрослеживаемыеРаботы
| И &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ТаблицаТоваров.Номенклатура.ПрослеживаемыйТовар)
| )
|
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры
|;
|
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.ДокументПоступления КАК ДокументПоступления,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя КАК ВидЗапасовПолучателя,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.ВариантОтражения КАК ВариантОтражения,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ ТаблицаВидыЗапасов.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| ТаблицаВидыЗапасов.СуммаСНДС КАК СуммаСНДС
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| &ТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
|ГДЕ
| &ТаблицаВидыЗапасовОтбор
|;
|
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.ДокументПоступления КАК ДокументПоступления,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| Аналитика.Серия КАК Серия,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ВидЗапасовПолучателя,
| ТаблицаВидыЗапасов.ВариантОтражения КАК ВариантОтражения,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| Аналитика.МестоХранения КАК Склад,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| ТаблицаВидыЗапасов.СуммаСНДС КАК СуммаСНДС
|ПОМЕСТИТЬ ТаблицаВидыЗапасов
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
|ГДЕ
| Аналитика.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ИЛИ (&ВключатьПрослеживаемыеРаботы
| И &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| И Аналитика.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И Аналитика.Номенклатура.ПрослеживаемыйТовар)
|
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Строки.АналитикаУчетаНоменклатуры,
| Строки.ВидЗапасов
|ПОМЕСТИТЬ ВидыЗапасовПоступления
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК Строки
|ГДЕ
| Строки.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.ДокументПоступления КАК ДокументПоступления,
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТоваров.ВариантОтражения В(ЗНАЧЕНИЕ(Перечисление.ВариантыОтраженияКорректировокПоступлений.УвеличитьЗакупкуУвеличитьСкладскиеОстатки),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОтраженияКорректировокПоступлений.УвеличитьЗакупкуУчестьПриИнвентаризации))
| ТОГДА ЕСТЬNULL(ВидыЗапасовПоступления.ВидЗапасов, ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка))
| КОГДА &Проведен
| ТОГДА ТаблицаТоваров.ВидЗапасов
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка)
| КОНЕЦ КАК ТекущийВидЗапасов,
| ВЫБОР
| КОГДА ОписанияТоваров.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи)
| КОГДА ОписанияТоваров.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| КОНЕЦ КАК ТипЗапасов,
| ВЫБОР
| КОГДА ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Партнер
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ВладелецТовара,
| ТаблицаТоваров.ВариантОтражения КАК ВариантОтражения,
| ЗНАЧЕНИЕ(Справочник.СоглашенияСПоставщиками.ПустаяСсылка) КАК Соглашение,
| ВЫБОР
| КОГДА ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Договор.Контрагент
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Договор
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| КОНЕЦ КАК Договор,
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта,
| ВЫБОР
| КОГДА &ИспользоватьРаздельныйУчетПоНалогообложению
| И НЕ &ПартионныйУчетВерсии22
| ТОГДА &ЗакупкаПодДеятельность
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| КОНЕЦ КАК НалогообложениеНДС,
| &НалогообложениеОрганизации КАК НалогообложениеОрганизации,
| ЗНАЧЕНИЕ(Справочник.ВидыЦенПоставщиков.ПустаяСсылка) КАК ВидЦены
|ПОМЕСТИТЬ ИсходнаяТаблицаТоваров
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ОписанияТоваров
| ПО ОписанияТоваров.Ссылка = ТаблицаТоваров.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
| ПО ТаблицаТоваров.ВидЗапасов = ВидыЗапасов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВидыЗапасовПоступления КАК ВидыЗапасовПоступления
| ПО ВидыЗапасовПоступления.АналитикаУчетаНоменклатуры = ТаблицаТоваров.АналитикаУчетаНоменклатуры
|
|ГДЕ
| (&ПерезаполнитьВидыЗапасов
| ИЛИ ТаблицаТоваров.ВидЗапасов = ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка)
| ИЛИ ЕСТЬNULL(ВидыЗапасов.ТипЗапасов, ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПустаяСсылка)) <>
| ВЫБОР
| КОГДА ОписанияТоваров.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| ИНАЧЕ &ТипЗапасов
| КОНЕЦ
| ИЛИ ЕСТЬNULL(ВидыЗапасов.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)) <> &Организация)
| И НЕ (&ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ТаблицаТоваров.Номенклатура.ПрослеживаемыйТовар)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТоваров.ДокументПоступления КАК ДокументПоступления,
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаТоваров.ВариантОтражения В(ЗНАЧЕНИЕ(Перечисление.ВариантыОтраженияКорректировокПоступлений.УвеличитьЗакупкуУвеличитьСкладскиеОстатки),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОтраженияКорректировокПоступлений.УвеличитьЗакупкуУчестьПриИнвентаризации))
| ТОГДА ЕСТЬNULL(ВидыЗапасовПоступления.ВидЗапасов, ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка))
| КОГДА &Проведен
| ТОГДА ТаблицаТоваров.ВидЗапасов
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка)
| КОНЕЦ КАК ТекущийВидЗапасов,
| ВЫБОР
| КОГДА ОписанияТоваров.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи)
| КОГДА ОписанияТоваров.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| КОНЕЦ КАК ТипЗапасов,
| ВЫБОР
| КОГДА ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Партнер
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ВладелецТовара,
| ТаблицаТоваров.ВариантОтражения КАК ВариантОтражения,
| ЗНАЧЕНИЕ(Справочник.СоглашенияСПоставщиками.ПустаяСсылка) КАК Соглашение,
| ВЫБОР
| КОГДА ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Договор.Контрагент
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА ТаблицаТоваров.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.ПоставкаПодПринципала)
| ТОГДА ТаблицаТоваров.Назначение.Договор
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| КОНЕЦ КАК Договор,
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта,
| ВЫБОР
| КОГДА &ИспользоватьРаздельныйУчетПоНалогообложению
| И НЕ &ПартионныйУчетВерсии22
| ТОГДА &ЗакупкаПодДеятельность
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| КОНЕЦ КАК НалогообложениеНДС,
| &НалогообложениеОрганизации КАК НалогообложениеОрганизации,
| ЗНАЧЕНИЕ(Справочник.ВидыЦенПоставщиков.ПустаяСсылка) КАК ВидЦены
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ОписанияТоваров
| ПО ОписанияТоваров.Ссылка = ТаблицаТоваров.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
| ПО ТаблицаТоваров.ВидЗапасов = ВидыЗапасов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВидыЗапасовПоступления КАК ВидыЗапасовПоступления
| ПО ВидыЗапасовПоступления.АналитикаУчетаНоменклатуры = ТаблицаТоваров.АналитикаУчетаНоменклатуры
|
|ГДЕ
| (&ПерезаполнитьВидыЗапасов
| ИЛИ ТаблицаТоваров.ВидЗапасов = ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка)
| ИЛИ ЕСТЬNULL(ВидыЗапасов.ТипЗапасов, ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПустаяСсылка)) <> &ТипЗапасов
| ИЛИ ЕСТЬNULL(ВидыЗапасов.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)) <> &Организация)
| И &ВключатьПрослеживаемыеРаботы
| И &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ТаблицаТоваров.Номенклатура.ПрослеживаемыйТовар
|";
ТекстОтбораТаблицаТоваров = "ИСТИНА";
ТекстОтбораВидыЗапасов = "ИСТИНА";
ВключатьПрослеживаемыеРаботы = Истина;
Если ЗначениеЗаполнено(Отбор) Тогда
Если Отбор.Свойство("ВключатьПрослеживаемыеРаботы") Тогда
ВключатьПрослеживаемыеРаботы = Отбор.ВключатьПрослеживаемыеРаботы;
Отбор.Удалить("ВключатьПрослеживаемыеРаботы");
КонецЕсли;
Для Каждого КлючЗначение Из Отбор Цикл
ТекстОтбораТаблицаТоваров = ТекстОтбораТаблицаТоваров + " И " + "ТаблицаТоваров." + КлючЗначение.Ключ
+ " В (&" + КлючЗначение.Ключ + ")";
ТекстОтбораВидыЗапасов = ТекстОтбораВидыЗапасов + " И " + "ТаблицаВидыЗапасов." + КлючЗначение.Ключ
+ " В (&" + КлючЗначение.Ключ + ")";
Запрос.УстановитьПараметр(КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
КонецЕсли;
Запрос.УстановитьПараметр("ВключатьПрослеживаемыеРаботы", ВключатьПрослеживаемыеРаботы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТаблицаТоваровОтбор", ТекстОтбораТаблицаТоваров);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТаблицаВидыЗапасовОтбор", ТекстОтбораВидыЗапасов);
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = ТекстЗапроса;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
РасхожденияСДокументовПоступления = Расхождения.Выгрузить(, "НомерСтроки, Номенклатура, Характеристика, Назначение,
|Серия, АналитикаУчетаНоменклатуры, ВидЗапасов, НомерГТД,
|СтавкаНДС, Количество, КоличествоПоРНПТ, СуммаСНДС,
|СуммаНДС, Склад, СтатусУказанияСерий, ВариантОтражения,
|ОбъектРасчетов");
РасхожденияСДокументовПоступления.Колонки.Добавить("ДокументПоступления",
Новый ОписаниеТипов("ДокументСсылка.ПриобретениеТоваровУслуг"));
РасхожденияСДокументовПоступления.ЗаполнитьЗначения(ДокументОснование, "ДокументПоступления");
ВидыЗапасовСДокументовПоступления = ВидыЗапасов.Выгрузить(, "НомерСтроки, АналитикаУчетаНоменклатуры, ВидЗапасов,
|ВидЗапасовПолучателя, НомерГТД, ВариантОтражения,
|Количество, КоличествоПоРНПТ, ОбъектРасчетов, СуммаСНДС");
ВидыЗапасовСДокументовПоступления.Колонки.Добавить("ДокументПоступления",
Новый ОписаниеТипов("ДокументСсылка.ПриобретениеТоваровУслуг"));
ВидыЗапасовСДокументовПоступления.ЗаполнитьЗначения(ДокументОснование, "ДокументПоступления");
ПараметрыУчетаПоОрганизации = УчетНДСУП.ПараметрыУчетаПоОрганизации(Организация, Дата);
Если ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ПервичныйДокумент") Тогда
РеквизитыОснования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументОснование,
"ЗакупкаПодДеятельность,ВернутьМногооборотнуюТару");
КонецЕсли;
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Партнер", Партнер);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("Соглашение", Соглашение);
Запрос.УстановитьПараметр("Договор", Договор);
Запрос.УстановитьПараметр("Валюта", Валюта);
Запрос.УстановитьПараметр("НалогообложениеНДС", НалогообложениеНДС);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперацияДокумента);
Запрос.УстановитьПараметр("ТипЗапасов", ТипЗапасовПоХозОперации(ХозяйственнаяОперацияДокумента));
Запрос.УстановитьПараметр("ВидКорректировки", ВидКорректировки);
Запрос.УстановитьПараметр("Проведен", Проведен);
Запрос.УстановитьПараметр("ТаблицаТоваров", РасхожденияСДокументовПоступления);
Запрос.УстановитьПараметр("ТаблицаВидыЗапасов", ВидыЗапасовСДокументовПоступления);
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПервичныйДокумент") Тогда
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", Ложь);
ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ОтчетПереработчика2_5") Тогда
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", Ложь);
Иначе
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", РеквизитыОснования.ВернутьМногооборотнуюТару);
КонецЕсли;
Если ТипЗнч(ДокументОснование) <> Тип("ДокументСсылка.ПервичныйДокумент") Тогда
Запрос.УстановитьПараметр("ЗакупкаПодДеятельность",
РеквизитыОснования.ЗакупкаПодДеятельность);
Иначе
Запрос.УстановитьПараметр("ЗакупкаПодДеятельность",
Ложь);
КонецЕсли;
Запрос.УстановитьПараметр("НалогообложениеОрганизации",
ПараметрыУчетаПоОрганизации.ОсновноеНалогообложениеНДСПродажи);
Запрос.УстановитьПараметр("ИспользоватьРаздельныйУчетПоНалогообложению",
НастройкиНалоговУчетныхПолитикПовтИсп.РаздельныйУчетТоваровПоНалогообложениюНДС(Организация, Дата));
Запрос.УстановитьПараметр("ПартионныйУчетВерсии22",
РасчетСебестоимостиПовтИсп.ПартионныйУчетВерсии22(НачалоМесяца(Дата)));
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
ЗапасыСервер.ДополнитьВременныеТаблицыОбязательнымиКолонками(Запрос);
ЗапасыСервер.ПроверитьНеобходимостьПерезаполненияВидовЗапасовДокумента(ЭтотОбъект, Запрос);
Запрос.Выполнить();
Возврат МенеджерВременныхТаблиц;
КонецФункции
Функция ПараметрыЗаполненияВидовЗапасов(ПоИзлишкам, ХозяйственнаяОперацияДокумента)
ПараметрыЗаполнения = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
ПараметрыЗаполнения.ПриНехваткеТоваровОрганизацииЗаполнятьВидамиЗапасовПоУмолчанию = Истина;
ПараметрыЗаполнения.ТаблицаРеквизитовВидовЗапасовПоУмолчанию = ТаблицаРеквизитовВидовЗапасовПоУмолчанию(ХозяйственнаяОперацияДокумента);
ПараметрыЗаполнения.ИмяТаблицыОстатков = ?(ПоИзлишкам, "ТоварыУПартнеровПоложительныйОстаток", "ТоварыУПартнеровОтрицательныйОстаток");
ПараметрыЗаполнения.БезОтбораПоНомерамГТД = Истина;
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов.Очистить();
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов.Добавить(ТипЗапасовПоХозОперации(ХозяйственнаяОперацияДокумента));
ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов.Добавить(Перечисления.ТипыЗапасов.Работа);
ПараметрыЗаполнения.ОтборыВидовЗапасов.Организация = Организация;
ПараметрыЗаполнения.ОтборыВидовЗапасов.ВидЦены = Справочники.ВидыЦенПоставщиков.ПустаяСсылка();
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ТаблицаРеквизитовВидовЗапасовПоУмолчанию(ХозяйственнаяОперацияДокумента)
ТаблицаРеквизитовВидовЗапасовПоУмолчанию = Расхождения.Выгрузить(, "НомерСтроки, АналитикаУчетаНоменклатуры, ВариантОтражения");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"ВладелецТовара", Новый ОписаниеТипов("СправочникСсылка.Партнеры"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"ТипЗапасов", Новый ОписаниеТипов("ПеречислениеСсылка.ТипыЗапасов"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"ВидЗапасов", Новый ОписаниеТипов("СправочникСсылка.ВидыЗапасов"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"НомерГТД", Новый ОписаниеТипов("СправочникСсылка.НомераГТД"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.Колонки.Добавить(
"Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Партнер, "ВладелецТовара");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Договор, "Договор");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Организация, "Организация");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(ТипЗапасовПоХозОперации(ХозяйственнаяОперацияДокумента), "ТипЗапасов");
ТаблицаРеквизитовВидовЗапасовПоУмолчанию.ЗаполнитьЗначения(Контрагент, "Контрагент");
Возврат ТаблицаРеквизитовВидовЗапасовПоУмолчанию;
КонецФункции
Функция ТипЗапасовПоХозОперации(ХозяйственнаяОперацияДокумента)
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПервичныйДокумент") Тогда
Возврат Перечисления.ТипыЗапасов.Товар;
КонецЕсли;
Если ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути Или
ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути Или
ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути Тогда
Возврат Перечисления.ТипыЗапасов.СобственныйТоварВПути;
ИначеЕсли
ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки Или
ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки Тогда
Возврат Перечисления.ТипыЗапасов.СобственныйТоварПоНеотфактурованнойПоставке;
ИначеЕсли
ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
Возврат Перечисления.ТипыЗапасов.КомиссионныйТовар;
Иначе
Возврат Перечисления.ТипыЗапасов.Товар;
КонецЕсли;
КонецФункции
Процедура ЗаполнитьДопКолонкиВидовЗапасов()
СтруктураПоиска = Новый Структура("АналитикаУчетаНоменклатуры");
Измерения = "АналитикаУчетаНоменклатуры, ИдентификаторСтроки, НомерГТД,
|ЗаказПоставщику, Цена, СтавкаНДС,
|Сделка, ВариантОтражения, КодСтроки,
|Подразделение, СписатьНаРасходы, СтатьяРасходов,
|АналитикаРасходов, АналитикаАктивовПассивов, АналитикаДоходов, ОбъектРасчетов";
Ресурсы = "Количество, КоличествоПоРНПТ, СуммаВзаиморасчетов, СуммаНДСВзаиморасчетов, СуммаСНДС, СуммаНДС";
СтруктураРесурсов = Новый Структура(Ресурсы);
МассивРесурсов = СтрРазделить(Ресурсы, ", ", Ложь);
ОтборСтрок = Новый Структура("Количество", 0);
РасхожденияТолькоПоСуммам = Расхождения.Выгрузить(ОтборСтрок);
ВидыЗапасовРасхожденияТолькоПоСуммам = ВидыЗапасов.ВыгрузитьКолонки();
Для Каждого СтрВидыЗапасовРасхожденияТолькоПоСуммам Из ВидыЗапасов.НайтиСтроки(ОтборСтрок) Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрВидыЗапасовРасхожденияТолькоПоСуммам);
Для Каждого СтрРасхожденияТолькоПоСуммам Из РасхожденияТолькоПоСуммам.НайтиСтроки(СтруктураПоиска) Цикл
НоваяСтрока = ВидыЗапасовРасхожденияТолькоПоСуммам.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрВидыЗапасовРасхожденияТолькоПоСуммам);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрРасхожденияТолькоПоСуммам, Измерения + ", " + Ресурсы);
КонецЦикла;
КонецЦикла;
ТаблицаТовары = Расхождения.Выгрузить(, Измерения + ", " + Ресурсы);
ТаблицаТовары.Свернуть(Измерения, Ресурсы);
Для Каждого СтрокаТоваров Из ТаблицаТовары Цикл
ЗаполнитьЗначенияСвойств(СтруктураРесурсов, СтрокаТоваров);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТоваров);
Для Каждого СтрокаЗапасов Из ВидыЗапасов.НайтиСтроки(СтруктураПоиска) Цикл
Если СтрокаЗапасов.Количество = 0 Тогда
Продолжить;
КонецЕсли;
КоличествоПоСтроке = Мин(СтруктураРесурсов.Количество, СтрокаЗапасов.Количество);
НоваяСтрока = ВидыЗапасов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаЗапасов);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТоваров, Измерения);
НоваяСтрока.Количество = КоличествоПоСтроке;
НоваяСтрока.КоличествоПоРНПТ = КоличествоПоСтроке * СтрокаЗапасов.КоличествоПоРНПТ
/ СтрокаЗапасов.Количество;
Если СтруктураРесурсов.Количество Тогда
Для Каждого ЭлементРесурс Из МассивРесурсов Цикл
НоваяСтрока[ЭлементРесурс] = КоличествоПоСтроке * СтруктураРесурсов[ЭлементРесурс]
/ СтруктураРесурсов.Количество;
КонецЦикла;
КонецЕсли;
СтрокаЗапасов.Количество = СтрокаЗапасов.Количество - НоваяСтрока.Количество;
СтрокаЗапасов.КоличествоПоРНПТ = СтрокаЗапасов.КоличествоПоРНПТ - НоваяСтрока.КоличествоПоРНПТ;
Для Каждого ЭлементРесурс Из МассивРесурсов Цикл
СтруктураРесурсов[ЭлементРесурс] = СтруктураРесурсов[ЭлементРесурс] - НоваяСтрока[ЭлементРесурс];
КонецЦикла;
Если СтруктураРесурсов.Количество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПараметрыПоиска = Новый Структура("Количество", 0);
МассивУдаляемыхСтрок = ВидыЗапасов.НайтиСтроки(ПараметрыПоиска);
Для Каждого СтрокаТаблицы Из МассивУдаляемыхСтрок Цикл
ВидыЗапасов.Удалить(СтрокаТаблицы);
КонецЦикла;
Для Каждого СтрВидыЗапасовРасхожденияТолькоПоСуммам Из ВидыЗапасовРасхожденияТолькоПоСуммам Цикл
ЗаполнитьЗначенияСвойств(ВидыЗапасов.Добавить(), СтрВидыЗапасовРасхожденияТолькоПоСуммам);
КонецЦикла;
КонецПроцедуры
Процедура РаспределитьЗапасыНаРасхождения(РасхожденияДокумента, ХозяйственнаяОперацияДокумента)
РасхожденияДокумента.Колонки.Добавить("КоличествоДляРаспределения", Новый ОписаниеТипов("Число"));
РасхожденияВидыЗапасов = Расхождения.Выгрузить();
РасхожденияВидыЗапасов.Колонки.Количество.Имя = "КоличествоДляРаспределения";
РаспределятьГТД = ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС
И УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(Дата);
ПрослеживаемостьТоваров = Неопределено;
Если РаспределятьГТД Тогда
ТоварыРасхождений = РасхожденияВидыЗапасов.ВыгрузитьКолонку("Номенклатура");
ПрослеживаемостьТоваров = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(ТоварыРасхождений, "ПрослеживаемыйТовар");
КонецЕсли;
КлючСГТД = "Номенклатура, Характеристика, Назначение, Серия, НомерГТД";
КлючБезГТД = "Номенклатура, Характеристика, Назначение, Серия";
ОтборСГТД = Новый Структура(КлючСГТД);
ОтборБезГТД = Новый Структура(КлючБезГТД);
Для Каждого СтрокаЗапасов Из РасхожденияВидыЗапасов Цикл
Если СтрокаЗапасов.КоличествоДляРаспределения > 0 Тогда
Продолжить;
КонецЕсли;
ПрослеживаемыйТовар = ?(ПрослеживаемостьТоваров <> Неопределено,
ПрослеживаемостьТоваров.Получить(СтрокаЗапасов.Номенклатура),
Ложь);
Отбор = ?(ПрослеживаемыйТовар, ОтборБезГТД, ОтборСГТД);
ЗаполнитьЗначенияСвойств(Отбор, СтрокаЗапасов);
НайденныеСтроки = РасхожденияДокумента.НайтиСтроки(Отбор);
Для Каждого СтрокаТовары Из НайденныеСтроки Цикл
Если СтрокаЗапасов.КоличествоДляРаспределения = 0 Тогда
Прервать;
КонецЕсли;
Количество = СтрокаЗапасов.КоличествоДляРаспределения;
Превышение = СтрокаТовары.КоличествоДляРаспределения + Количество - СтрокаТовары.Количество;
Если Превышение <> 0 Тогда
Если Превышение <= Количество Тогда
Продолжить;
Иначе
Количество = Количество - Превышение;
КонецЕсли;
КонецЕсли;
Если Количество = 0 Тогда
Продолжить;
КонецЕсли;
ЗаполняемыеПоляРавны = СтрокаЗапасов.ВидЗапасов = СтрокаТовары.ВидЗапасов;
Если ПрослеживаемыйТовар
И ЗаполняемыеПоляРавны Тогда
ЗаполняемыеПоляРавны = СтрокаЗапасов.НомерГТД = СтрокаТовары.НомерГТД;
КонецЕсли;
Если Не ЗаполняемыеПоляРавны
И СтрокаТовары.КоличествоДляРаспределения = 0 Тогда
СтрокаТовары.ВидЗапасов = СтрокаЗапасов.ВидЗапасов;
Если ПрослеживаемыйТовар Тогда
СтрокаТовары.НомерГТД = СтрокаЗапасов.НомерГТД;
КонецЕсли;
СтрокаТовары.КоличествоДляРаспределения = СтрокаТовары.КоличествоДляРаспределения + Количество;
СтрокаЗапасов.КоличествоДляРаспределения = СтрокаЗапасов.КоличествоДляРаспределения - Количество;
ИначеЕсли ЗаполняемыеПоляРавны Тогда
СтрокаТовары.КоличествоДляРаспределения = СтрокаТовары.КоличествоДляРаспределения + Количество;
СтрокаЗапасов.КоличествоДляРаспределения = СтрокаЗапасов.КоличествоДляРаспределения - Количество;
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() > 0
И СтрокаЗапасов.КоличествоДляРаспределения < 0 Тогда
СтрокаТовары = НайденныеСтроки[НайденныеСтроки.ВГраница()];
СтрокаТовары.КоличествоДляРаспределения = СтрокаТовары.КоличествоДляРаспределения
+ СтрокаЗапасов.КоличествоДляРаспределения;
СтрокаТовары.ВидЗапасов = СтрокаЗапасов.ВидЗапасов;
Если ПрослеживаемыйТовар Тогда
СтрокаТовары.НомерГТД = СтрокаЗапасов.НомерГТД;
КонецЕсли;
СтрокаЗапасов.КоличествоДляРаспределения = 0;
КонецЕсли;
КонецЦикла;
Расхождения.Загрузить(РасхожденияДокумента);
КонецПроцедуры
Функция ПроверитьИзменениеРеквизитовДокумента(МенеджерВременныхТаблиц)
ИменаРеквизитов = "Дата, Организация, ВидКорректировки, Партнер, Контрагент, Соглашение";
Возврат ЗапасыСервер.ПроверитьИзменениеРеквизитовДокумента(МенеджерВременныхТаблиц, Ссылка, ИменаРеквизитов);
КонецФункции
Функция ПроверитьИзменениеТоваров(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ИЗ
| (ВЫБРАТЬ
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ВариантОтражения КАК ВариантОтражения,
| ТаблицаТоваров.ОбъектРасчетов КАК ОбъектРасчетов,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.СуммаСНДС КАК СуммаСНДС
|
| ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВариантОтражения КАК ВариантОтражения,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| -ТаблицаВидыЗапасов.Количество,
| -ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| -ТаблицаВидыЗапасов.СуммаСНДС КАК СуммаСНДС
| ИЗ
| ТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов) КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ВариантОтражения,
| ТаблицаТоваров.ОбъектРасчетов
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаТоваров.Количество) <> 0
| ИЛИ СУММА(ТаблицаТоваров.КоличествоПоРНПТ) <> 0
| ИЛИ СУММА(ТаблицаТоваров.СуммаСНДС) <> 0";
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
РезультатЗапрос = Запрос.Выполнить();
Возврат (Не РезультатЗапрос.Пустой());
КонецФункции
Процедура ПроверитьЗаполнениеКолонкиСтроки(ИмяКолонки, ЗначениеРеквизитовДокументаОснования, СоответствиеНоменклатураТип, ТекущаяСтрока, Отказ)
Перем ТекстОшибки;
Если Не ЗначениеЗаполнено(ТекущаяСтрока[ИмяКолонки]) Тогда
ТекстОшибки = СтрШаблон(НСтр("ru = 'Не заполнена колонка ""%1"" в строке %2 списка ""Товары""'"), ИмяКолонки, ТекущаяСтрока.НомерСтроки);
Если Не СоответствиеНоменклатураТип.Получить(ТекущаяСтрока.Номенклатура) = Перечисления.ТипыНоменклатуры.МногооборотнаяТара
Или СоответствиеНоменклатураТип.Получить(ТекущаяСтрока.Номенклатура) = Перечисления.ТипыНоменклатуры.МногооборотнаяТара
И (Не ЗначениеРеквизитовДокументаОснования.ВернутьМногооборотнуюТару Или ЗначениеРеквизитовДокументаОснования.ТребуетсяЗалогЗаТару) Тогда
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", ТекущаяСтрока.НомерСтроки, ИмяКолонки),
,
Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьЦепочкуИсправленийПередЗаписью(Отказ, РежимЗаписи)
Если Отказ Тогда
Возврат
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И ЗначениеЗаполнено(ИсправляемыйДокумент)
И ВидКорректировки = Перечисления.ХозяйственныеОперации.ИсправлениеОшибок
И (Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ИсправляемыйДокумент, "Проведен")
Или ИсправлениеДокументов.ЕстьИсправлениеИлиСторно(ИсправляемыйДокумент)) Тогда
ТекстОшибки = НСтр("ru='Исправляемый документ не проведен или сторнирован.
|Проведение документа невозможно.'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,,,, Отказ);
КонецЕсли;
Реквизиты = Документы.КорректировкаПриобретения.ПараметрыПолученияИсправляемогоДокумента();
ЗаполнитьЗначенияСвойств(Реквизиты, ЭтотОбъект);
ПараметрыПроверки = РегистрыСведений.ИсправленияДокументов.ПараметрыПроверкиИсправленияДокументов();
ЗаполнитьЗначенияСвойств(ПараметрыПроверки, ЭтотОбъект,, "ИсправляемыйДокумент");
ПараметрыПроверки.ИсправляемыйДокумент = Документы.КорректировкаПриобретения.ИсправляемыйДокумент(Реквизиты);
ИзмененияПриПерепроведении = Ложь;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Проведен
И ВидКорректировки = Перечисления.ХозяйственныеОперации.ИсправлениеОшибок Тогда
ИзмененияПриПерепроведении = ИсправлениеДокументов.ИзменилисьПараметрыИсправленияДокументов(ПараметрыПроверки);
КонецЕсли;
Если ИзмененияПриПерепроведении Или РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения
Или (РежимЗаписи = РежимЗаписиДокумента.Проведение И Не Проведен) Тогда
Если ВидКорректировки = Перечисления.ХозяйственныеОперации.КорректировкаПоСогласованиюСторон Тогда
ПараметрыПроверки.ИсправляемыйДокумент = Ссылка;
КонецЕсли;
Исправление = ИсправлениеДокументов.ИсправлениеПослеДатыДокумента(ПараметрыПроверки);
Если ЗначениеЗаполнено(Исправление) Тогда
ТекстОшибки = НСтр("ru='Есть исправление позднее даты текущего документа.
|Изменение документа запрещено.'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,,,, Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ВариантОтраженияПоСтроке(СтрокаРасхождений, ТипНоменклатуры, КорректировкаПрошлогоПериода, ИспользуетсяДокументПоступлениеТоваров)
ВариантОтражения = Неопределено;
Если Не ИспользуетсяДокументПоступлениеТоваров
И ((ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.Товар
И ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.МногооборотнаяТара)
Или СтрокаРасхождений.КоличествоУпаковок = 0) Тогда
Если СтрокаРасхождений.СуммаСНДС < 0
Или (СтрокаРасхождений.СуммаСНДС = 0 И СтрокаРасхождений.СуммаНДС < 0)
Или (СтрокаРасхождений.СуммаСНДС = 0 И СтрокаРасхождений.СуммаНДС = 0
И СтрокаРасхождений.КоличествоУпаковок < 0) Тогда
ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокПоступлений.УменьшитьСтоимостьТовара;
Иначе
ВариантОтражения = Перечисления.ВариантыОтраженияКорректировокПоступлений.УвеличитьСтоимостьТовара;
КонецЕсли;
ИначеЕсли ИспользуетсяДокументПоступлениеТоваров Тогда
Если СтрокаРасхождений.Количество <> 0 Тогда
Если ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга
Или ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа Тогда
ВариантОтражения = ?(СтрокаРасхождений.Количество < 0,
Перечисления.ВариантыОтраженияКорректировокПоступлений.УменьшитьСтоимостьТовара,
Перечисления.ВариантыОтраженияКорректировокПоступлений.УвеличитьСтоимостьТовара);
Иначе
ВариантОтражения = ?(СтрокаРасхождений.Количество < 0,
Перечисления.ВариантыОтраженияКорректировокПоступлений.УменьшитьЗакупкуУменьшитьТоварыУПартнеров,
Перечисления.ВариантыОтраженияКорректировокПоступлений.УвеличитьЗакупкуУвеличитьТоварыУПартнеров);
КонецЕсли;
ИначеЕсли СтрокаРасхождений.СуммаСНДС <> 0 Тогда
ВариантОтражения = ?(СтрокаРасхождений.СуммаСНДС < 0,
Перечисления.ВариантыОтраженияКорректировокПоступлений.УменьшитьЗакупкуУменьшитьТоварыУПартнеров,
Перечисления.ВариантыОтраженияКорректировокПоступлений.УвеличитьЗакупкуУвеличитьТоварыУПартнеров);
КонецЕсли;
КонецЕсли;
Возврат ВариантОтражения;
КонецФункции
Процедура ЗаполнитьРасхождения(ИспользуетсяДокументПоступлениеТоваров) Экспорт
Если Не ЗначениеЗаполнено(ДокументОснование) Тогда
ВызватьИсключение НСтр("ru = 'Поле ""Документ-основание"" не заполнено'");
КонецЕсли;
Расхождения.Очистить();
КлючевыеПоля = "
| Номенклатура,
| Характеристика,
| Назначение,
| Серия,
| Содержание,
| Упаковка,
| ЗаказПоставщику,
| Склад,
| Сделка,
| Подразделение,
| НомерГруппыЗатрат,
| СтатьяКалькуляции,
| СписатьНаРасходы,
| СтатьяРасходов,
| АналитикаРасходов,
| АналитикаАктивовПассивов,
| АналитикаДоходов,
| НаправлениеДеятельности,
| ХешСуммаНастройкиСчетов,
| НомерГТД,
| СтавкаНДС,
| КодТНВЭД,
| КодСтроки";
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Документы.КорректировкаПриобретения.СформироватьВременнуюТаблицуИсходныхДанных(
МенеджерВременныхТаблиц, ДокументОснование, Ссылка);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = "
|ВЫБРАТЬ
| НовыеДанные.Номенклатура КАК Номенклатура,
| НовыеДанные.Характеристика КАК Характеристика,
| НовыеДанные.Назначение КАК Назначение,
| НовыеДанные.Серия КАК Серия,
| НовыеДанные.Содержание КАК Содержание,
| НовыеДанные.Упаковка КАК Упаковка,
| НовыеДанные.ЗаказПоставщику КАК ЗаказПоставщику,
| НовыеДанные.Склад КАК Склад,
| НовыеДанные.Сделка КАК Сделка,
| НовыеДанные.Подразделение КАК Подразделение,
| НовыеДанные.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| НовыеДанные.СтатьяКалькуляции КАК СтатьяКалькуляции,
| НовыеДанные.СписатьНаРасходы КАК СписатьНаРасходы,
| НовыеДанные.СтатьяРасходов КАК СтатьяРасходов,
| НовыеДанные.АналитикаРасходов КАК АналитикаРасходов,
| НовыеДанные.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| НовыеДанные.АналитикаДоходов КАК АналитикаДоходов,
| НовыеДанные.НаправлениеДеятельности КАК НаправлениеДеятельности,
| НовыеДанные.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| НовыеДанные.НомерГТД КАК НомерГТД,
| НовыеДанные.КодТНВЭД КАК КодТНВЭД,
| НовыеДанные.СтавкаНДС КАК СтавкаНДС,
| ВЫБОР
| КОГДА НовыеДанные.КоличествоУпаковок <> 0
| ТОГДА НовыеДанные.КоличествоУпаковок
| КОГДА НовыеДанные.Количество = 0
| ТОГДА 1
| ИНАЧЕ НовыеДанные.Количество
| КОНЕЦ КАК КоличествоУпаковок,
| ВЫБОР
| КОГДА НовыеДанные.Количество = 0
| ТОГДА 1
| ИНАЧЕ НовыеДанные.Количество
| КОНЕЦ КАК Количество,
| НовыеДанные.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| НовыеДанные.Сумма КАК Сумма,
| НовыеДанные.СуммаНДС КАК СуммаНДС,
| НовыеДанные.СуммаСНДС КАК СуммаСНДС,
| НовыеДанные.КодСтроки КАК КодСтроки,
| НовыеДанные.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ НовыеДанныеИзТаблицы
|ИЗ
| &НовыеДанные КАК НовыеДанные
|;
|
|
|ВЫБРАТЬ
| НовыеДанныеИзТаблицы.Номенклатура,
| НовыеДанныеИзТаблицы.Характеристика,
| НовыеДанныеИзТаблицы.Назначение,
| НовыеДанныеИзТаблицы.Серия,
| НовыеДанныеИзТаблицы.Содержание,
| НовыеДанныеИзТаблицы.Упаковка,
| НовыеДанныеИзТаблицы.ЗаказПоставщику,
| НовыеДанныеИзТаблицы.Склад,
| НовыеДанныеИзТаблицы.Сделка,
| НовыеДанныеИзТаблицы.Подразделение КАК Подразделение,
| НовыеДанныеИзТаблицы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| НовыеДанныеИзТаблицы.СтатьяКалькуляции КАК СтатьяКалькуляции,
| НовыеДанныеИзТаблицы.СписатьНаРасходы КАК СписатьНаРасходы,
| НовыеДанныеИзТаблицы.СтатьяРасходов,
| НовыеДанныеИзТаблицы.АналитикаРасходов,
| НовыеДанныеИзТаблицы.АналитикаАктивовПассивов,
| НовыеДанныеИзТаблицы.АналитикаДоходов,
| НовыеДанныеИзТаблицы.НаправлениеДеятельности,
| МАКСИМУМ(НовыеДанныеИзТаблицы.НастройкаСчетовУчета) КАК НастройкаСчетовУчета,
| ЕСТЬNULL(НовыеДанныеИзТаблицы.НастройкаСчетовУчета.ХешСумма, """") КАК ХешСуммаНастройкиСчетов,
| НовыеДанныеИзТаблицы.НомерГТД,
| НовыеДанныеИзТаблицы.КодТНВЭД,
| НовыеДанныеИзТаблицы.СтавкаНДС,
| СУММА(НовыеДанныеИзТаблицы.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(НовыеДанныеИзТаблицы.Количество) КАК Количество,
| СУММА(НовыеДанныеИзТаблицы.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(НовыеДанныеИзТаблицы.Сумма) КАК Сумма,
| СУММА(НовыеДанныеИзТаблицы.СуммаНДС) КАК СуммаНДС,
| СУММА(НовыеДанныеИзТаблицы.СуммаСНДС) КАК СуммаСНДС,
| НовыеДанныеИзТаблицы.КодСтроки КАК КодСтроки,
| МИНИМУМ(НовыеДанныеИзТаблицы.НомерСтроки) КАК НомерСтроки
|ПОМЕСТИТЬ НовыеДанные
|ИЗ
| НовыеДанныеИзТаблицы КАК НовыеДанныеИзТаблицы
|
|СГРУППИРОВАТЬ ПО
| НовыеДанныеИзТаблицы.Номенклатура,
| НовыеДанныеИзТаблицы.Характеристика,
| НовыеДанныеИзТаблицы.Назначение,
| НовыеДанныеИзТаблицы.Серия,
| НовыеДанныеИзТаблицы.Содержание,
| НовыеДанныеИзТаблицы.Упаковка,
| НовыеДанныеИзТаблицы.ЗаказПоставщику,
| НовыеДанныеИзТаблицы.Склад,
| НовыеДанныеИзТаблицы.Сделка,
| НовыеДанныеИзТаблицы.Подразделение,
| НовыеДанныеИзТаблицы.НомерГруппыЗатрат,
| НовыеДанныеИзТаблицы.СтатьяКалькуляции,
| НовыеДанныеИзТаблицы.СписатьНаРасходы,
| НовыеДанныеИзТаблицы.СтатьяРасходов,
| НовыеДанныеИзТаблицы.АналитикаРасходов,
| НовыеДанныеИзТаблицы.АналитикаАктивовПассивов,
| НовыеДанныеИзТаблицы.АналитикаДоходов,
| НовыеДанныеИзТаблицы.НаправлениеДеятельности,
| ЕСТЬNULL(НовыеДанныеИзТаблицы.НастройкаСчетовУчета.ХешСумма, """"),
| НовыеДанныеИзТаблицы.НомерГТД,
| НовыеДанныеИзТаблицы.КодТНВЭД,
| НовыеДанныеИзТаблицы.СтавкаНДС,
| НовыеДанныеИзТаблицы.КодСтроки
|;
|
|
|ВЫБРАТЬ
| ВЫРАЗИТЬ(ИсходныеДанные.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| ВЫРАЗИТЬ(ИсходныеДанные.Характеристика КАК Справочник.ХарактеристикиНоменклатуры) КАК Характеристика,
| ВЫРАЗИТЬ(ИсходныеДанные.Назначение КАК Справочник.Назначения) КАК Назначение,
| ВЫРАЗИТЬ(ИсходныеДанные.Серия КАК Справочник.СерииНоменклатуры) КАК Серия,
|
| ВЫБОР КОГДА ИсходныеДанные.Содержание <> Неопределено ТОГДА
| ИсходныеДанные.Содержание
| ИНАЧЕ
| """"
| КОНЕЦ КАК Содержание,
|
| ВЫРАЗИТЬ(ИсходныеДанные.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
| ВЫБОР
| КОГДА ИсходныеДанные.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику
| ТОГДА ВЫРАЗИТЬ(ИсходныеДанные.ЗаказПоставщику КАК Документ.ЗаказПоставщику)
| КОГДА ИсходныеДанные.ЗаказПоставщику ССЫЛКА Документ.ЗаказПереработчику2_5
| ТОГДА ВЫРАЗИТЬ(ИсходныеДанные.ЗаказПоставщику КАК Документ.ЗаказПереработчику2_5)
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ЗаказПоставщику,
|
| ВЫРАЗИТЬ(ИсходныеДанные.Склад КАК Справочник.Склады) КАК Склад,
| ВЫРАЗИТЬ(ИсходныеДанные.Сделка КАК Справочник.СделкиСКлиентами) КАК Сделка,
| ВЫРАЗИТЬ(ИсходныеДанные.Подразделение КАК Справочник.СтруктураПредприятия) КАК Подразделение,
| ВЫРАЗИТЬ(ИсходныеДанные.НомерГруппыЗатрат КАК Число(10,0)) КАК НомерГруппыЗатрат,
| ВЫРАЗИТЬ(ИсходныеДанные.СтатьяКалькуляции КАК Справочник.СтатьиКалькуляции) КАК СтатьяКалькуляции,
| ВЫРАЗИТЬ(ИсходныеДанные.СписатьНаРасходы КАК Булево) КАК СписатьНаРасходы,
| ИсходныеДанные.СтатьяРасходов КАК СтатьяРасходов,
| ИсходныеДанные.АналитикаРасходов КАК АналитикаРасходов,
| ИсходныеДанные.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ИсходныеДанные.АналитикаДоходов КАК АналитикаДоходов,
| ВЫРАЗИТЬ(ИсходныеДанные.НаправлениеДеятельности КАК Справочник.НаправленияДеятельности) КАК НаправлениеДеятельности,
| МАКСИМУМ(ИсходныеДанные.НастройкаСчетовУчета) КАК НастройкаСчетовУчета,
| ЕСТЬNULL(ИсходныеДанные.НастройкаСчетовУчета.ХешСумма, """") КАК ХешСуммаНастройкиСчетов,
| ВЫРАЗИТЬ(ИсходныеДанные.НомерГТД КАК Справочник.НомераГТД) КАК НомерГТД,
| ВЫРАЗИТЬ(ИсходныеДанные.КодТНВЭД КАК Справочник.КлассификаторТНВЭД) КАК КодТНВЭД,
| ВЫРАЗИТЬ(ИсходныеДанные.СтавкаНДС КАК Справочник.СтавкиНДС) КАК СтавкаНДС,
| СУММА(ВЫБОР КОГДА ИсходныеДанные.КоличествоУпаковок <> НЕОПРЕДЕЛЕНО ТОГДА
| ВЫБОР КОГДА ИсходныеДанные.КоличествоУпаковок = 0 ТОГДА
| 1
| ИНАЧЕ
| ВЫРАЗИТЬ(ИсходныеДанные.КоличествоУпаковок КАК Число(15, 3))
| КОНЕЦ
| ИНАЧЕ
| 0
| КОНЕЦ) КАК КоличествоУпаковок,
| СУММА(ВЫБОР КОГДА ИсходныеДанные.Количество <> Неопределено ТОГДА
| ВЫБОР КОГДА ИсходныеДанные.Количество = 0 ТОГДА
| 1
| ИНАЧЕ
| ВЫРАЗИТЬ(ИсходныеДанные.Количество КАК Число(15, 3))
| КОНЕЦ
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Количество,
| СУММА(ВЫБОР
| КОГДА ИсходныеДанные.КоличествоПоРНПТ <> НЕОПРЕДЕЛЕНО
| ТОГДА ВЫРАЗИТЬ(ИсходныеДанные.КоличествоПоРНПТ КАК Число(15, 11))
| ИНАЧЕ 0
| КОНЕЦ) КАК КоличествоПоРНПТ,
| СУММА(ВЫБОР КОГДА ИсходныеДанные.Сумма <> Неопределено ТОГДА
| ВЫРАЗИТЬ(ИсходныеДанные.Сумма КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Сумма,
|
| СУММА(ВЫБОР КОГДА ИсходныеДанные.СуммаНДС <> Неопределено ТОГДА
| ВЫРАЗИТЬ(ИсходныеДанные.СуммаНДС КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ) КАК СуммаНДС,
|
| СУММА(ВЫБОР КОГДА ИсходныеДанные.СуммаСНДС <> Неопределено ТОГДА
| ВЫРАЗИТЬ(ИсходныеДанные.СуммаСНДС КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ) КАК СуммаСНДС,
| ИсходныеДанные.КодСтроки,
| МИНИМУМ(ИсходныеДанные.НомерСтроки)
|
|ПОМЕСТИТЬ ИсходныеДанныеДляРасхождений
|ИЗ
| ИсходныеДанные КАК ИсходныеДанные
|
|СГРУППИРОВАТЬ ПО
| ИсходныеДанные.Характеристика,
| ИсходныеДанные.Назначение,
| ИсходныеДанные.Серия,
| ИсходныеДанные.Содержание,
| ИсходныеДанные.Упаковка,
| ИсходныеДанные.ЗаказПоставщику,
| ИсходныеДанные.Склад,
| ИсходныеДанные.Номенклатура,
| ИсходныеДанные.Сделка,
| ИсходныеДанные.Подразделение,
| ИсходныеДанные.НомерГруппыЗатрат,
| ИсходныеДанные.СтатьяКалькуляции,
| ИсходныеДанные.СписатьНаРасходы,
| ИсходныеДанные.СтатьяРасходов,
| ИсходныеДанные.АналитикаРасходов,
| ИсходныеДанные.АналитикаАктивовПассивов,
| ИсходныеДанные.АналитикаДоходов,
| ИсходныеДанные.НаправлениеДеятельности,
| ЕСТЬNULL(ИсходныеДанные.НастройкаСчетовУчета.ХешСумма, """"),
| ИсходныеДанные.НомерГТД,
| ИсходныеДанные.КодТНВЭД,
| ИсходныеДанные.СтавкаНДС,
| ИсходныеДанные.КодСтроки
|;
|
|
|УНИЧТОЖИТЬ ИсходныеДанные
|;
|
|
|ВЫБРАТЬ
| НовыеДанные.Номенклатура КАК Номенклатура,
| НовыеДанные.Характеристика КАК Характеристика,
| НовыеДанные.Назначение КАК Назначение,
| НовыеДанные.Серия КАК Серия,
| НовыеДанные.Содержание КАК Содержание,
| НовыеДанные.Упаковка КАК Упаковка,
| НовыеДанные.ЗаказПоставщику КАК ЗаказПоставщику,
| НовыеДанные.Склад КАК Склад,
| НовыеДанные.Сделка КАК Сделка,
| НовыеДанные.Подразделение КАК Подразделение,
| НовыеДанные.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| НовыеДанные.СтатьяКалькуляции КАК СтатьяКалькуляции,
| НовыеДанные.СписатьНаРасходы КАК СписатьНаРасходы,
| НовыеДанные.СтатьяРасходов КАК СтатьяРасходов,
| НовыеДанные.АналитикаРасходов КАК АналитикаРасходов,
| НовыеДанные.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| НовыеДанные.АналитикаДоходов КАК АналитикаДоходов,
| НовыеДанные.НаправлениеДеятельности КАК НаправлениеДеятельности,
| НовыеДанные.ХешСуммаНастройкиСчетов КАК ХешСуммаНастройкиСчетов,
| НовыеДанные.НомерГТД КАК НомерГТД,
| НовыеДанные.КодТНВЭД КАК КодТНВЭД,
| НовыеДанные.СтавкаНДС КАК СтавкаНДС,
| НовыеДанные.Сумма КАК Сумма,
| НовыеДанные.СуммаНДС КАК СуммаНДС,
| НовыеДанные.СуммаСНДС КАК СуммаСНДС,
| НовыеДанные.КодСтроки КАК КодСтроки,
| НовыеДанные.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ ДанныеРасхождений
|ИЗ
| НовыеДанные КАК НовыеДанные
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсходныеДанныеДляРасхождений КАК ИсходныеДанные
| ПО НовыеДанные.Номенклатура = ИсходныеДанные.Номенклатура
| И НовыеДанные.Характеристика = ИсходныеДанные.Характеристика
| И НовыеДанные.Назначение = ИсходныеДанные.Назначение
| И НовыеДанные.Серия = ИсходныеДанные.Серия
| И НовыеДанные.Содержание = ИсходныеДанные.Содержание
| И НовыеДанные.Упаковка = ИсходныеДанные.Упаковка
| И НовыеДанные.ЗаказПоставщику = ИсходныеДанные.ЗаказПоставщику
| И НовыеДанные.Склад = ИсходныеДанные.Склад
| И НовыеДанные.Сделка = ИсходныеДанные.Сделка
| И НовыеДанные.Подразделение = ИсходныеДанные.Подразделение
| И НовыеДанные.НомерГруппыЗатрат = ИсходныеДанные.НомерГруппыЗатрат
| И НовыеДанные.СтатьяКалькуляции = ИсходныеДанные.СтатьяКалькуляции
| И НовыеДанные.СписатьНаРасходы = ИсходныеДанные.СписатьНаРасходы
| И НовыеДанные.СтатьяРасходов = ИсходныеДанные.СтатьяРасходов
| И НовыеДанные.АналитикаРасходов = ИсходныеДанные.АналитикаРасходов
| И НовыеДанные.АналитикаАктивовПассивов = ИсходныеДанные.АналитикаАктивовПассивов
| И НовыеДанные.АналитикаДоходов = ИсходныеДанные.АналитикаДоходов
| И НовыеДанные.НаправлениеДеятельности = ИсходныеДанные.НаправлениеДеятельности
| И НовыеДанные.ХешСуммаНастройкиСчетов = ИсходныеДанные.ХешСуммаНастройкиСчетов
| И НовыеДанные.НомерГТД = ИсходныеДанные.НомерГТД
| И НовыеДанные.КодТНВЭД = ИсходныеДанные.КодТНВЭД
| И НовыеДанные.СтавкаНДС = ИсходныеДанные.СтавкаНДС
| И НовыеДанные.КодСтроки = ИсходныеДанные.КодСтроки
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИсходныеДанные.Номенклатура,
| ИсходныеДанные.Характеристика,
| ИсходныеДанные.Назначение,
| ИсходныеДанные.Серия,
| ИсходныеДанные.Содержание,
| ИсходныеДанные.Упаковка,
| ИсходныеДанные.ЗаказПоставщику,
| ИсходныеДанные.Склад,
| ИсходныеДанные.Сделка,
| ИсходныеДанные.Подразделение,
| ИсходныеДанные.НомерГруппыЗатрат,
| ИсходныеДанные.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ИсходныеДанные.СписатьНаРасходы,
| ИсходныеДанные.СтатьяРасходов,
| ИсходныеДанные.АналитикаРасходов,
| ИсходныеДанные.АналитикаАктивовПассивов,
| ИсходныеДанные.АналитикаДоходов,
| ИсходныеДанные.НаправлениеДеятельности,
| ИсходныеДанные.ХешСуммаНастройкиСчетов,
| ИсходныеДанные.НомерГТД,
| ИсходныеДанные.КодТНВЭД,
| ИсходныеДанные.СтавкаНДС,
| -ИсходныеДанные.Сумма,
| -ИсходныеДанные.СуммаНДС,
| -ИсходныеДанные.СуммаСНДС,
| ИсходныеДанные.КодСтроки,
| ИсходныеДанные.НомерСтроки
|ИЗ
| ИсходныеДанныеДляРасхождений КАК ИсходныеДанные
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НовыеДанные КАК НовыеДанные
| ПО ИсходныеДанные.Номенклатура = НовыеДанные.Номенклатура
| И ИсходныеДанные.Характеристика = НовыеДанные.Характеристика
| И ИсходныеДанные.Назначение = НовыеДанные.Назначение
| И ИсходныеДанные.Серия = НовыеДанные.Серия
| И ИсходныеДанные.Содержание = НовыеДанные.Содержание
| И ИсходныеДанные.Упаковка = НовыеДанные.Упаковка
| И ИсходныеДанные.ЗаказПоставщику = НовыеДанные.ЗаказПоставщику
| И ИсходныеДанные.Склад = НовыеДанные.Склад
| И ИсходныеДанные.Сделка = НовыеДанные.Сделка
| И ИсходныеДанные.Подразделение = НовыеДанные.Подразделение
| И ИсходныеДанные.НомерГруппыЗатрат = НовыеДанные.НомерГруппыЗатрат
| И ИсходныеДанные.СтатьяКалькуляции = НовыеДанные.СтатьяКалькуляции
| И ИсходныеДанные.СписатьНаРасходы = НовыеДанные.СписатьНаРасходы
| И ИсходныеДанные.СтатьяРасходов = НовыеДанные.СтатьяРасходов
| И ИсходныеДанные.АналитикаРасходов = НовыеДанные.АналитикаРасходов
| И ИсходныеДанные.АналитикаАктивовПассивов = НовыеДанные.АналитикаАктивовПассивов
| И ИсходныеДанные.АналитикаДоходов = НовыеДанные.АналитикаДоходов
| И ИсходныеДанные.НаправлениеДеятельности = НовыеДанные.НаправлениеДеятельности
| И ИсходныеДанные.ХешСуммаНастройкиСчетов = НовыеДанные.ХешСуммаНастройкиСчетов
| И ИсходныеДанные.НомерГТД = НовыеДанные.НомерГТД
| И ИсходныеДанные.КодТНВЭД = НовыеДанные.КодТНВЭД
| И ИсходныеДанные.СтавкаНДС = НовыеДанные.СтавкаНДС
| И ИсходныеДанные.КодСтроки = НовыеДанные.КодСтроки
|;
|
|
|ВЫБРАТЬ
| ДанныеРасхождений.Номенклатура,
| ДанныеРасхождений.Характеристика,
| ДанныеРасхождений.Назначение,
| ДанныеРасхождений.Серия,
| ДанныеРасхождений.Содержание,
| ДанныеРасхождений.Упаковка,
| ДанныеРасхождений.ЗаказПоставщику,
| ДанныеРасхождений.Склад,
| ДанныеРасхождений.Склад.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
| И &Период >= ДанныеРасхождений.Склад.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач КАК ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач,
| ДанныеРасхождений.Сделка,
| ДанныеРасхождений.Подразделение,
| ДанныеРасхождений.НомерГруппыЗатрат,
| ДанныеРасхождений.СтатьяКалькуляции,
| ДанныеРасхождений.СписатьНаРасходы,
| ДанныеРасхождений.СтатьяРасходов,
| ДанныеРасхождений.АналитикаРасходов,
| ДанныеРасхождений.АналитикаАктивовПассивов,
| ДанныеРасхождений.АналитикаДоходов,
| ДанныеРасхождений.НаправлениеДеятельности,
| ДанныеРасхождений.ХешСуммаНастройкиСчетов,
| ДанныеРасхождений.НомерГТД,
| ДанныеРасхождений.КодТНВЭД,
| ДанныеРасхождений.СтавкаНДС,
| СУММА(ДанныеРасхождений.Сумма),
| СУММА(ДанныеРасхождений.СуммаНДС),
| СУММА(ДанныеРасхождений.СуммаСНДС),
| ВЫРАЗИТЬ(ДанныеРасхождений.Номенклатура КАК Справочник.Номенклатура).ТипНоменклатуры КАК ТипНоменклатуры,
| ВЫРАЗИТЬ(ДанныеРасхождений.Номенклатура КАК Справочник.Номенклатура).ПрослеживаемыйТовар КАК ВедетсяУчетПоРНПТ,
| ДанныеРасхождений.КодСтроки КАК КодСтроки,
| МИНИМУМ(ДанныеРасхождений.НомерСтроки) КАК НомерСтроки
|ИЗ
| ДанныеРасхождений КАК ДанныеРасхождений
|
|СГРУППИРОВАТЬ ПО
| ДанныеРасхождений.Характеристика,
| ДанныеРасхождений.Назначение,
| ДанныеРасхождений.Серия,
| ДанныеРасхождений.Содержание,
| ДанныеРасхождений.Упаковка,
| ДанныеРасхождений.ЗаказПоставщику,
| ДанныеРасхождений.Склад,
| ДанныеРасхождений.Номенклатура,
| ДанныеРасхождений.Сделка,
| ДанныеРасхождений.Подразделение,
| ДанныеРасхождений.НомерГруппыЗатрат,
| ДанныеРасхождений.СтатьяКалькуляции,
| ДанныеРасхождений.СписатьНаРасходы,
| ДанныеРасхождений.СтатьяРасходов,
| ДанныеРасхождений.АналитикаРасходов,
| ДанныеРасхождений.АналитикаАктивовПассивов,
| ДанныеРасхождений.АналитикаДоходов,
| ДанныеРасхождений.НаправлениеДеятельности,
| ДанныеРасхождений.ХешСуммаНастройкиСчетов,
| ДанныеРасхождений.НомерГТД,
| ДанныеРасхождений.КодТНВЭД,
| ДанныеРасхождений.СтавкаНДС,
| ДанныеРасхождений.КодСтроки
|
|ИМЕЮЩИЕ
| ВЫРАЗИТЬ(СУММА(ДанныеРасхождений.СуммаСНДС) КАК ЧИСЛО(31,2)) <> 0
| ИЛИ ВЫРАЗИТЬ(СУММА(ДанныеРасхождений.СуммаНДС) КАК ЧИСЛО(31,2)) <> 0
| УПОРЯДОЧИТЬ ПО
| МИНИМУМ(ДанныеРасхождений.НомерСтроки)
|";
Запрос.УстановитьПараметр("НовыеДанные", Товары.Выгрузить());
Запрос.УстановитьПараметр("Период", Дата);
ТаблицаРасхожденийВСуммах = Запрос.Выполнить().Выгрузить();
ТаблицаРасхождений = Расхождения.ВыгрузитьКолонки();
ТаблицаРасхождений.Колонки.Добавить("ХешСуммаНастройкиСчетов", ОбщегоНазначения.ОписаниеТипаСтрока(50));
ТаблицаРасхождений.Колонки.Добавить("ВедетсяУчетПоРНПТ", Новый ОписаниеТипов("Булево"));
ТаблицаРасхождений.Колонки.Добавить("ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач", Новый ОписаниеТипов("Булево"));
ПериодКорректировки = ?(ЗначениеЗаполнено(Дата), Дата, ТекущаяДатаСеанса());
ПериодПоступления = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументОснование, "Дата");
КорректировкаПрошлогоПериода = ПериодПоступления < НачалоМесяца(ПериодКорректировки);
Для Каждого ДанныеРасхождения Из ТаблицаРасхожденийВСуммах Цикл
НовоеРасхождение = ТаблицаРасхождений.Добавить();
ЗаполнитьЗначенияСвойств(НовоеРасхождение, ДанныеРасхождения);
НовоеРасхождение.ВариантОтражения = ВариантОтраженияПоСтроке(НовоеРасхождение,
ДанныеРасхождения.ТипНоменклатуры,
КорректировкаПрошлогоПериода,
ИспользуетсяДокументПоступлениеТоваров);
КонецЦикла;
Запрос.УстановитьПараметр("УчтенныеРасхождения", ТаблицаРасхождений);
Запрос.Текст = "
|УНИЧТОЖИТЬ ДанныеРасхождений
|;
|
|
|ВЫБРАТЬ
| УчтенныеРасхождения.Номенклатура КАК Номенклатура,
| УчтенныеРасхождения.Характеристика КАК Характеристика,
| УчтенныеРасхождения.Назначение КАК Назначение,
| УчтенныеРасхождения.Серия КАК Серия,
| УчтенныеРасхождения.Содержание КАК Содержание,
| УчтенныеРасхождения.Упаковка КАК Упаковка,
| УчтенныеРасхождения.ЗаказПоставщику КАК ЗаказПоставщику,
| УчтенныеРасхождения.Склад КАК Склад,
| УчтенныеРасхождения.Сделка КАК Сделка,
| УчтенныеРасхождения.Подразделение КАК Подразделение,
| УчтенныеРасхождения.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| УчтенныеРасхождения.СтатьяКалькуляции КАК СтатьяКалькуляции,
| УчтенныеРасхождения.СписатьНаРасходы КАК СписатьНаРасходы,
| УчтенныеРасхождения.СтатьяРасходов КАК СтатьяРасходов,
| УчтенныеРасхождения.АналитикаРасходов КАК АналитикаРасходов,
| УчтенныеРасхождения.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| УчтенныеРасхождения.АналитикаДоходов КАК АналитикаДоходов,
| УчтенныеРасхождения.НаправлениеДеятельности КАК НаправлениеДеятельности,
| УчтенныеРасхождения.ХешСуммаНастройкиСчетов КАК ХешСуммаНастройкиСчетов,
| УчтенныеРасхождения.НомерГТД КАК НомерГТД,
| УчтенныеРасхождения.КодТНВЭД КАК КодТНВЭД,
| УчтенныеРасхождения.СтавкаНДС КАК СтавкаНДС,
| УчтенныеРасхождения.СуммаНДС КАК СуммаНДС,
| УчтенныеРасхождения.СуммаСНДС КАК СуммаСНДС,
| УчтенныеРасхождения.КодСтроки КАК КодСтроки,
| УчтенныеРасхождения.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ УчтенныеРасхождения
|ИЗ
| &УчтенныеРасхождения КАК УчтенныеРасхождения
|;
|
|
|ВЫБРАТЬ
| НовыеДанные.Номенклатура КАК Номенклатура,
| НовыеДанные.Характеристика КАК Характеристика,
| НовыеДанные.Назначение КАК Назначение,
| НовыеДанные.Серия КАК Серия,
| НовыеДанные.Содержание КАК Содержание,
| НовыеДанные.Упаковка КАК Упаковка,
| НовыеДанные.ЗаказПоставщику КАК ЗаказПоставщику,
| НовыеДанные.Склад КАК Склад,
| НовыеДанные.Сделка КАК Сделка,
| НовыеДанные.Подразделение КАК Подразделение,
| НовыеДанные.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| НовыеДанные.СтатьяКалькуляции КАК СтатьяКалькуляции,
| НовыеДанные.СписатьНаРасходы КАК СписатьНаРасходы,
| НовыеДанные.СтатьяРасходов КАК СтатьяРасходов,
| НовыеДанные.АналитикаРасходов КАК АналитикаРасходов,
| НовыеДанные.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| НовыеДанные.АналитикаДоходов КАК АналитикаДоходов,
| НовыеДанные.НаправлениеДеятельности КАК НаправлениеДеятельности,
| НовыеДанные.ХешСуммаНастройкиСчетов КАК ХешСуммаНастройкиСчетов,
| НовыеДанные.НомерГТД КАК НомерГТД,
| НовыеДанные.КодТНВЭД КАК КодТНВЭД,
| НовыеДанные.СтавкаНДС КАК СтавкаНДС,
| НовыеДанные.КоличествоУпаковок КАК КоличествоУпаковок,
| НовыеДанные.Количество КАК Количество,
| НовыеДанные.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| НовыеДанные.СуммаНДС КАК СуммаНДС,
| НовыеДанные.СуммаСНДС КАК СуммаСНДС,
| НовыеДанные.КодСтроки КАК КодСтроки,
| НовыеДанные.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ ДанныеРасхождений
|ИЗ
| НовыеДанные КАК НовыеДанные
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИсходныеДанные.Номенклатура,
| ИсходныеДанные.Характеристика,
| ИсходныеДанные.Назначение,
| ИсходныеДанные.Серия,
| ИсходныеДанные.Содержание,
| ИсходныеДанные.Упаковка,
| ИсходныеДанные.ЗаказПоставщику,
| ИсходныеДанные.Склад,
| ИсходныеДанные.Сделка,
| ИсходныеДанные.Подразделение КАК Подразделение,
| ИсходныеДанные.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ИсходныеДанные.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ИсходныеДанные.СписатьНаРасходы КАК СписатьНаРасходы,
| ИсходныеДанные.СтатьяРасходов,
| ИсходныеДанные.АналитикаРасходов,
| ИсходныеДанные.АналитикаАктивовПассивов,
| ИсходныеДанные.АналитикаДоходов,
| ИсходныеДанные.НаправлениеДеятельности,
| ИсходныеДанные.ХешСуммаНастройкиСчетов,
| ИсходныеДанные.НомерГТД,
| ИсходныеДанные.КодТНВЭД,
| ИсходныеДанные.СтавкаНДС,
| -ИсходныеДанные.КоличествоУпаковок,
| -ИсходныеДанные.Количество,
| -ИсходныеДанные.КоличествоПоРНПТ,
| -ИсходныеДанные.СуммаНДС,
| -ИсходныеДанные.СуммаСНДС,
| ИсходныеДанные.КодСтроки,
| ИсходныеДанные.НомерСтроки
|ИЗ
| ИсходныеДанныеДляРасхождений КАК ИсходныеДанные
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УчтенныеРасхождения.Номенклатура,
| УчтенныеРасхождения.Характеристика,
| УчтенныеРасхождения.Назначение,
| УчтенныеРасхождения.Серия,
| УчтенныеРасхождения.Содержание,
| УчтенныеРасхождения.Упаковка,
| УчтенныеРасхождения.ЗаказПоставщику,
| УчтенныеРасхождения.Склад,
| УчтенныеРасхождения.Сделка,
| УчтенныеРасхождения.Подразделение,
| УчтенныеРасхождения.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| УчтенныеРасхождения.СтатьяКалькуляции КАК СтатьяКалькуляции,
| УчтенныеРасхождения.СписатьНаРасходы,
| УчтенныеРасхождения.СтатьяРасходов,
| УчтенныеРасхождения.АналитикаРасходов,
| УчтенныеРасхождения.АналитикаАктивовПассивов,
| УчтенныеРасхождения.АналитикаДоходов,
| УчтенныеРасхождения.НаправлениеДеятельности,
| УчтенныеРасхождения.ХешСуммаНастройкиСчетов,
| УчтенныеРасхождения.НомерГТД,
| УчтенныеРасхождения.КодТНВЭД,
| УчтенныеРасхождения.СтавкаНДС,
| 0,
| 0,
| 0,
| -УчтенныеРасхождения.СуммаНДС,
| -УчтенныеРасхождения.СуммаСНДС,
| УчтенныеРасхождения.КодСтроки,
| УчтенныеРасхождения.НомерСтроки
|ИЗ
| УчтенныеРасхождения КАК УчтенныеРасхождения
|;
|
|
|ВЫБРАТЬ
| ДанныеРасхождений.Номенклатура КАК Номенклатура,
| ДанныеРасхождений.Характеристика КАК Характеристика,
| ДанныеРасхождений.Назначение КАК Назначение,
| ДанныеРасхождений.Серия КАК Серия,
| ДанныеРасхождений.Содержание КАК Содержание,
| ДанныеРасхождений.Упаковка КАК Упаковка,
| ДанныеРасхождений.ЗаказПоставщику КАК ЗаказПоставщику,
| ДанныеРасхождений.Склад КАК Склад,
| ДанныеРасхождений.Склад.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
| И &Период >= ДанныеРасхождений.Склад.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач КАК ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач,
| ДанныеРасхождений.Сделка КАК Сделка,
| ДанныеРасхождений.Подразделение КАК Подразделение,
| ДанныеРасхождений.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ДанныеРасхождений.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ДанныеРасхождений.СписатьНаРасходы КАК СписатьНаРасходы,
| ДанныеРасхождений.СтатьяРасходов КАК СтатьяРасходов,
| ДанныеРасхождений.АналитикаРасходов КАК АналитикаРасходов,
| ДанныеРасхождений.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ДанныеРасхождений.АналитикаДоходов КАК АналитикаДоходов,
| ДанныеРасхождений.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеРасхождений.ХешСуммаНастройкиСчетов,
| ДанныеРасхождений.НомерГТД КАК НомерГТД,
| ДанныеРасхождений.КодТНВЭД КАК КодТНВЭД,
| ДанныеРасхождений.СтавкаНДС КАК СтавкаНДС,
| СУММА(ДанныеРасхождений.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(ДанныеРасхождений.Количество) КАК Количество,
| СУММА(ДанныеРасхождений.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(ДанныеРасхождений.СуммаНДС) КАК СуммаНДС,
| СУММА(ДанныеРасхождений.СуммаСНДС) КАК СуммаСНДС,
| ВЫРАЗИТЬ(ДанныеРасхождений.Номенклатура КАК Справочник.Номенклатура).ТипНоменклатуры КАК ТипНоменклатуры,
| ВЫРАЗИТЬ(ДанныеРасхождений.Номенклатура КАК Справочник.Номенклатура).ПрослеживаемыйТовар КАК ВедетсяУчетПоРНПТ,
| ДанныеРасхождений.КодСтроки КАК КодСтроки,
| МИНИМУМ(ДанныеРасхождений.НомерСтроки) КАК НомерСтроки
|ПОМЕСТИТЬ ДанныеРасхожденийПромежуточные
|ИЗ
| ДанныеРасхождений КАК ДанныеРасхождений
|
|СГРУППИРОВАТЬ ПО
| ДанныеРасхождений.Характеристика,
| ДанныеРасхождений.Назначение,
| ДанныеРасхождений.Серия,
| ДанныеРасхождений.Содержание,
| ДанныеРасхождений.Упаковка,
| ДанныеРасхождений.ЗаказПоставщику,
| ДанныеРасхождений.Склад,
| ДанныеРасхождений.Номенклатура,
| ДанныеРасхождений.Сделка,
| ДанныеРасхождений.Подразделение,
| ДанныеРасхождений.НомерГруппыЗатрат,
| ДанныеРасхождений.СтатьяКалькуляции,
| ДанныеРасхождений.СписатьНаРасходы,
| ДанныеРасхождений.СтатьяРасходов,
| ДанныеРасхождений.АналитикаАктивовПассивов,
| ДанныеРасхождений.АналитикаДоходов,
| ДанныеРасхождений.АналитикаРасходов,
| ДанныеРасхождений.НаправлениеДеятельности,
| ДанныеРасхождений.ХешСуммаНастройкиСчетов,
| ДанныеРасхождений.НомерГТД,
| ДанныеРасхождений.КодТНВЭД,
| ДанныеРасхождений.СтавкаНДС,
| ДанныеРасхождений.КодСтроки
|
|ИМЕЮЩИЕ
| ВЫРАЗИТЬ(СУММА(ДанныеРасхождений.КоличествоУпаковок) КАК ЧИСЛО(15,3)) <> 0
| ИЛИ ВЫРАЗИТЬ(СУММА(ДанныеРасхождений.Количество) КАК ЧИСЛО(15,3)) <> 0
| ИЛИ ВЫРАЗИТЬ(СУММА(ДанныеРасхождений.КоличествоПоРНПТ) КАК ЧИСЛО(15,11)) <> 0
| ИЛИ ВЫРАЗИТЬ(СУММА(ДанныеРасхождений.СуммаСНДС) КАК ЧИСЛО(31,2)) <> 0
| ИЛИ ВЫРАЗИТЬ(СУММА(ДанныеРасхождений.СуммаНДС) КАК ЧИСЛО(31,2)) <> 0
|;
|
|ВЫБРАТЬ
| ДанныеРасхождений.Номенклатура,
| ДанныеРасхождений.Характеристика,
| ДанныеРасхождений.Назначение,
| ДанныеРасхождений.Серия,
| ДанныеРасхождений.Содержание,
| ДанныеРасхождений.Упаковка,
| ДанныеРасхождений.ЗаказПоставщику,
| ДанныеРасхождений.Склад,
| ДанныеРасхождений.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач,
| ДанныеРасхождений.Сделка,
| ДанныеРасхождений.Подразделение,
| ДанныеРасхождений.НомерГруппыЗатрат,
| ДанныеРасхождений.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ДанныеРасхождений.СписатьНаРасходы,
| ДанныеРасхождений.СтатьяРасходов,
| ДанныеРасхождений.АналитикаРасходов,
| ДанныеРасхождений.АналитикаАктивовПассивов,
| ДанныеРасхождений.АналитикаДоходов,
| ДанныеРасхождений.НаправлениеДеятельности,
| ДанныеРасхождений.ХешСуммаНастройкиСчетов,
| ДанныеРасхождений.НомерГТД,
| ДанныеРасхождений.КодТНВЭД,
| ДанныеРасхождений.СтавкаНДС,
| ДанныеРасхождений.КоличествоУпаковок,
| ДанныеРасхождений.Количество,
| ДанныеРасхождений.КоличествоПоРНПТ,
| ДанныеРасхождений.СуммаНДС,
| ДанныеРасхождений.СуммаСНДС,
| ДанныеРасхождений.ТипНоменклатуры,
| ДанныеРасхождений.ВедетсяУчетПоРНПТ,
| ДанныеРасхождений.КодСтроки КАК КодСтроки,
| МИНИМУМ(ДанныеРасхождений.НомерСтроки)КАК НомерСтроки
|ИЗ
| ДанныеРасхожденийПромежуточные КАК ДанныеРасхождений
| ЛЕВОЕ СОЕДИНЕНИЕ НовыеДанныеИзТаблицы КАК ДанныеТаблицы
| ПО ДанныеРасхождений.Номенклатура = ДанныеТаблицы.Номенклатура
| И ДанныеРасхождений.Характеристика = ДанныеТаблицы.Характеристика
| И ДанныеРасхождений.КодСтроки = ДанныеТаблицы.КодСтроки
| И ДанныеРасхождений.Содержание = ДанныеТаблицы.Содержание
|
|СГРУППИРОВАТЬ ПО
| ДанныеРасхождений.Номенклатура,
| ДанныеРасхождений.Характеристика,
| ДанныеРасхождений.Назначение,
| ДанныеРасхождений.Серия,
| ДанныеРасхождений.Содержание,
| ДанныеРасхождений.Упаковка,
| ДанныеРасхождений.ЗаказПоставщику,
| ДанныеРасхождений.Склад,
| ДанныеРасхождений.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач,
| ДанныеРасхождений.Сделка,
| ДанныеРасхождений.Подразделение,
| ДанныеРасхождений.НомерГруппыЗатрат,
| ДанныеРасхождений.СтатьяКалькуляции,
| ДанныеРасхождений.СписатьНаРасходы,
| ДанныеРасхождений.СтатьяРасходов,
| ДанныеРасхождений.АналитикаРасходов,
| ДанныеРасхождений.АналитикаАктивовПассивов,
| ДанныеРасхождений.АналитикаДоходов,
| ДанныеРасхождений.НаправлениеДеятельности,
| ДанныеРасхождений.ХешСуммаНастройкиСчетов,
| ДанныеРасхождений.НомерГТД,
| ДанныеРасхождений.КодТНВЭД,
| ДанныеРасхождений.СтавкаНДС,
| ДанныеРасхождений.КоличествоУпаковок,
| ДанныеРасхождений.Количество,
| ДанныеРасхождений.КоличествоПоРНПТ,
| ДанныеРасхождений.СуммаНДС,
| ДанныеРасхождений.СуммаСНДС,
| ДанныеРасхождений.ТипНоменклатуры,
| ДанныеРасхождений.ВедетсяУчетПоРНПТ,
| ДанныеРасхождений.КодСтроки,
| ДанныеРасхождений.НомерСтроки
|
|УПОРЯДОЧИТЬ ПО
| МИНИМУМ(ДанныеРасхождений.НомерСтроки),
| ДанныеРасхождений.СтавкаНДС,
| ДанныеРасхождений.Подразделение,
| ДанныеРасхождений.Склад,
| ДанныеРасхождений.НомерГТД,
| ДанныеРасхождений.Количество";
ДанныеРасхождения = Запрос.Выполнить().Выбрать();
Пока ДанныеРасхождения.Следующий() Цикл
ПараметрыПоиска = Новый Структура(КлючевыеПоля);
ЗаполнитьЗначенияСвойств(ПараметрыПоиска, ДанныеРасхождения);
НайденныеСтроки = ТаблицаРасхождений.НайтиСтроки(ПараметрыПоиска);
СтрокаНайдена = Ложь;
Для Каждого НовоеРасхождение Из НайденныеСтроки Цикл
НовоеКоличество = НовоеРасхождение.Количество + ДанныеРасхождения.Количество;
Если (НовоеКоличество > 0 И НовоеРасхождение.СуммаСНДС > 0)
Или (НовоеКоличество < 0 И НовоеРасхождение.СуммаСНДС < 0) Тогда
НовоеРасхождение.Количество = НовоеКоличество;
НовоеРасхождение.КоличествоПоРНПТ = НовоеРасхождение.КоличествоПоРНПТ + ДанныеРасхождения.КоличествоПоРНПТ;
НовоеРасхождение.КоличествоУпаковок = НовоеРасхождение.КоличествоУпаковок + ДанныеРасхождения.КоличествоУпаковок;
НовоеРасхождение.НомерСтроки = ДанныеРасхождения.НомерСтроки;
СтрокаНайдена = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не СтрокаНайдена Тогда
НовоеРасхождение = ТаблицаРасхождений.Добавить();
ЗаполнитьЗначенияСвойств(НовоеРасхождение, ДанныеРасхождения);
КонецЕсли;
НовоеРасхождение.Сумма = НовоеРасхождение.СуммаСНДС - ?(ЦенаВключаетНДС, 0, НовоеРасхождение.СуммаНДС);
НовоеРасхождение.ВариантОтражения = ВариантОтраженияПоСтроке(НовоеРасхождение,
ДанныеРасхождения.ТипНоменклатуры,
КорректировкаПрошлогоПериода,
ИспользуетсяДокументПоступлениеТоваров);
КонецЦикла;
ТаблицаНастроекСчетовУчета = ТаблицаРасхождений.Скопировать(, "НастройкаСчетовУчета,ХешСуммаНастройкиСчетов");
ТаблицаНастроекСчетовУчета.Свернуть("НастройкаСчетовУчета,ХешСуммаНастройкиСчетов");
Запрос.УстановитьПараметр("ХешСуммыНастроекСчетов", ТаблицаНастроекСчетовУчета.ВыгрузитьКолонку("ХешСуммаНастройкиСчетов"));
Запрос.Текст = "
|УНИЧТОЖИТЬ ДанныеРасхождений
|;
|
|
|ВЫБРАТЬ
| НовыеДанные.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| НовыеДанные.ХешСуммаНастройкиСчетов КАК ХешСуммаНастройкиСчетов
|ИЗ
| НовыеДанные КАК НовыеДанные
|ГДЕ
| НовыеДанные.ХешСуммаНастройкиСчетов В (&ХешСуммыНастроекСчетов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИсходныеДанные.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| ИсходныеДанные.ХешСуммаНастройкиСчетов КАК ХешСуммаНастройкиСчетов
|ИЗ
| ИсходныеДанныеДляРасхождений КАК ИсходныеДанные
|ГДЕ
| ИсходныеДанные.ХешСуммаНастройкиСчетов В (&ХешСуммыНастроекСчетов)
|";
Выборка = Запрос.Выполнить().Выбрать();
КоличествоНастроек = ТаблицаНастроекСчетовУчета.Количество();
Для ОбратныйИндекс = 1 По КоличествоНастроек Цикл
СтрокаНастройкиСчетов = ТаблицаНастроекСчетовУчета[КоличествоНастроек - ОбратныйИндекс];
СтруктураПоиска = Новый Структура("ХешСуммаНастройкиСчетов", СтрокаНастройкиСчетов.ХешСуммаНастройкиСчетов);
Выборка.Сбросить();
Если Выборка.НайтиСледующий(СтруктураПоиска) И ЗначениеЗаполнено(Выборка.НастройкаСчетовУчета) Тогда
СтрокаНастройкиСчетов.НастройкаСчетовУчета = Выборка.НастройкаСчетовУчета;
Иначе
ТаблицаНастроекСчетовУчета.Удалить(СтрокаНастройкиСчетов);
КонецЕсли;
КонецЦикла;
Если ТаблицаНастроекСчетовУчета.Количество() > 0 Тогда
ДанныеНастроекСчетов = НастройкаСчетовУчетаСервер.ДанныеНастроекСчетовУчета(ТаблицаНастроекСчетовУчета.ВыгрузитьКолонку("НастройкаСчетовУчета"));
Для Каждого СтрокаНастройкиСчетов Из ТаблицаНастроекСчетовУчета Цикл
СтруктураПоиска = Новый Структура("ХешСуммаНастройкиСчетов", СтрокаНастройкиСчетов.ХешСуммаНастройкиСчетов);
СтрокиРасхождений = ТаблицаРасхождений.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаРасхождения Из СтрокиРасхождений Цикл
СтрокаРасхождения.НастройкаСчетовУчета = НастройкаСчетовУчетаСервер.НоваяНастройкаСчетовУчета(ДанныеНастроекСчетов[СтрокаНастройкиСчетов.НастройкаСчетовУчета]);
КонецЦикла;
КонецЦикла;
КонецЕсли;
ТаблицаРасхождений.Сортировать("НомерСтроки, Номенклатура, Характеристика, Серия, Содержание, Упаковка, ВариантОтражения");
Расхождения.Загрузить(ТаблицаРасхождений);
КонецПроцедуры
#Конецобласти
#КонецОбласти
#КонецЕсли