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