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