Открыл сейчас на редактирование печатную форму http://joxi.ru/52akaE5iGv6xgr , там присутствует "Образец заполнения платежного поручения", но при выводе на печать, подставляется какая то ерунда "Банковские реквизиты / BANK INFORMATION"
(6) Xershi, Да я в коде не разбираюсь, думал может кто делал уже, подскажут. Я же не первый на 2.3 перешел) Да и такой счет думаю никого не устроил, без реквизитов.
Окончательно ничего не понимаю, если убираю расчетный счет в реквизитах для печати http://joxi.ru/nAyq0onsXVge0A, то печатная форма выводится нормальная, но не заполнены банковские реквизиты http://joxi.ru/eAO7XGLH4Q9oVA, а если выбираю банковский счет, то получаю вот эту хрень http://joxi.ru/ZrJXaGQf1Rwo42 . Помогите пожалуйста, а то у меня крыша щас поедет. Это явно какой то глюк конфигурации или платформы. Управление торговлей, редакция 11.2 (11.2.3.101) 1С:Предприятие 8.3 (8.3.7.1917)
&НаКлиенте
Перем ОтветПередЗаписью;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если ТребуетсяОткрытиеПечатнойФормы Тогда
Возврат;
КонецЕсли;
// Обработчик механизма "ВерсионированиеОбъектов"
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтаФорма);
// Обработчик подсистемы "Внешние обработки"
ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма);
ДенежныеСредстваСервер.УстановитьВидимостьОплатыПлатежнойКартой(Элементы.ФормаОплаты);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
Если Параметры.Свойство("Основание") Тогда
Основание = Параметры.Основание;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДокументОснование", "Видимость", ЗначениеЗаполнено(Объект.ДокументОснование));
// Подсистема "ЭлектронныеДокументы"
УстановитьТекстСостоянияЭДНаСервере();
// СтандартныеПодсистемы.Печать
УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма, Элементы.ПодменюПечать);
// Конец СтандартныеПодсистемы.Печать
// ИнтеграцияС1СДокументооборотом
ИнтеграцияС1СДокументооборот.ПриСозданииНаСервере(ЭтаФорма);
// Конец ИнтеграцияС1СДокументооборотом
// КомандыЭДО
ОбменСКонтрагентами.ПриСозданииНаСервере(ЭтотОбъект, Элементы.ПодменюЭДО);
// Конец КомандыЭДО
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
// ВводНаОсновании
ВводНаОсновании.ПриСозданииНаСервере(ЭтотОбъект, Элементы.ПодменюСоздатьНаОсновании);
// Конец ВводНаОсновании
// МенюОтчеты
МенюОтчеты.ПриСозданииНаСервере(ЭтотОбъект, Элементы.ПодменюОтчеты);
// Конец МенюОтчеты
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ТребуетсяОткрытиеПечатнойФормы Тогда
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(Объект.Ссылка);
Отказ = Истина;
СамообслуживаниеКлиент.ПечатьСчетНаОплату(МассивСсылок);
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ФинансыКлиент.ПроверитьЗаполнениеДокументаНаОсновании(
Объект,
Основание);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
ТребуетсяОткрытиеПечатнойФормы = Истина;
Возврат;
КонецЕсли;
ПриЧтенииСозданииНаСервере();
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
СуммаЭтаповОплаты = Объект.ЭтапыГрафикаОплаты.Итог("СуммаПлатежа");
Если Объект.СуммаДокумента = 0 Тогда
Объект.СуммаДокумента = СуммаЭтаповОплаты;
ИначеЕсли НЕ ОтветПередЗаписью и Объект.СуммаДокумента <> СуммаЭтаповОплаты Тогда
Отказ = Истина;
ТекстВопроса = НСтр("ru='Сумма этапов графика оплаты не совпадает с суммой документа. Скорректировать сумму этапов оплаты?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ПередЗаписьюЗавершение", ЭтотОбъект), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.Да Тогда
ОтветПередЗаписью = Истина;
ЭтапыОплатыКлиентСервер.РаспределитьСуммуПоЭтапамГрафикаОплаты(Объект.ЭтапыГрафикаОплаты, Объект.СуммаДокумента);
Записать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Элементы.ГруппаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
// Подсистема "ЭлектронныеДокументы"
УстановитьТекстСостоянияЭДНаСервере();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// Подсистема "ЭлектронныеДокументы"
Если ИмяСобытия = "ОбновитьСостояниеЭД" Тогда
УстановитьТекстСостоянияЭДНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПерезаполнитьНазначениеПлатежа(Команда)
ЗаполнитьНазначениеПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ФормаОплатыПриИзменении(Элемент)
ПриИзмененииФормыОплатыСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЧастичнаяОплатаПриИзменении(Элемент)
Если Не Объект.ЧастичнаяОплата И ЗначениеЗаполнено(ОБъект.ДокументОснование) Тогда
Если Объект.ЭтапыГрафикаОплаты.Количество() > 0 Тогда
ОтветНаВопрос = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ЧастичнаяОплатаПриИзмененииЗавершение", ЭтотОбъект), НСтр("ru='Таблица этапов оплаты будет заполнена по основанию. Продолжить?'"), РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗаполнитьЭтапыОплатыПоОснованиюСервер();
Иначе
УстановитьДоступностьЭлементовПоЧастичнойОплате();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЧастичнаяОплатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.Нет Тогда
Объект.ЧастичнаяОплата = Истина;
Возврат;
КонецЕсли;
ЗаполнитьЭтапыОплатыПоОснованиюСервер();
КонецПроцедуры
&НаКлиенте
Процедура СуммаДокументаПриИзменении(Элемент)
ЭтапыОплатыКлиентСервер.РаспределитьСуммуПоЭтапамГрафикаОплаты(Объект.ЭтапыГрафикаОплаты, Объект.СуммаДокумента);
КонецПроцедуры
&НаКлиенте
Процедура СостояниеЭДНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбменСКонтрагентамиКлиент.ОткрытьДеревоЭД(Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЭтапыГрафикаОплаты
&НаКлиенте
Процедура ЭтапыГрафикаОплатыПослеУдаления(Элемент)
РассчитатьИтоговыеПоказателиСчетаНаОплатуКлиенту(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЭтапыГрафикаОплатыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
РассчитатьИтоговыеПоказателиСчетаНаОплатуКлиенту(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЭтапыГрафикаОплатыПроцентПлатежаПриИзменении(Элемент)
ЭтапыОплатыКлиент.ЭтапыГрафикаОплатыПроцентПлатежаПриИзменении(Элементы.ЭтапыГрафикаОплаты.ТекущиеДанные, Объект.ЭтапыГрафикаОплаты, Объект.СуммаДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ЭтапыГрафикаОплатыСуммаПлатежаПриИзменении(Элемент)
ЭтапыОплатыКлиент.ЭтапыГрафикаОплатыСуммаПлатежаПриИзменении(Элементы.ЭтапыГрафикаОплаты.ТекущиеДанные, Объект.ЭтапыГрафикаОплаты, Объект.СуммаДокумента);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
// ВводНаОсновании
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуСоздатьНаОсновании(Команда)
ВводНаОснованииКлиент.ВыполнитьПодключаемуюКомандуСоздатьНаОсновании(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
// Конец ВводНаОсновании
// МенюОтчеты
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуОтчет(Команда)
МенюОтчетыКлиент.ВыполнитьПодключаемуюКомандуОтчет(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
// Конец МенюОтчеты
// СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки
&НаКлиенте
Процедура Подключаемый_ВыполнитьНазначаемуюКоманду(Команда)
Если НЕ ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуНаКлиенте(ЭтаФорма, Команда.Имя) Тогда
РезультатВыполнения = Неопределено;
ДополнительныеОтчетыИОбработкиВыполнитьНазначаемуюКомандуНаСервере(Команда.Имя, РезультатВыполнения);
ДополнительныеОтчетыИОбработкиКлиент.ПоказатьРезультатВыполненияКоманды(ЭтаФорма, РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
// Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки
// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
//Конец ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура НастроитьПодпискуНаОповещения(Команда)
ТипыСобытий = Новый Массив();
ТипыСобытий.Добавить(ПредопределенноеЗначение("Перечисление.ТипыСобытийОповещений.ВыпискаСчета"));
ТипыСобытий.Добавить(ПредопределенноеЗначение("Перечисление.ТипыСобытийОповещений.АннулированиеСчета"));
ТипыСобытий.Добавить(ПредопределенноеЗначение("Перечисление.ТипыСобытийОповещений.ИзменениеСчета"));
РассылкиИОповещенияКлиентамКлиент.НастроитьПодпискуНаОповещенияИзОбъекта(
Объект.Партнер,
ТипыСобытий);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
// СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеСлужебныйКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплаты.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплатыНомерСтроки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплатыДатаПлатежа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплатыПроцентПлатежа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплатыСуммаПлатежа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЧастичнаяОплата");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплатыДатаПлатежа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЭтапыГрафикаОплаты.ДатаЗаполненаНеВерно");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.FireBrick);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплатыПроцентПлатежа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЭтапыГрафикаОплаты.ПроцентЗаполненНеВерно");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.FireBrick);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплатыПроцентПлатежа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЭтапыГрафикаОплаты.ПроцентЗаполненНеВерно");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЭтапыГрафикаОплаты.НомерСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("НомерСтрокиПолнойОплаты");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НомерСтрокиПолнойОплаты");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Seagreen);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЭтапыГрафикаОплатыПроцентПлатежа.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЭтапыГрафикаОплаты.ЭтоЗалогЗаТару");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<залог за тару>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
КонецПроцедуры
// СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки
&НаСервере
Процедура ДополнительныеОтчетыИОбработкиВыполнитьНазначаемуюКомандуНаСервере(ИмяЭлемента, РезультатВыполнения)
ДополнительныеОтчетыИОбработки.ВыполнитьНазначаемуюКомандуНаСервере(ЭтаФорма, ИмяЭлемента, РезультатВыполнения);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки
#Область ПодсистемаЭлектронныедокументы
&НаСервере
Процедура УстановитьТекстСостоянияЭДНаСервере()
ТекстСостоянияЭД = ОбменСКонтрагентамиКлиентСервер.ПолучитьТекстСостоянияЭД(Объект.Ссылка, ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
УправлениеЭлементамиФормы();
УстановитьДоступностьЭлементовПоЧастичнойОплате();
РассчитатьИтоговыеПоказателиСчетаНаОплатуКлиенту(ЭтаФорма);
Элементы.ГруппаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
Элементы.ЧастичнаяОплата.Видимость = ТипЗнч(Объект.ДокументОснование) <> Тип("СправочникСсылка.ДоговорыКонтрагентов");
ТипыСобытий = Новый Массив();
ТипыСобытий.Добавить(Перечисления.ТипыСобытийОповещений.ВыпискаСчета);
ТипыСобытий.Добавить(Перечисления.ТипыСобытийОповещений.АннулированиеСчета);
ТипыСобытий.Добавить(Перечисления.ТипыСобытийОповещений.ИзменениеСчета);
РассылкиИОповещенияКлиентам.УстановитьВидимостьПодпискиНаОповещенияВОбъекте(
Элементы.ГруппаПодпискаНаОповещения,
Объект.Партнер,
ТипыСобытий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиСчетаНаОплатуКлиенту(Форма)
ПроцентПлатежейОбщий = 0;
ПредыдущееЗначениеДаты = Дата(1, 1, 1);
Форма.НомерСтрокиПолнойОплаты = 0;
Для Каждого ТекСтрока Из Форма.Объект.ЭтапыГрафикаОплаты Цикл
ПроцентПлатежейОбщий = ПроцентПлатежейОбщий + ТекСтрока.ПроцентПлатежа;
ТекСтрока.ПроцентЗаполненНеВерно = (ПроцентПлатежейОбщий > 100);
ТекСтрока.ДатаЗаполненаНеВерно = (ПредыдущееЗначениеДаты > ТекСтрока.ДатаПлатежа);
ПредыдущееЗначениеДаты = ТекСтрока.ДатаПлатежа;
Если ПроцентПлатежейОбщий = 100 Тогда
Форма.НомерСтрокиПолнойОплаты = ТекСтрока.НомерСтроки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УправлениеЭлементамиФормы()
ЛюбаяОплата = Не ЗначениеЗаполнено(Объект.ФормаОплаты);
ДоступностьКассы = ЛюбаяОплата Или (Объект.ФормаОплаты = Перечисления.ФормыОплаты.Наличная);
ДоступностьСчета = ЛюбаяОплата Или (Объект.ФормаОплаты = Перечисления.ФормыОплаты.Безналичная);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Касса", "Доступность", ДоступностьКассы);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "БанковскийСчет", "Доступность", ДоступностьСчета);
УстановитьПривилегированныйРежим(Истина);
Если ТипЗнч(Объект.ДокументОснование) = Тип("СправочникСсылка.ДоговорыКонтрагентов")
Тогда
Соглашение = Неопределено;
Иначе
Соглашение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДокументОснование, "Соглашение");
КонецЕсли;
Если ТипЗнч(Соглашение) = Тип("СправочникСсылка.СоглашенияСКлиентами")
И Не ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
ИспользуютсяДоговорыКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
Иначе
ИспользуютсяДоговорыКонтрагентов =
ЗначениеЗаполнено(Соглашение)
И ОбщегоНазначенияУТ.ЗначениеРеквизитаОбъектаТипаБулево(Соглашение, "ИспользуютсяДоговорыКонтрагентов");
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Договор", "Видимость", ИспользуютсяДоговорыКонтрагентов);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииФормыОплатыСервер()
УправлениеЭлементамиФормы();
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Объект.Организация;
СтруктураПараметров.БанковскийСчет = Объект.БанковскийСчет;
Объект.БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовПоЧастичнойОплате()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ЭтапыГрафикаОплаты");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "ТолькоПросмотр", Не Объект.ЧастичнаяОплата);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СуммаДокумента", "ТолькоПросмотр", Не Объект.ЧастичнаяОплата);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЭтапыОплатыПоОснованиюСервер()
УстановитьПривилегированныйРежим(Истина);
Если ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| 1 КАК Порядок,
| ЭтапыОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыОплаты.ПроцентПлатежа КАК ПроцентПлатежа,
| ЭтапыОплаты.СуммаПлатежа КАК СуммаПлатежа,
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК ЭтапыОплаты
|ГДЕ
| ЭтапыОплаты.Ссылка = &Ссылка
| И ЭтапыОплаты.СуммаПлатежа <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2 КАК Порядок,
| ЭтапыОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыОплаты.ПроцентЗалогаЗаТару КАК ПроцентПлатежа,
| ЭтапыОплаты.СуммаЗалогаЗаТару КАК СуммаПлатежа,
| ИСТИНА КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК ЭтапыОплаты
|ГДЕ
| ЭтапыОплаты.Ссылка = &Ссылка
| И ЭтапыОплаты.Ссылка.ТребуетсяЗалогЗаТару
| И ЭтапыОплаты.СуммаЗалогаЗаТару <> 0
|
|УПОРЯДОЧИТЬ ПО
| ДатаПлатежа,
| Порядок
|";
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| 1 КАК Порядок,
| ЭтапыОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыОплаты.ПроцентПлатежа КАК ПроцентПлатежа,
| ЭтапыОплаты.СуммаПлатежа КАК СуммаПлатежа,
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЭтапыГрафикаОплаты КАК ЭтапыОплаты
|ГДЕ
| ЭтапыОплаты.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2 КАК Порядок,
| ЭтапыОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыОплаты.ПроцентЗалогаЗаТару КАК ПроцентПлатежа,
| ЭтапыОплаты.СуммаЗалогаЗаТару КАК СуммаПлатежа,
| ИСТИНА КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЭтапыГрафикаОплаты КАК ЭтапыОплаты
|ГДЕ
| ЭтапыОплаты.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| ДатаПлатежа,
| Порядок
|";
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 1 КАК НомерСтроки,
| ДанныеДокумента.Дата КАК ДатаПлатежа,
| 0 КАК ПроцентПлатежа,
| ДанныеДокумента.СуммаПредоплатыЗаТару КАК СуммаПлатежа,
| ИСТИНА КАК ЭтоЗалогЗаТару
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ТребуетсяЗалогЗаТару
| И ДанныеДокумента.СуммаПредоплатыЗаТару > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 2 КАК НомерСтроки,
| ДанныеДокумента.Дата КАК ДатаПлатежа,
|
| (ДанныеДокумента.СуммаПредоплаты - ДанныеДокумента.СуммаПредоплатыЗаТару)
| / (ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)) * 100 КАК ПроцентПлатежа,
|
| ДанныеДокумента.СуммаПредоплаты - ДанныеДокумента.СуммаПредоплатыЗаТару КАК СуммаПлатежа,
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.РеализацияТоваровУслуг.Товары КАК Тара
| ПО
| Тара.Ссылка = ДанныеДокумента.Ссылка
| И ДанныеДокумента.ТребуетсяЗалогЗаТару
| И Тара.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.СуммаПредоплаты > ДанныеДокумента.СуммаПредоплатыЗаТару
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 3 КАК НомерСтроки,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
| 0 КАК ПроцентПлатежа,
|
| СУММА(Тара.СуммаВзаиморасчетов) - ДанныеДокумента.СуммаПредоплатыЗаТару КАК СуммаПлатежа,
|
| ИСТИНА КАК ЭтоЗалогЗаТару
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.РеализацияТоваровУслуг.Товары КАК Тара
| ПО
| Тара.Ссылка = ДанныеДокумента.Ссылка
| И ДанныеДокумента.ТребуетсяЗалогЗаТару
| И Тара.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
|ИМЕЮЩИЕ
| СУММА(Тара.СуммаВзаиморасчетов) > ДанныеДокумента.СуммаПредоплатыЗаТару
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 4 КАК НомерСтроки,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
|
| (ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)
| - ДанныеДокумента.СуммаПредоплаты + ДанныеДокумента.СуммаПредоплатыЗаТару)
| / (ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)) * 100 КАК ПроцентПлатежа,
|
| ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)
| - ДанныеДокумента.СуммаПредоплаты + ДанныеДокумента.СуммаПредоплатыЗаТару КАК СуммаПлатежа,
|
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.РеализацияТоваровУслуг.Товары КАК Тара
| ПО
| Тара.Ссылка = ДанныеДокумента.Ссылка
| И ДанныеДокумента.ТребуетсяЗалогЗаТару
| И Тара.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
|ИМЕЮЩИЕ
| ДанныеДокумента.СуммаВзаиморасчетов - ДанныеДокумента.СуммаПредоплаты
| > ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0) - ДанныеДокумента.СуммаПредоплатыЗаТару
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки
|";
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитенту") Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| ДокументПродажи.ДатаПлатежа КАК ДатаПлатежа,
| 100 КАК ПроцентПлатежа,
| ДокументПродажи.СуммаВознаграждения КАК СуммаПлатежа
|ИЗ
| Документ.ОтчетКомитенту КАК ДокументПродажи
|ГДЕ
| ДокументПродажи.Ссылка = &Ссылка
|";
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомиссионера") Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| ДокументПродажи.ДатаПлатежа КАК ДатаПлатежа,
| 100 КАК ПроцентПлатежа,
| ДокументПродажи.СуммаДокумента КАК СуммаПлатежа
|ИЗ
| Документ.ОтчетКомиссионера КАК ДокументПродажи
|ГДЕ
| ДокументПродажи.Ссылка = &Ссылка
|";
ИначеЕсли ТипЗнч(Объект.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомиссионераОСписании") Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| ДокументПродажи.ДатаПлатежа КАК ДатаПлатежа,
| 100 КАК ПроцентПлатежа,
| ДокументПродажи.СуммаДокумента КАК СуммаПлатежа
|ИЗ
| Документ.ОтчетКомиссионераОСписании КАК ДокументПродажи
|ГДЕ
| ДокументПродажи.Ссылка = &Ссылка
|";
Иначе
ТекстЗапроса = "";
КонецЕсли;
Если Не ПустаяСтрока(ТекстЗапроса) Тогда
Если Объект.ЭтапыГрафикаОплаты.Количество() > 0 Тогда
Объект.ЭтапыГрафикаОплаты.Очистить();
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", Объект.ДокументОснование);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НовыйЭтап = Объект.ЭтапыГрафикаОплаты.Добавить();
ЗаполнитьЗначенияСвойств(НовыйЭтап, Выборка);
КонецЦикла;
Объект.СуммаДокумента = Объект.ЭтапыГрафикаОплаты.Итог("СуммаПлатежа");
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
УстановитьДоступностьЭлементовПоЧастичнойОплате();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНазначениеПлатежа()
ДокументОснование = Объект.ДокументОснование;
Если НЕ ПустаяСтрока(ДокументОснование) Тогда
Объект.НазначениеПлатежа = Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ДокументОснование.Номер,
ДокументОснование);
Иначе
НазначениеПлатежа = НСтр("ru='По счету № %НомерСчета% от %ДатаСчета%'");
НазначениеПлатежа = СтрЗаменить(НазначениеПлатежа,
"%НомерСчета%",
ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Объект.Номер));
НазначениеПлатежа = СтрЗаменить(НазначениеПлатежа, "%ДатаСчета%", Формат(Объект.Дата, "ДФ=dd.MM.yyyy"));
Объект.НазначениеПлатежа = НазначениеПлатежа;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
ОтветПередЗаписью = Ложь;
Показать
ЗаказКлиента РеквизитыПечати
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтаФорма, Параметры,,"ЗакрыватьПриВыборе,ЗакрыватьПриЗакрытииВладельца,КлючНазначенияИспользования");
Элементы.АдресДоставки.Видимость = НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой");
ПродажиСервер.ЗаполнитьСписокВыбораАдреса(Элементы.АдресДоставки, Партнер);
Если Параметры.ПараметрыВыбораРеквизитов <> Неопределено Тогда
Для Каждого ЭлНастройки Из Параметры.ПараметрыВыбораРеквизитов Цикл
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, ЭлНастройки.Ключ, "ПараметрыВыбора", ЭлНастройки.Значение);
КонецЦикла;
КонецЕсли;
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
Если Не ЗакрытьФормуПринудительно
И (Модифицированность И Не СохранитьПараметры) Тогда
СписокКнопок = Новый СписокЗначений();
СписокКнопок.Добавить("Закрыть", НСтр("ru = 'Закрыть'"));
СписокКнопок.Добавить("НеЗакрывать", НСтр("ru = 'Не закрывать'"));
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ПоказатьВопрос(
Новый ОписаниеОповещения("ПоказатьВопросПередЗакрытиемЗавершение", ЭтотОбъект, ДополнительныеПараметры),
НСтр("ru = 'Реквизиты печати были изменены. Закрыть форму без сохранения реквизитов?'"),
СписокКнопок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьВопросПередЗакрытиемЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ОтветНаВопрос = "Закрыть" Тогда
ЗакрытьФормуПринудительно = Истина;
Закрыть(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
Если СохранитьПараметры Тогда
СтруктураПараметров = ИзменяемыеРеквизиты(ЭтаФорма);
ОповеститьОВыборе(СтруктураПараметров);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГрузоотправительПриИзменении(Элемент)
Если ЗначениеЗаполнено(Грузоотправитель) Тогда
БанковскийСчетГрузоотправителя = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Грузоотправитель);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ГрузополучательПриИзменении(Элемент)
Если ЗначениеЗаполнено(Грузополучатель) Тогда
БанковскийСчетГрузополучателя = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Грузополучатель);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОК(Команда)
Если Не ТолькоПросмотр Тогда
СохранитьПараметры = Истина;
КонецЕсли;
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПерезаполнитьНазначениеПлатежа(Команда)
ЗаполнитьНазначениеПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Прочее
&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Контрагент)
Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИзменяемыеРеквизиты(Источник)
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("АдресДоставки", Источник.АдресДоставки);
СтруктураПараметров.Вставить("БанковскийСчет", Источник.БанковскийСчет);
СтруктураПараметров.Вставить("БанковскийСчетГрузоотправителя", Источник.БанковскийСчетГрузоотправителя);
СтруктураПараметров.Вставить("БанковскийСчетГрузополучателя", Источник.БанковскийСчетГрузополучателя);
СтруктураПараметров.Вставить("БанковскийСчетКонтрагента", Источник.БанковскийСчетКонтрагента);
СтруктураПараметров.Вставить("Грузоотправитель", Источник.Грузоотправитель);
СтруктураПараметров.Вставить("Грузополучатель", Источник.Грузополучатель);
СтруктураПараметров.Вставить("Руководитель", Источник.Руководитель);
СтруктураПараметров.Вставить("ГлавныйБухгалтер", Источник.ГлавныйБухгалтер);
СтруктураПараметров.Вставить("НазначениеПлатежа", Источник.НазначениеПлатежа);
СтруктураПараметров.Вставить("НомерЗаказа", Источник.НомерЗаказа);
СтруктураПараметров.Вставить("ДатаЗаказа", Источник.ДатаЗаказа);
Возврат СтруктураПараметров;
КонецФункции
&НаСервере
Процедура ЗаполнитьНазначениеПлатежа()
НазначениеПлатежа = НСтр("ru='По счету №%НомерЗаказа% от %ДатаЗаказа%'");
НазначениеПлатежа = СтрЗаменить(НазначениеПлатежа,"%НомерЗаказа%",НомерЗаказа);
НазначениеПлатежа = СтрЗаменить(НазначениеПлатежа,"%ДатаЗаказа%",ДатаЗаказа);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
Показать
Вообще, предыстория следующая: Была УТ 11.1, ее собирали из УТ 10 и Розници 2.0, путем переноса данных с помощью конвертации, в итоге в процессе работы выяснилось, что ничего ни с чем не сходится, продаешь товар, он не списывается, ДС тоже жили произвольно. Было решено перейти на чистую УТ 11 с последующим обновлением, для этого было сделано: перенесены (номенклатура+присоединенные файлы+регистр сведений "присодиненные файлы", организации, физ.лица, контрагенты, партнеры, банковские счета, кассы, карты лояльности, скидки и регистр сведений "цены номенклатуры") , далее, по цепочке накатили обновления до 2.3.101. Что первое попалось, это счет, он явно так не должен выглядеть. Пробую во вновь созданной базе 2.3.101, создать организацию, контрагента, банковский счет и т.д., все так же как в боевой, счет получается нормальный. Подозрения, либо при переносе обработкой, какие то косяки перенеслись, либо при обновлении конфигурации, что-то криво накатилось!
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПриКопировании(ОбъектКопирования)
ИдентификаторПлатежа = Неопределено;
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
Если ТипДанныхЗаполнения = Тип("Структура") Тогда
ЗаполнитьДокументПоОтбору(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ЗаполнитьПоРеализацииТоваров(
ДанныеЗаполнения,
ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ВыкупВозвратнойТарыКлиентом") Тогда
ЗаполнитьПоВыкупуВозвратнойТарыКлиентом(
ДанныеЗаполнения,
ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
ЗаполнитьПоАктуВыполненныхРабот(
ДанныеЗаполнения,
ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ОтчетКомитенту") Тогда
ЗаполнитьПоОтчетуКомитенту(
ДанныеЗаполнения,
ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ОтчетКомиссионераОСписании") Тогда
ЗаполнитьПоОтчетуКомиссионераОСписании(
ДанныеЗаполнения,
ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ЗаполнитьПоДоговору(
ДанныеЗаполнения,
ДанныеЗаполнения);
КонецЕсли;
ИнициализироватьДокумент(ДанныеЗаполнения);
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияКассыПриФОИспользоватьНесколькоКассЛожь", Ложь);
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияСчетаПриФОИспользоватьНесколькоСчетовЛожь", Ложь);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
СуммаПроцентов = 0;
Для Каждого ЭтапГрафика Из ЭтапыГрафикаОплаты Цикл
Если Не ЭтапГрафика.ЭтоЗалогЗаТару Тогда
СуммаПроцентов = СуммаПроцентов + ЭтапГрафика.ПроцентПлатежа;
КонецЕсли;
КонецЦикла;
// Процент платежа по всем этапам должен быть 100%
Если СуммаПроцентов <> 100 Тогда
ТекстОшибки = НСтр("ru='Процент платежей по всем этапам должен быть равен 100%'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ЭтапыГрафикаОплаты",
,
Отказ);
КонецЕсли;
СуммаЭтаповОплаты = ЭтапыГрафикаОплаты.Итог("СуммаПлатежа");
Если СуммаЭтаповОплаты > 0 И СуммаДокумента <> СуммаЭтаповОплаты Тогда
ТекстОшибки = НСтр("ru='Сумма документа не должна отличаться от суммы этапов оплаты'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"СуммаДокумента",
,
Отказ);
КонецЕсли;
Если ТипЗнч(ДокументОснование) <> Тип("СправочникСсылка.ДоговорыКонтрагентов") И НЕ Аннулирован Тогда
СуммаОснования = Документы.СчетНаОплатуКлиенту.ПолучитьСуммуДокументаОснования(ДокументОснование);
Если СуммаДокумента > СуммаОснования Тогда
ТекстОшибки = НСтр("ru='Сумма документа не может быть больше суммы основания ""%СуммаОснования%""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки,"%СуммаОснования%",СуммаОснования);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"СуммаДокумента",
,
Отказ);
КонецЕсли;
КонецЕсли;
МассивНепроверяемыхРеквизитов.Добавить("ЭтапыГрафикаОплаты.ПроцентПлатежа");
Для Каждого ЭтапГрафика Из ЭтапыГрафикаОплаты Цикл
Если Не ЗначениеЗаполнено(ЭтапГрафика.ПроцентПлатежа) И Не ЭтапГрафика.ЭтоЗалогЗаТару Тогда
ТекстОшибки = НСтр("ru='Не заполнена колонка ""Процент платежа"" в строке %НомерСтроки% списка ""Этапы графика оплаты""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки,"%НомерСтроки%",ЭтапГрафика.НомерСтроки);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ЭтапыГрафикаОплаты", ЭтапГрафика.НомерСтроки, "ПроцентПлатежа"),
,
Отказ);
КонецЕсли;
КонецЦикла;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ПроведениеСервер.УстановитьРежимПроведения(ЭтотОбъект, РежимЗаписи, РежимПроведения);
МассивРеквизитов = Новый Массив;
Если ЗначениеЗаполнено(ФормаОплаты) И ФормаОплаты <> Перечисления.ФормыОплаты.Наличная Тогда
МассивРеквизитов.Добавить("Касса");
КонецЕсли;
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизиты(ЭтотОбъект, МассивРеквизитов, Новый Массив);
Для Каждого ЭтапГрафика Из ЭтапыГрафикаОплаты Цикл
Если ЭтапГрафика.ЭтоЗалогЗаТару И ЗначениеЗаполнено(ЭтапГрафика.ПроцентПлатежа) Тогда
ЭтапГрафика.ПроцентПлатежа = 0;
КонецЕсли;
КонецЦикла;
Если ЭтоНовый() И НЕ ЗначениеЗаполнено(Номер) Тогда
УстановитьНовыйНомер();
КонецЕсли;
ИдентификаторПлатежа = ОбщегоНазначенияУТ.ПолучитьУникальныйИдентификаторПлатежа(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ИнициализацияИЗаполнение
Процедура ЗаполнитьДокументПоОтбору(ДанныеЗаполнения)
Если ДанныеЗаполнения.Свойство("ДокументОснование") Тогда
ДокументОснование = ДанныеЗаполнения.ДокументОснование;
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ЗаполнитьПоРеализацииТоваров(
ДокументОснование,
ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитенту") Тогда
ЗаполнитьПоОтчетуКомитенту(
ДокументОснование,
ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ОтчетКомиссионераОСписании") Тогда
ЗаполнитьПоОтчетуКомиссионераОСписании(
ДокументОснование,
ДанныеЗаполнения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоРеализацииТоваров(Знач Основание, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК ДатаПредоплаты,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.КонтактноеЛицо КАК КонтактноеЛицо,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Организация.Префикс КАК Префикс,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплаты,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК Валюта,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.Соглашение.Номер КАК НомерСоглашения,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
|
| ВЫБОР КОГДА ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК РасчетыПоДоговору,
|
| NULL КАК Статус,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| ДанныеДокумента.Руководитель КАК Руководитель,
| ДанныеДокумента.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
| ДанныеДокумента.Касса КАК Касса,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
| ЛОЖЬ КАК ЕстьОшибкиСтатус,
| ВЫБОР
| КОГДА
| ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиХозяйственнаяОперация
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И (ДанныеДокумента.ЗаказКлиента = НЕОПРЕДЕЛЕНО
| ИЛИ ДанныеДокумента.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)
| ИЛИ ДанныеДокумента.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка)
| ИЛИ ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
| ИЛИ ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
| )
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 1 КАК НомерСтроки,
| ДанныеДокумента.Дата КАК ДатаПлатежа,
| 0 КАК ПроцентПлатежа,
|
| ВЫБОР КОГДА СУММА(Тара.СуммаВзаиморасчетов) > ДанныеДокумента.СуммаПредоплаты ТОГДА
| ДанныеДокумента.СуммаПредоплаты
| ИНАЧЕ
| СУММА(Тара.СуммаВзаиморасчетов)
| КОНЕЦ КАК СуммаПлатежа,
|
| ИСТИНА КАК ЭтоЗалогЗаТару
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.РеализацияТоваровУслуг.Товары КАК Тара
| ПО
| Тара.Ссылка = ДанныеДокумента.Ссылка
| И ДанныеДокумента.ТребуетсяЗалогЗаТару
| И Тара.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.СуммаПредоплаты > 0
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 2 КАК НомерСтроки,
| ДанныеДокумента.Дата КАК ДатаПлатежа,
|
| (ДанныеДокумента.СуммаПредоплаты - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0))
| / (ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)) * 100 КАК ПроцентПлатежа,
|
| ДанныеДокумента.СуммаПредоплаты - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0) КАК СуммаПлатежа,
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.РеализацияТоваровУслуг.Товары КАК Тара
| ПО
| Тара.Ссылка = ДанныеДокумента.Ссылка
| И ДанныеДокумента.ТребуетсяЗалогЗаТару
| И Тара.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.СуммаПредоплаты > 0
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
|ИМЕЮЩИЕ
| ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0) < ДанныеДокумента.СуммаПредоплаты
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 3 КАК НомерСтроки,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
| 0 КАК ПроцентПлатежа,
|
| СУММА(Тара.СуммаВзаиморасчетов) - ДанныеДокумента.СуммаПредоплаты КАК СуммаПлатежа,
|
| ИСТИНА КАК ЭтоЗалогЗаТару
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.РеализацияТоваровУслуг.Товары КАК Тара
| ПО
| Тара.Ссылка = ДанныеДокумента.Ссылка
| И ДанныеДокумента.ТребуетсяЗалогЗаТару
| И Тара.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.СуммаВзаиморасчетов - ДанныеДокумента.СуммаПредоплаты > 0
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
|ИМЕЮЩИЕ
| СУММА(Тара.СуммаВзаиморасчетов) > ДанныеДокумента.СуммаПредоплаты
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 4 КАК НомерСтроки,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
|
| ВЫБОР КОГДА ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0) < ДанныеДокумента.СуммаПредоплаты ТОГДА
| ДанныеДокумента.СуммаВзаиморасчетов - ДанныеДокумента.СуммаПредоплаты
| ИНАЧЕ
| ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)
| КОНЕЦ
| / (ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)) * 100 КАК ПроцентПлатежа,
|
| ВЫБОР КОГДА ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0) < ДанныеДокумента.СуммаПредоплаты ТОГДА
| ДанныеДокумента.СуммаВзаиморасчетов - ДанныеДокумента.СуммаПредоплаты
| ИНАЧЕ
| ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)
| КОНЕЦ КАК СуммаПлатежа,
|
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.РеализацияТоваровУслуг.Товары КАК Тара
| ПО
| Тара.Ссылка = ДанныеДокумента.Ссылка
| И ДанныеДокумента.ТребуетсяЗалогЗаТару
| И Тара.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
|
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
|ИМЕЮЩИЕ
| ВЫБОР КОГДА ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0) < ДанныеДокумента.СуммаПредоплаты ТОГДА
| ДанныеДокумента.СуммаВзаиморасчетов - ДанныеДокумента.СуммаПредоплаты
| ИНАЧЕ
| ДанныеДокумента.СуммаВзаиморасчетов - ЕСТЬNULL(СУММА(Тара.СуммаВзаиморасчетов), 0)
| КОНЕЦ > 0
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки УБЫВ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЕСТЬNULL(РасчетыСКлиентами.КОплатеОстаток,0) КАК СуммаОплаты
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки(, ЗаказКлиента=&Ссылка) КАК РасчетыСКлиентами
|");
Запрос.УстановитьПараметр("Ссылка", Основание);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса[0].Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
СуммаОснования = 0;
ВыборкаПоДокументу = РезультатЗапроса[0].Выбрать();
ВыборкаПоЭтапам = РезультатЗапроса[1].Выбрать();
ВыборкаПоРасчетам = РезультатЗапроса[2].Выбрать();
Если ВыборкаПоДокументу.Следующий() Тогда
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.КОбеспечению);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.КОтгрузке);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.Закрыт);
Документы.СчетНаОплатуКлиенту.ПроверитьКорректностьХозяйственнойОперацииДокументаОснования(
ВыборкаПоДокументу.ЕстьОшибкиХозяйственнаяОперация,
ВыборкаПоДокументу.ХозяйственнаяОперация);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаПоДокументу.ДокументОснование,
ВыборкаПоДокументу.Статус,
ВыборкаПоДокументу.ЕстьОшибкиПроведен,
ВыборкаПоДокументу.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, ВыборкаПоДокументу);
НазначениеПлатежа = Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ВыборкаПоДокументу.Номер,
Основание);
Если ВыборкаПоДокументу.РасчетыПоДоговору Тогда
ДобавитьЭтапОплаты(ВыборкаПоДокументу.СуммаВзаиморасчетов, ВыборкаПоДокументу.ДатаПлатежа);
ДанныеЗаполнения.Вставить("СуммаДокумента", ВыборкаПоДокументу.СуммаВзаиморасчетов);
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", Ложь);
Иначе
Если ВыборкаПоРасчетам.Следующий() Тогда
СуммаОплаты = ВыборкаПоРасчетам.СуммаОплаты;
Пока СуммаОплаты > 0 И ВыборкаПоЭтапам.Следующий() Цикл
ЭтапОплаты = ЭтапыГрафикаОплаты.Добавить();
ЗаполнитьЗначенияСвойств(ЭтапОплаты, ВыборкаПоЭтапам);
Если СуммаОплаты < ВыборкаПоЭтапам.СуммаПлатежа Тогда
ЭтапОплаты.СуммаПлатежа = СуммаОплаты;
КонецЕсли;
СуммаОплаты = СуммаОплаты - ВыборкаПоЭтапам.СуммаПлатежа;
КонецЦикла;
ЭтапыГрафикаОплаты.Сортировать("ДатаПлатежа");
КонецЕсли;
ДанныеЗаполнения.Вставить("СуммаДокумента", ЭтапыГрафикаОплаты.Итог("СуммаПлатежа"));
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", ВыборкаПоДокументу.СуммаВзаиморасчетов <> ЭтапыГрафикаОплаты.Итог("СуммаПлатежа"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоВыкупуВозвратнойТарыКлиентом(Знач Основание, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.КонтактноеЛицо КАК КонтактноеЛицо,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Организация.Префикс КАК Префикс,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплаты,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК Валюта,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.Соглашение.Номер КАК НомерСоглашения,
| ДанныеДокумента.Руководитель КАК Руководитель,
| ДанныеДокумента.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
| ВЫБОР КОГДА ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК РасчетыПоДоговору,
|
| NULL КАК Статус,
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| ДанныеДокумента.Касса КАК Касса,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен
|
|ИЗ
| Документ.ВыкупВозвратнойТарыКлиентом КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|;
|ВЫБРАТЬ
| ЕСТЬNULL(РасчетыСКлиентами.СуммаОстаток,0) КАК СуммаОплаты
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки(, ЗаказКлиента=&Ссылка) КАК РасчетыСКлиентами
|");
Запрос.УстановитьПараметр("Ссылка", Основание);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса[0].Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
СуммаОснования = 0;
ВыборкаПоДокументу = РезультатЗапроса[0].Выбрать();
ВыборкаПоРасчетам = РезультатЗапроса[1].Выбрать();
Если ВыборкаПоДокументу.Следующий() Тогда
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаПоДокументу.ДокументОснование,
,
ВыборкаПоДокументу.ЕстьОшибкиПроведен);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, ВыборкаПоДокументу);
НазначениеПлатежа = Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ВыборкаПоДокументу.Номер,
Основание);
Если ВыборкаПоДокументу.РасчетыПоДоговору Тогда
ДобавитьЭтапОплаты(ВыборкаПоДокументу.СуммаВзаиморасчетов, ВыборкаПоДокументу.ДатаПлатежа);
ДанныеЗаполнения.Вставить("СуммаДокумента", ВыборкаПоДокументу.СуммаВзаиморасчетов);
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", Ложь);
Иначе
ЗаполнитьСуммуДокументаПоРасчетамСКлиентами(ВыборкаПоДокументу, ВыборкаПоРасчетам, ДанныеЗаполнения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоАктуВыполненныхРабот(Знач Основание, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.КонтактноеЛицо КАК КонтактноеЛицо,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Организация.Префикс КАК Префикс,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплаты,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК Валюта,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.Соглашение.Номер КАК НомерСоглашения,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Руководитель КАК Руководитель,
| ДанныеДокумента.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
| NULL КАК Статус,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
| ЛОЖЬ КАК ЕстьОшибкиСтатус,
| ЛОЖЬ КАК ЕстьОшибкиХозяйственнаяОперация,
|
| ВЫБОР КОГДА ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК РасчетыПоДоговору,
|
| ДанныеДокумента.БанковскийСчетОрганизации КАК БанковскийСчет,
| ДанныеДокумента.Касса КАК Касса
|
|ИЗ
| Документ.АктВыполненныхРабот КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И (ДанныеДокумента.ЗаказКлиента = НЕОПРЕДЕЛЕНО
| ИЛИ ДанныеДокумента.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)
| ИЛИ ДанныеДокумента.ЗаказКлиента = ЗНАЧЕНИЕ(Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка)
| ИЛИ ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
| ИЛИ ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
| )
|;
|ВЫБРАТЬ
| ЕСТЬNULL(РасчетыСКлиентами.СуммаОстаток,0) КАК СуммаОплаты
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки(, ЗаказКлиента=&Ссылка) КАК РасчетыСКлиентами
|");
Запрос.УстановитьПараметр("Ссылка", Основание);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса[0].Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
СуммаОснования = 0;
ВыборкаПоДокументу = РезультатЗапроса[0].Выбрать();
ВыборкаПоРасчетам = РезультатЗапроса[1].Выбрать();
Если ВыборкаПоДокументу.Следующий() Тогда
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.КОбеспечению);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.КОтгрузке);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.Закрыт);
Документы.СчетНаОплатуКлиенту.ПроверитьКорректностьХозяйственнойОперацииДокументаОснования(
ВыборкаПоДокументу.ЕстьОшибкиХозяйственнаяОперация,
ВыборкаПоДокументу.ХозяйственнаяОперация);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаПоДокументу.ДокументОснование,
ВыборкаПоДокументу.Статус,
ВыборкаПоДокументу.ЕстьОшибкиПроведен,
ВыборкаПоДокументу.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, ВыборкаПоДокументу);
НазначениеПлатежа = Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ВыборкаПоДокументу.Номер,
Основание);
Если ВыборкаПоДокументу.РасчетыПоДоговору Тогда
ДобавитьЭтапОплаты(ВыборкаПоДокументу.СуммаВзаиморасчетов, ВыборкаПоДокументу.ДатаПлатежа);
ДанныеЗаполнения.Вставить("СуммаДокумента", ВыборкаПоДокументу.СуммаВзаиморасчетов);
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", Ложь);
Иначе
ЗаполнитьСуммуДокументаПоРасчетамСКлиентами(ВыборкаПоДокументу, ВыборкаПоРасчетам, ДанныеЗаполнения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьСуммуДокументаПоРасчетамСКлиентами(ВыборкаПоДокументу, ВыборкаПоРасчетам, ДанныеЗаполнения)
Если ВыборкаПоРасчетам.Следующий() И ВыборкаПоРасчетам.СуммаОплаты > 0 Тогда
ДобавитьЭтапОплаты(ВыборкаПоРасчетам.СуммаОплаты, ВыборкаПоДокументу.ДатаПлатежа);
ДанныеЗаполнения.Вставить("СуммаДокумента", ВыборкаПоРасчетам.СуммаОплаты);
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", ВыборкаПоРасчетам.СуммаОплаты <> ВыборкаПоДокументу.СуммаВзаиморасчетов);
Иначе
ДанныеЗаполнения.Вставить("СуммаДокумента", 0);
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", Истина);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуКомитенту(Знач Основание, ДанныеЗаполнения)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Руководитель КАК Руководитель,
| ДанныеДокумента.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Организация.Префикс КАК Префикс,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.СуммаВознаграждения КАК СуммаВзаиморасчетов,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.КонтактноеЛицо КАК КонтактноеЛицо,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
| ЛОЖЬ КАК ЧастичнаяОплата,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
| ДанныеДокумента.УдержатьВознаграждение КАК УдержатьВознаграждение,
|
| ВЫБОР КОГДА ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК РасчетыПоДоговору
|
|ИЗ
| Документ.ОтчетКомитенту КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|;
|ВЫБРАТЬ
| ЕСТЬNULL(РасчетыСКлиентами.СуммаОстаток,0) КАК СуммаОплаты
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки(, ЗаказКлиента=&Ссылка) КАК РасчетыСКлиентами
|");
Запрос.УстановитьПараметр("Ссылка", Основание);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса[0].Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
ВыборкаПоДокументу = РезультатЗапроса[0].Выбрать();
ВыборкаПоРасчетам = РезультатЗапроса[1].Выбрать();
Если ВыборкаПоДокументу.Следующий() Тогда
Если ВыборкаПоДокументу.УдержатьВознаграждение Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не требуется вводить счет на оплату на основании документа %1, поскольку в нем удержано вознаграждение'"),
Основание);
ВызватьИсключение Текст;
КонецЕсли;
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаПоДокументу.ДокументОснование,
Неопределено, // Статус
ВыборкаПоДокументу.ЕстьОшибкиПроведен,
Ложь); // ЕстьОшибкиСтатус
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, ВыборкаПоДокументу);
НазначениеПлатежа = Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ВыборкаПоДокументу.Номер,
Основание);
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = ДанныеЗаполнения.Организация;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = ДанныеЗаполнения.Организация;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
Если ВыборкаПоДокументу.РасчетыПоДоговору Тогда
ДобавитьЭтапОплаты(ВыборкаПоДокументу.СуммаВзаиморасчетов, ВыборкаПоДокументу.ДатаПлатежа);
Если ВыборкаПоДокументу.СуммаВзаиморасчетов > 0 Тогда
ДанныеЗаполнения.Вставить("СуммаДокумента", ВыборкаПоДокументу.СуммаВзаиморасчетов);
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", Ложь);
Иначе
ДанныеЗаполнения.Вставить("СуммаДокумента", 0);
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", Истина);
КонецЕсли;
Иначе
ЗаполнитьСуммуДокументаПоРасчетамСКлиентами(ВыборкаПоДокументу, ВыборкаПоРасчетам, ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоОтчетуКомиссионераОСписании(Знач Основание, ДанныеЗаполнения)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Организация.Префикс КАК Префикс,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.СуммаДокумента КАК СуммаВзаиморасчетов,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.ДатаПлатежа КАК ДатаПлатежа,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| Ложь КАК ЧастичнаяОплата,
| НЕ ДанныеДокумента.Проведен КАК ЕстьОшибкиПроведен,
|
| ВЫБОР КОГДА ДанныеДокумента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК РасчетыПоДоговору
|
|ИЗ
| Документ.ОтчетКомиссионераОСписании КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|;
|ВЫБРАТЬ
| ЕСТЬNULL(РасчетыСКлиентами.СуммаОстаток,0) КАК СуммаОплаты
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки(, ЗаказКлиента=&Ссылка) КАК РасчетыСКлиентами
|");
Запрос.УстановитьПараметр("Ссылка", Основание);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса[0].Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
ВыборкаПоДокументу = РезультатЗапроса[0].Выбрать();
ВыборкаПоРасчетам = РезультатЗапроса[1].Выбрать();
Если ВыборкаПоДокументу.Следующий() Тогда
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаПоДокументу.ДокументОснование,
Неопределено, // Статус
ВыборкаПоДокументу.ЕстьОшибкиПроведен,
Ложь); // ЕстьОшибкиСтатус
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, ВыборкаПоДокументу);
НазначениеПлатежа = Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ВыборкаПоДокументу.Номер,
Основание);
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = ДанныеЗаполнения.Организация;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = ДанныеЗаполнения.Организация;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
Если ВыборкаПоДокументу.РасчетыПоДоговору Тогда
ДобавитьЭтапОплаты(ВыборкаПоДокументу.СуммаВзаиморасчетов, ВыборкаПоДокументу.ДатаПлатежа);
ДанныеЗаполнения.Вставить("СуммаДокумента", ВыборкаПоДокументу.СуммаВзаиморасчетов);
ДанныеЗаполнения.Вставить("ЧастичнаяОплата", Ложь);
Иначе
ЗаполнитьСуммуДокументаПоРасчетамСКлиентами(ВыборкаПоДокументу, ВыборкаПоРасчетам, ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПоДоговору(Знач Основание, ДанныеЗаполнения)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Договор,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Номер КАК Номер,
| Неопределено КАК Префикс,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК Валюта,
| 0 КАК СуммаДокумента,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| &ТекущаяДата КАК ДатаПлатежа,
| ИСТИНА КАК ЧастичнаяОплата,
| ДанныеДокумента.Статус КАК Статус,
| ДанныеДокумента.КонтактноеЛицо КАК КонтактноеЛицо,
|
| ВЫБОР КОГДА ДанныеДокумента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.НеСогласован) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиСтатус,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика) ТОГДА
| Истина
| ИНАЧЕ
| Ложь
| КОНЕЦ КАК ЕстьОшибкиТипДоговора
|
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", Основание);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ДанныеЗаполнения.Вставить(Колонка.Имя);
КонецЦикла;
ВыборкаПоДокументу = РезультатЗапроса.Выбрать();
Если ВыборкаПоДокументу.Следующий() Тогда
ПроверитьВозможностьВводаНаОснованииДоговора(ВыборкаПоДокументу.ЕстьОшибкиТипДоговора);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаПоДокументу.ДокументОснование,
ВыборкаПоДокументу.Статус,
, // ЕстьОшибкиПроведен
ВыборкаПоДокументу.ЕстьОшибкиСтатус);
ЗаполнитьЗначенияСвойств(ДанныеЗаполнения, ВыборкаПоДокументу);
НазначениеПлатежа = Документы.СчетНаОплатуКлиенту.СформироватьНазначениеПлатежа(
ВыборкаПоДокументу.Номер,
Основание);
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = ДанныеЗаполнения.Организация;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = ДанныеЗаполнения.Организация;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров); // Касса
КонецПроцедуры
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или НЕ ДанныеЗаполнения.Свойство("Валюта") Тогда
Валюта = ЗначениеНастроекПовтИсп.ПолучитьВалютуРегламентированногоУчета(Валюта);
КонецЕсли;
Менеджер = Пользователи.ТекущийПользователь();
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчет;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.ФормаОплаты = ФормаОплаты;
СтруктураПараметров.Касса = Касса;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
КонецПроцедуры
#КонецОбласти
#Область Прочее
Процедура ДобавитьЭтапОплаты(СуммаОплаты, ДатаПлатежа)
ЭтапОплаты = ЭтапыГрафикаОплаты.Добавить();
ЭтапОплаты.ПроцентПлатежа = 100;
ЭтапОплаты.СуммаПлатежа = СуммаОплаты;
ЭтапОплаты.ДатаПлатежа = ?(ЗначениеЗаполнено(ДатаПлатежа), ДатаПлатежа, ТекущаяДата());
КонецПроцедуры
Процедура ПроверитьВозможностьВводаНаОснованииДоговора(ЕстьОшибкиТипДоговора)
Если ЕстьОшибкиТипДоговора Тогда
ТекстОшибки = НСтр("ru='Ввод на основании договора с поставщиком запрещен.'");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Рассчитывает сумму неотмененных строк заказа
//
//Параметры:
// ТолькоЗалогЗаТару - Булево - признак залога за тару
//
// Возвращаемое значение:
// Число - сумма заменяющих строк
//
Функция ПолучитьСуммуЗаказанныхСтрок(ТолькоЗалогЗаТару = Ложь) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.СуммаСНДС КАК СуммаСНДС,
| Товары.Отменено КАК Отменено
|ПОМЕСТИТЬ
| Товары
|ИЗ
| &Товары КАК Товары
|;
|ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Товары.СуммаСНДС),0) КАК СуммаСНДС
|ИЗ
| Товары КАК Товары
|ГДЕ
| НЕ Товары.Отменено
| И (((Товары.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ (НЕ &ВернутьМногооборотнуюТару) ИЛИ &ТребуетсяЗалогЗаТару)
| И НЕ &ТолькоЗалогЗаТару)
| ИЛИ (Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| И &ТребуетсяЗалогЗаТару
| И &ТолькоЗалогЗаТару))
|");
Запрос.УстановитьПараметр("Товары", Товары.Выгрузить(,"Номенклатура,СуммаСНДС,Отменено"));
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", ТребуетсяЗалогЗаТару);
Запрос.УстановитьПараметр("ТолькоЗалогЗаТару", ТолькоЗалогЗаТару);
Выгрузка = Запрос.Выполнить().Выгрузить();
СуммаЗаказанныхСтрок = Выгрузка[0].СуммаСНДС;
Возврат СуммаЗаказанныхСтрок;
КонецФункции
Функция ПолучитьСуммуВозвратнойТары()
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.СуммаСНДС КАК СуммаСНДС,
| Товары.Отменено КАК Отменено
|ПОМЕСТИТЬ
| Товары
|ИЗ
| &Товары КАК Товары
|;
|ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Товары.СуммаСНДС),0) КАК СуммаСНДС
|ИЗ
| Товары КАК Товары
|ГДЕ
| НЕ Товары.Отменено
| И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| И НЕ &ТребуетсяЗалогЗаТару
|");
Запрос.УстановитьПараметр("Товары", Товары.Выгрузить(,"Номенклатура,СуммаСНДС,Отменено"));
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", ТребуетсяЗалогЗаТару);
Выгрузка = Запрос.Выполнить().Выгрузить();
СуммаВозвратнойТарыЗаказанныхСтрок = Выгрузка[0].СуммаСНДС;
Возврат СуммаВозвратнойТарыЗаказанныхСтрок;
КонецФункции
// Рассчитывает количество заказанных строк заказа
//
Функция ПолучитьКоличествоЗаказанныхСтрок() Экспорт
НайденныеСтроки = Товары.НайтиСтроки(Новый Структура("Отменено", Ложь));
Возврат НайденныеСтроки.Количество();
КонецФункции
// Заполняет табличную часть ЭтапыГрафикаОплаты
//
Процедура ЗаполнитьЭтапыГрафикаОплаты() Экспорт
ЭтапыГрафикаОплаты.Очистить();
СуммаЗаказано = ПолучитьСуммуЗаказанныхСтрок();
СуммаЗалогаЗаТару = ПолучитьСуммуЗаказанныхСтрок(Истина);
Если СуммаЗаказано = 0 И СуммаЗалогаЗаТару = 0 Тогда
Возврат;
КонецЕсли;
ГрафикСоглашенияЗаполнен = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами")
И ПродажиВызовСервера.ГрафикСоглашенияЗаполнен(Соглашение);
ГрафикЗаполнен = ПолучитьФункциональнуюОпцию("ИспользоватьГрафикиОплаты")
И ЗначениеЗаполнено(ГрафикОплаты);
ЭтапыОплатыСервер.ЗаполнитьЭтапыОплатыДокументаПродажи(
ЭтотОбъект,
ГрафикСоглашенияЗаполнен,
ГрафикЗаполнен,
СуммаЗаказано,
СуммаЗалогаЗаТару);
Если ЭтапыГрафикаОплаты.Количество() = 0 Тогда
ЭтапыОплатыКлиентСервер.ДобавитьЭтапОплатыПоУмолчанию(
ЭтотОбъект,
Перечисления.ВариантыОплатыКлиентом.КредитПослеОтгрузки,
ЖелаемаяДатаОтгрузки,
СуммаЗаказано,
СуммаЗалогаЗаТару);
КонецЕсли;
КонецПроцедуры
// Заполняет условия продаж в заказе клиента
//
// Параметры:
// УсловияПродаж - Структура - Структура для заполнения
//
Процедура ЗаполнитьУсловияПродаж(Знач УсловияПродаж) Экспорт
Если УсловияПродаж = Неопределено Тогда
Возврат;
КонецЕсли;
Валюта = УсловияПродаж.Валюта;
ХозяйственнаяОперация = УсловияПродаж.ХозяйственнаяОперация;
Если ЗначениеЗаполнено(УсловияПродаж.ГрафикОплаты) Тогда
ГрафикОплаты = УсловияПродаж.ГрафикОплаты;
КонецЕсли;
НалогообложениеНДС = УсловияПродаж.НалогообложениеНДС;
ЦенаВключаетНДС = УсловияПродаж.ЦенаВключаетНДС;
ВернутьМногооборотнуюТару = УсловияПродаж.ВозвращатьМногооборотнуюТару;
СрокВозвратаМногооборотнойТары = УсловияПродаж.СрокВозвратаМногооборотнойТары;
ТребуетсяЗалогЗаТару = УсловияПродаж.ТребуетсяЗалогЗаТару;
НаправлениеДеятельности = УсловияПродаж.НаправлениеДеятельности;
ИзмененаОрганизация = ЗначениеЗаполнено(УсловияПродаж.Организация) И УсловияПродаж.Организация <> Организация;
ИзмененаФормаОплаты = ЗначениеЗаполнено(УсловияПродаж.ФормаОплаты) И УсловияПродаж.ФормаОплаты <> ФормаОплаты;
ФормаОплаты = УсловияПродаж.ФормаОплаты;
Если ИзмененаОрганизация Тогда
Организация = УсловияПродаж.Организация;
КонецЕсли;
Если ИзмененаОрганизация Или ИзмененаФормаОплаты Тогда
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.НаправлениеДеятельности = НаправлениеДеятельности;
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.НаправлениеДеятельности = НаправлениеДеятельности;
СтруктураПараметров.ФормаОплаты = ФормаОплаты;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
КонецЕсли;
Если Не УсловияПродаж.Типовое Тогда
Если ЗначениеЗаполнено(УсловияПродаж.Контрагент) Тогда
Контрагент = УсловияПродаж.Контрагент;
КонецЕсли;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
Если Не УсловияПродаж.Типовое Тогда
Если ЗначениеЗаполнено(УсловияПродаж.КонтактноеЛицо)
И НЕ ЗначениеЗаполнено(КонтактноеЛицо) Тогда
КонтактноеЛицо = УсловияПродаж.КонтактноеЛицо;
КонецЕсли;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Партнер, КонтактноеЛицо);
Если УсловияПродаж.ИспользуютсяДоговорыКонтрагентов <> Неопределено И УсловияПродаж.ИспользуютсяДоговорыКонтрагентов Тогда
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(ЭтотОбъект, ХозяйственнаяОперация, Валюта);
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Договор, БанковскийСчет, БанковскийСчетКонтрагента);
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности") Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(НаправлениеДеятельности, Соглашение, Договор);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(УсловияПродаж.Склад) Тогда
Склад = УсловияПродаж.Склад;
КонецЕсли;
Если ЗначениеЗаполнено(УсловияПродаж.ГруппаФинансовогоУчета) Тогда
ГруппаФинансовогоУчета = УсловияПродаж.ГруппаФинансовогоУчета;
КонецЕсли;
Если ЗначениеЗаполнено(УсловияПродаж.СрокПоставки) И ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента") Тогда
ДатаНачала = ?(ЗначениеЗаполнено(Дата), Дата, ТекущаяДата());
ЖелаемаяДатаОтгрузки = ОбщегоНазначенияУТКлиентСервер.РассчитатьДатуОкончанияПериода(ДатаНачала,Перечисления.Периодичность.День, УсловияПродаж.СрокПоставки) + 1;
КонецЕсли;
КонецПроцедуры
// Заполняет условия продаж по умолчанию в заказе клиента
//
Процедура ЗаполнитьУсловияПродажПоУмолчанию() Экспорт
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
Если ЗначениеЗаполнено (Партнер) ИЛИ Не ИспользоватьСоглашенияСКлиентами Тогда
УсловияПродажПоУмолчанию = ПродажиСервер.ПолучитьУсловияПродажПоУмолчанию(
Партнер,
Новый Структура("УчитыватьГруппыСкладов, ВыбранноеСоглашение, ПустаяСсылкаДокумента",
Истина,
Соглашение,
Документы.ЗаказКлиента.ПустаяСсылка()));
Если УсловияПродажПоУмолчанию <> Неопределено Тогда
Если НЕ ИспользоватьСоглашенияСКлиентами ИЛИ
(Соглашение <> УсловияПродажПоУмолчанию.Соглашение И ЗначениеЗаполнено(УсловияПродажПоУмолчанию.Соглашение)) Тогда
Соглашение = УсловияПродажПоУмолчанию.Соглашение;
ЗаполнитьУсловияПродаж(УсловияПродажПоУмолчанию);
Если ИспользоватьСоглашенияСКлиентами Тогда
СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПродажиСервер.ЗаполнитьЦены(
Товары,
, // Массив строк или структура отбора
Новый Структура( // Параметры заполнения
"Дата, Валюта, Соглашение, РасчитыватьНаборы, ПоляЗаполнения",
Дата,
Валюта,
Соглашение,
Истина,
"Цена, СтавкаНДС, ВидЦены, СрокПоставки"
),
Новый Структура( // Структура действий с измененными строками
"ПересчитатьСумму, ПересчитатьСуммуСНДС, ПересчитатьСуммуНДС, ПересчитатьСуммуРучнойСкидки, ОчиститьАвтоматическуюСкидку, ПересчитатьСуммуСУчетомРучнойСкидки",
"КоличествоУпаковок", СтруктураПересчетаСуммы, СтруктураПересчетаСуммы, "КоличествоУпаковок", Неопределено, Новый Структура("Очищать", Ложь)));
КонецЕсли;
Иначе
Соглашение = УсловияПродажПоУмолчанию.Соглашение;
КонецЕсли;
Иначе
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
Соглашение = Неопределено;
КонецЕсли;
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, , БанковскийСчетКонтрагента);
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Партнер,КонтактноеЛицо);
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
АдресДоставки = ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Партнер);
КонецЕсли;
Если Не ЗначениеЗаполнено(НалогообложениеНДС) И ИспользоватьСоглашенияСКлиентами Тогда
НалогообложениеНДС = ЗначениеНастроекПовтИсп.ПолучитьНалогообложениеНДС(Организация, Склад, Дата);
КонецЕсли;
КонецПроцедуры
// Заполняет условия продаж по соглашению в заказе клиента
//
Процедура ЗаполнитьУсловияПродажПоCоглашению() Экспорт
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(Соглашение, Истина);
ЗаполнитьУсловияПродаж(УсловияПродаж);
СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПродажиСервер.ЗаполнитьЦены(
Товары,
, // Массив строк или структура отбора
Новый Структура( // Параметры заполнения
"Дата, Валюта, Соглашение, РасчитыватьНаборы, ПоляЗаполнения",
Дата,
Валюта,
Соглашение,
Истина,
"Цена, СтавкаНДС, ВидЦены, СрокПоставки"
),
Новый Структура( // Структура действий с измененными строками
"ПересчитатьСумму, ПересчитатьСуммуСНДС, ПересчитатьСуммуНДС, ПересчитатьСуммуРучнойСкидки, ОчиститьАвтоматическуюСкидку, ПересчитатьСуммуСУчетомРучнойСкидки",
"КоличествоУпаковок", СтруктураПересчетаСуммы, СтруктураПересчетаСуммы, "КоличествоУпаковок", Неопределено, Новый Структура("Очищать", Ложь)));
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчет;
СтруктураПараметров.НаправлениеДеятельности = УсловияПродаж.НаправлениеДеятельности;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, , БанковскийСчетКонтрагента);
Если Не ЗначениеЗаполнено(НалогообложениеНДС) Тогда
НалогообложениеНДС = ЗначениеНастроекПовтИсп.ПолучитьНалогообложениеНДС(Организация, Склад, Дата);
КонецЕсли;
КонецПроцедуры
// Устанавливает статус для объекта документа
//
// Параметры:
// НовыйСтатус - Строка - Имя статуса, который будет установлен у заказов
// ДополнительныеПараметры - Структура - Структура дополнительных параметров установки статуса
//
// Возвращаемое значение:
// Булево - Истина, в случае успешной установки нового статуса
//
Функция УстановитьСтатус(НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаказовКлиентов[НовыйСтатус];
Если ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаказовКлиентов.НеСогласован Тогда
Если Согласован Тогда
Согласован = Ложь;
КонецЕсли;
КонецЕсли;
Если ДополнительныеПараметры <> Неопределено Тогда
ЗначениеПараметра = Неопределено;
Если ДополнительныеПараметры.Свойство("ОтменаНеотработанныхСтрок", ЗначениеПараметра) Тогда
КоличествоСтрок = ПродажиСервер.ОтменитьНепоставленныеСтроки(
ЭтотОбъект,
"Товары",
ЗначениеПараметра,
Не (Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован));
Если КоличествоСтрок <> 0 Тогда
ЗаполнитьЭтапыГрафикаОплаты();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Статус = ЗначениеНовогоСтатуса;
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ЗаказКлиента);
ЭтоЗаказСоСклада = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента")
И Не ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента");
Если ЭтоЗаказСоСклада Тогда
ОбеспечениеСервер.ЗаполнитьВариантОбеспеченияПоУмолчанию(Товары, Ложь, Статус);
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ЭтотОбъект, ПараметрыУказанияСерий);
Возврат ПроверитьЗаполнение();
КонецФункции
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ПроведениеСервер.УстановитьРежимПроведения(ЭтотОбъект, РежимЗаписи, РежимПроведения);
ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());
ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);
ОбщегоНазначенияУТ.ОкруглитьКоличествоШтучныхТоваров(ЭтотОбъект, РежимЗаписи);
ЗаказыСервер.УстановитьКлючВСтрокахТабличнойЧасти(ЭтотОбъект, "Товары");
Если (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или Не ВернутьМногооборотнуюТару)
И ТребуетсяЗалогЗаТару Тогда
ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
СуммаДокумента = ПолучитьСуммуЗаказанныхСтрок();
СуммаВозвратнойТары = ПолучитьСуммуВозвратнойТары();
ПорядокРасчетов = ВзаиморасчетыСервер.ПорядокРасчетовПоДокументу(ЭтотОбъект);
ГрафикИсполненияВДоговоре = Ложь;
Если ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ЗначениеЗаполнено(Договор) Тогда
ГрафикИсполненияВДоговоре = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ЗаданГрафикИсполнения");
КонецЕСли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или ГрафикИсполненияВДоговоре Тогда
ЭтапыГрафикаОплаты.Очистить();
СуммаАвансаДоОбеспечения = 0;
СуммаПредоплатыДоОтгрузки = 0;
Иначе
Если Не ТребуетсяЗалогЗаТару Тогда
Для Каждого ЭтапОплаты Из ЭтапыГрафикаОплаты Цикл
ЭтапОплаты.СуммаЗалогаЗаТару = 0;
КонецЦикла;
КонецЕсли;
ПродажиСервер.ЗаполнитьСуммыАвансаПредоплаты(ЭтотОбъект);
КонецЕсли;
Если Не НеОтгружатьЧастями Тогда
НоваяДатаОтгрузки = Дата(1,1,1);
Если Товары.Количество() > 0 Тогда
Если Статус = Перечисления.СтатусыЗаказовКлиентов.КОбеспечению
ИЛИ Статус = Перечисления.СтатусыЗаказовКлиентов.КОтгрузке
ИЛИ Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт Тогда
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Отменено", Ложь);
СтрокиКОбеспечению = Товары.НайтиСтроки(ПараметрыОтбора);
Если СтрокиКОбеспечению.Количество() > 0 Тогда
ТаблицаСтрокКОбеспечению = Товары.Выгрузить(СтрокиКОбеспечению, "ДатаОтгрузки");
ТаблицаСтрокКОбеспечению.Сортировать("ДатаОтгрузки Возр");
НоваяДатаОтгрузки = ТаблицаСтрокКОбеспечению[0].ДатаОтгрузки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ДатаОтгрузки = НоваяДатаОтгрузки;
Иначе
ОбеспечениеСервер.ЗаполнитьДатыОтгрузкиВТаблице(ДатаОтгрузки, Товары, "ДатаОтгрузки");
КонецЕсли;
ДокументСогласован = Согласован;
ОбщегоНазначенияУТ.ИзменитьПризнакСогласованностиДокумента(
ЭтотОбъект,
РежимЗаписи,
Перечисления.СтатусыЗаказовКлиентов.НеСогласован);
// Установим дату согласования, если документ согласован
Если Не ДокументСогласован И Согласован Тогда
ДатаСогласования = ТекущаяДатаСеанса();
КонецЕсли;
// Очистим реквизиты документа не используемые для хозяйственной операции.
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
Документы.ЗаказКлиента.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизиты(
ЭтотОбъект,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
МассивРеквизитов = Новый Массив;
Если ФормаОплаты <> Перечисления.ФормыОплаты.Наличная Тогда
МассивРеквизитов.Добавить("Касса");
КонецЕсли;
ДенежныеСредстваСервер.ОчиститьНеиспользуемыеРеквизиты(ЭтотОбъект, МассивРеквизитов, Новый Массив);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект, НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ЗаказКлиента));
Если Не ЗначениеЗаполнено(Назначение) Тогда
Обособленно = Перечисления.ВариантыОбеспечения.Обособленно;
ОтгрузитьОбособленно = Перечисления.ВариантыОбеспечения.ОтгрузитьОбособленно;
ТребуетсяНазначение = Ложь;
Для Каждого Строка Из Товары Цикл
Если Строка.ВариантОбеспечения = Обособленно Или Строка.ВариантОбеспечения = ОтгрузитьОбособленно Тогда
ТребуетсяНазначение = Истина;
КонецЕсли;
КонецЦикла;
Если ТребуетсяНазначение Тогда
Назначение = Справочники.Назначения.ПолучитьСсылкуДляНовогоЗаказа(НаправлениеДеятельности);
КонецЕсли;
КонецЕсли;
Если ЭтоНовый() И НЕ ЗначениеЗаполнено(Номер) Тогда
УстановитьНовыйНомер();
КонецЕсли;
Если ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоНакладным Тогда
ИдентификаторПлатежа = ОбщегоНазначенияУТ.ПолучитьУникальныйИдентификаторПлатежа(ЭтотОбъект);
Иначе
ИдентификаторПлатежа = Неопределено;
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Справочники.Назначения.СоздатьОбновитьНазначение(Ссылка, Назначение, Партнер, Номер, Дата, ПометкаУдаления, НаправлениеДеятельности);
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
Если ТипДанныхЗаполнения = Тип("Структура") Тогда
ЗаполнитьДокументПоОтбору(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.Партнеры") Тогда
ЗаполнитьДокументНаОснованииПартнера(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СделкиСКлиентами") Тогда
ЗаполнитьДокументНаОснованииСделкиПоПродаже(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.КоммерческоеПредложениеКлиенту") Тогда
ЗаполнитьДокументНаОснованииКоммерческогоПредложенияКлиенту(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
ЗаполнитьДокументНаОснованииИндивидуальногоСоглашенияСКлиентом(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаданиеТорговомуПредставителю") Тогда
ЗаполнитьДокументНаОснованииЗаданияТорговомуПредставителю(ДанныеЗаполнения);
КонецЕсли;
ИнициализироватьУсловияПродаж();
ИнициализироватьДокумент(ДанныеЗаполнения);
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияКассыПриФОИспользоватьНесколькоКассЛожь", Ложь);
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияСчетаПриФОИспользоватьНесколькоСчетовЛожь", Ложь);
ЗаполнениеСвойствПоСтатистикеСервер.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, ДанныеЗаполнения);
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Склад);
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Склад, СкладГруппа, Товары, Ложь);
Если Не ЗначениеЗаполнено(НалогообложениеНДС) Или Не ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
НалогообложениеНДС = ЗначениеНастроекПовтИсп.ПолучитьНалогообложениеНДС(Организация, Склад, Дата);
КонецЕсли;
Приоритет = Справочники.Приоритеты.ПолучитьПриоритетПоУмолчанию(Приоритет);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
ОбщегоНазначенияУТ.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);
НоменклатураСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,
НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ЗаказКлиента),
Отказ,
МассивНепроверяемыхРеквизитов);
НоменклатураСервер.ПроверитьЗаполнениеСодержания(ЭтотОбъект,Отказ,"Товары");
// Срок действия заказа должен быть не меньше даты документа
Если Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован
И ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента")
И ЗначениеЗаполнено(ДатаСогласования) И ДатаСогласования < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Дата согласования должна быть не меньше даты документа %Дата%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Дата%", Формат(Дата, "ДЛФ=DD"));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ДатаСогласования",
,
Отказ);
КонецЕсли;
ВсеСтрокиОтменены = ОбщегоНазначенияУТ.ВсеСтрокиОтменены(ЭтотОбъект, "Товары", "Отменено");
МассивНепроверяемыхРеквизитов.Добавить("ДатаОтгрузки");
// Желаемая дата отгрузки в шапке должна быть не меньше даты документа
Если ЗначениеЗаполнено(ЖелаемаяДатаОтгрузки) И ЖелаемаяДатаОтгрузки < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Желаемая дата отгрузки должна быть не меньше даты документа %Дата%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Дата%", Формат(Дата,"ДЛФ=DD"));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ЖелаемаяДатаОтгрузки",
,
Отказ);
КонецЕсли;
// Дата отгрузки в шапке должна быть не меньше даты документа
Если НеОтгружатьЧастями И
ЗначениеЗаполнено(ДатаОтгрузки) И
ДатаОтгрузки < НачалоДня(Дата)
И НЕ ВсеСтрокиОтменены Тогда
ТекстОшибки = НСтр("ru='Дата отгрузки должна быть не меньше даты документа %Дата%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Дата%", Формат(Дата,"ДЛФ=DD"));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
ЭтотОбъект,
"ДатаОтгрузки",
,
Отказ);
КонецЕсли;
МассивНепроверяемыхРеквизитов.Добавить("Товары.ПричинаОтмены");
МассивНепроверяемыхРеквизитов.Добавить("Товары.ДатаОтгрузки");
ДатаОтгрузкиОбязательна = Ложь;
ШаблонТекста = НСтр("ru='Не заполнена колонка ""Дата отгрузки"" в строке %НомерСтроки% списка ""Товары""'");
ИзЗаказов = Перечисления.ВариантыОбеспечения.ИзЗаказов;
СоСклада = Перечисления.ВариантыОбеспечения.СоСклада;
Отгрузить = Перечисления.ВариантыОбеспечения.Отгрузить;
ОтгрузитьОбособленно = Перечисления.ВариантыОбеспечения.ОтгрузитьОбособленно;
ВариантНеТребуется = Перечисления.ВариантыОбеспечения.НеТребуется;
Для ТекИндекс = 0 По Товары.Количество()-1 Цикл
АдресОшибки = НСтр("ru=' в строке %НомерСтроки% списка ""Товары""'");
АдресОшибки = СтрЗаменить(АдресОшибки, "%НомерСтроки%", Товары[ТекИндекс].НомерСтроки);
СтрокаТовары = Товары[ТекИндекс];
ДатаОтгрузкиВСтрокеОбязательна = Не СтрокаТовары.Отменено
И СтрокаТовары.ВариантОбеспечения <> ВариантНеТребуется
И (Статус = Перечисления.СтатусыЗаказовКлиентов.КОбеспечению
ИЛИ Статус = Перечисления.СтатусыЗаказовКлиентов.КОтгрузке
ИЛИ Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт
ИЛИ (Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован
И (СтрокаТовары.ВариантОбеспечения = ИзЗаказов
ИЛИ СтрокаТовары.ВариантОбеспечения = СоСклада
ИЛИ СтрокаТовары.ВариантОбеспечения = ОтгрузитьОбособленно
ИЛИ СтрокаТовары.ВариантОбеспечения = Отгрузить)));
Если ДатаОтгрузкиВСтрокеОбязательна И Не НеОтгружатьЧастями И Не ЗначениеЗаполнено(СтрокаТовары.ДатаОтгрузки) Тогда
ТекстОшибки = СтрЗаменить(ШаблонТекста, "%НомерСтроки%", СтрокаТовары.НомерСтроки);
ПутьКТабЧасти = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", СтрокаТовары.НомерСтроки, "ДатаОтгрузки");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, ПутьКТабЧасти,, Отказ);
КонецЕсли;
ДатаОтгрузкиОбязательна = ДатаОтгрузкиОбязательна Или ДатаОтгрузкиВСтрокеОбязательна;
// Причина отмены обязательна для заполнения в строках без признака Отменено
Если ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов")
И Товары[ТекИндекс].Отменено И
Не ЗначениеЗаполнено(Товары[ТекИндекс].ПричинаОтмены) Тогда
ТекстОшибки = НСтр("ru='Необходимо указать причину отмены'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Товары[ТекИндекс].НомерСтроки, "ПричинаОтмены"),
,
Отказ);
КонецЕсли;
// Дата отгрузки в тч Товары должна быть не меньше даты документа
Если Не НеОтгружатьЧастями
И ЗначениеЗаполнено(Товары[ТекИндекс].ДатаОтгрузки)
И Товары[ТекИндекс].ДатаОтгрузки < НачалоДня(Дата) Тогда
ТекстОшибки = НСтр("ru='Дата отгрузки должна быть не меньше даты документа ""%Дата%""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки,"%Дата%", Формат(Дата, "ДЛФ=DD"));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки + АдресОшибки,
ЭтотОбъект,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Товары[ТекИндекс].НомерСтроки, "ДатаОтгрузки"),
,
Отказ);
КонецЕсли;
КонецЦикла;
Если ДатаОтгрузкиОбязательна И НеОтгружатьЧастями И Не ЗначениеЗаполнено(ДатаОтгрузки) Тогда
ТекстОшибки = НСтр("ru='Поле ""Дата отгрузки"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "ДатаОтгрузки", , Отказ);
КонецЕсли;
ПорядокРасчетовПоДокументу = ВзаиморасчетыСервер.ПорядокРасчетовПоДокументу(ЭтотОбъект);
ГрафикИсполненияВДоговоре = Ложь;
Если ПорядокРасчетовПоДокументу = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ЗначениеЗаполнено(Договор) Тогда
ГрафикИсполненияВДоговоре = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ЗаданГрафикИсполнения");
КонецЕСли;
Если ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ПорядокРасчетовПоДокументу <> Перечисления.ПорядокРасчетов.ПоНакладным
И Не ГрафикИсполненияВДоговоре Тогда
СуммаЗаказанныхСтрок = ПолучитьСуммуЗаказанныхСтрок();
СуммаЗалоговойТары = ПолучитьСуммуЗаказанныхСтрок(Истина);
ПродажиСервер.ПроверитьКорректностьЭтаповГрафикаОплаты(
ЭтотОбъект,
СуммаЗаказанныхСтрок,
СуммаЗалоговойТары,
Истина,
Отказ,
Истина);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Соглашение) ИЛИ НЕ ОбщегоНазначенияУТ.ЗначениеРеквизитаОбъектаТипаБулево(Соглашение, "ИспользуютсяДоговорыКонтрагентов") Тогда
МассивНепроверяемыхРеквизитов.Добавить("Договор");
КонецЕсли;
ДоставкаТоваров.ПроверитьЗаполнениеРеквизитовДоставки(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ);
Если ЗначениеЗаполнено(НаправлениеДеятельности)
ИЛИ НЕ НаправленияДеятельностиСервер.УказаниеНаправленияДеятельностиОбязательно(ХозяйственнаяОперация) Тогда
МассивНепроверяемыхРеквизитов.Добавить("НаправлениеДеятельности");
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);
ПроверитьИзменениеХозяйственнойОперации(Отказ);
Если Не Отказ И ОбщегоНазначенияУТ.ПроверитьЗаполнениеРеквизитовОбъекта(ЭтотОбъект, ПроверяемыеРеквизиты) Тогда
Отказ = Истина;
КонецЕсли;
ПродажиСервер.ПроверитьКорректностьЗаполненияДокументаПродажи(ЭтотОбъект, Отказ);
Если Статус <> Перечисления.СтатусыЗаказовКлиентов.НеСогласован Тогда
ПродажиСервер.ПроверитьЗапретОтгрузки(Партнер, Отказ);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// Инициализация дополнительных свойств для проведения документа
ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);
// Инициализация данных документа
Документы.ЗаказКлиента.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);
// Подготовка наборов записей
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
// Отражение в разделах учета
ЗаказыСервер.ОтразитьЗаказыКлиентов(ДополнительныеСвойства, Движения, Отказ);
ЗаказыСервер.ОтразитьГрафикОтгрузкиТоваров(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьСвободныеОстатки(ДополнительныеСвойства, Движения, Отказ);
ЗаказыСервер.ОтразитьТоварыКОтгрузке(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьОбеспечениеЗаказовРаботами(ДополнительныеСвойства, Движения, Отказ);
ЗапасыСервер.ОтразитьОбеспечениеЗаказов(ДополнительныеСвойства, Движения, Отказ);
ВзаиморасчетыСервер.ОтразитьРасчетыСКлиентами(ДополнительныеСвойства, Движения, Отказ);
СформироватьСписокРегистровДляКонтроля();
ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);
РегистрыСведений.СостоянияЗаказовКлиентов.ОтразитьСостояниеЗаказа(Ссылка, Отказ);
ДоставкаТоваров.ОтразитьСостояниеДоставки(Ссылка, Отказ);
ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
ПродажиСервер.ВыполнитьКонтрольЗаказаПослеПроведения(Ссылка, Отказ);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
// Инициализация дополнительных свойств для удаления проведения документа
ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);
// Подготовка наборов записей
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
СформироватьСписокРегистровДляКонтроля();
// Запись наборов записей
ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);
РегистрыСведений.СостоянияЗаказовКлиентов.ОтразитьСостояниеЗаказа(Ссылка, Отказ, Истина);
ДоставкаТоваров.ОтразитьСостояниеДоставки(Ссылка, Отказ, Истина);
ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
Статус = Перечисления.СтатусыЗаказовКлиентов.ПустаяСсылка();
ЖелаемаяДатаОтгрузки = Дата(1,1,1);
ДатаОтгрузки = Дата(1,1,1);
ДатаСогласования = Дата(1,1,1);
МаксимальныйКодСтроки = 0;
Согласован = Ложь;
ДокументОснование = Неопределено;
НомерПоДаннымКлиента = "";
ДатаПоДаннымКлиента = Дата(1,1,1);
Назначение = Неопределено;
ИдентификаторПлатежа = Неопределено;
СостояниеЗаполненияМногооборотнойТары = Перечисления.СостоянияЗаполненияМногооборотнойТары.ПустаяСсылка();
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "Статус") = Перечисления.СтатусыДоговоровКонтрагентов.Закрыт Тогда
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") И ЗначениеЗаполнено(Соглашение) Тогда
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(Соглашение, Истина);
Если УсловияПродаж.СтатусСоглашения <> Перечисления.СтатусыСоглашенийСКлиентами.Закрыто Тогда
Если ЗначениеЗаполнено(УсловияПродаж.СрокПоставки) И ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента") Тогда
ЖелаемаяДатаОтгрузки = ОбщегоНазначенияУТКлиентСервер.РассчитатьДатуОкончанияПериода(
ТекущаяДатаСеанса(),
Перечисления.Периодичность.День,
УсловияПродаж.СрокПоставки) + 1;
КонецЕсли;
Иначе
Соглашение = Неопределено;
КонецЕсли;
КонецЕсли;
Для Каждого СтрокаТЧ Из Товары Цикл
СтрокаТЧ.КодСтроки = 0;
СтрокаТЧ.ДатаОтгрузки = Дата(1,1,1);
СтрокаТЧ.Отменено = Ложь;
СтрокаТЧ.ПричинаОтмены = Справочники.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка();
КонецЦикла;
ЭтотОбъект.ЗаполнитьЭтапыГрафикаОплаты();
СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Товары", Истина,,Истина);
ИнициализироватьДокумент();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ИнициализацияИЗаполнение
Процедура ЗаполнитьДокументНаОснованииПартнера(Знач Основание)
Партнер = Основание;
ПродажиСервер.ПроверитьВозможностьВводаНаОснованииПартнераКлиента(Партнер);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
ЗаполнитьУсловияПродажПоУмолчанию();
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииСделкиПоПродаже(Основание)
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| СделкиСКлиентами.Ссылка КАК Сделка,
| СделкиСКлиентами.Партнер КАК Партнер,
| СделкиСКлиентами.СоглашениеСКлиентом КАК Соглашение,
| СделкиСКлиентамиПартнерыИКонтактныеЛица.КонтактноеЛицо КАК КонтактноеЛицо
|ИЗ
| Справочник.СделкиСКлиентами КАК СделкиСКлиентами
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СделкиСКлиентами.ПартнерыИКонтактныеЛица КАК СделкиСКлиентамиПартнерыИКонтактныеЛица
| ПО (СделкиСКлиентамиПартнерыИКонтактныеЛица.Ссылка = СделкиСКлиентами.Ссылка)
| И (СделкиСКлиентамиПартнерыИКонтактныеЛица.Партнер = СделкиСКлиентами.Партнер)
| И (СделкиСКлиентамиПартнерыИКонтактныеЛица.КонтактноеЛицо <> ЗНАЧЕНИЕ(Справочник.КонтактныеЛицаПартнеров.ПустаяСсылка))
|ГДЕ
| СделкиСКлиентами.Ссылка = &Основание");
Запрос.УстановитьПараметр("Основание",Основание);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОснованииСделкиПоПродаже(Выборка.Партнер);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
Если ЗначениеЗаполнено(Соглашение) Тогда
ЗаполнитьУсловияПродажПоCоглашению();
Иначе
ЗаполнитьУсловияПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииИндивидуальногоСоглашенияСКлиентом(Знач ДокументОснование)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| СоглашениеСКлиентом.Ссылка КАК Соглашение,
| СоглашениеСКлиентом.Партнер КАК Партнер,
| СоглашениеСКлиентом.КонтактноеЛицо КАК КонтактноеЛицо,
|
| СоглашениеСКлиентом.Статус КАК СтатусДокумента,
| ВЫБОР
| КОГДА
| СоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| ТОГДА
| ЛОЖЬ
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиСтатус,
| СоглашениеСКлиентом.Типовое КАК ЕстьОшибкиТиповое,
| СоглашениеСКлиентом.НаправлениеДеятельности КАК НаправлениеДеятельности
|
|ИЗ
| Справочник.СоглашенияСКлиентами КАК СоглашениеСКлиентом
|ГДЕ
| СоглашениеСКлиентом.Ссылка = &ДокументОснование
|");
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
РезультатЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатЗапроса[0].Выбрать();
Выборка.Следующий();
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыСоглашенийСКлиентами.Действует);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОснованииСоглашения(Выборка.ЕстьОшибкиТиповое);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.Соглашение,
Выборка.СтатусДокумента,
,
Выборка.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
ЗаполнитьУсловияПродажПоCоглашению();
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииКоммерческогоПредложенияКлиенту(Знач Основание)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| КоммерческоеПредложениеКлиенту.Ссылка КАК ДокументОснование,
| КоммерческоеПредложениеКлиенту.Партнер КАК Партнер,
| КоммерческоеПредложениеКлиенту.Сделка КАК Сделка,
| КоммерческоеПредложениеКлиенту.Валюта КАК Валюта,
| КоммерческоеПредложениеКлиенту.СуммаДокумента КАК СуммаДокумента,
| КоммерческоеПредложениеКлиенту.СрокПоставки КАК СрокПоставки,
| КоммерческоеПредложениеКлиенту.ГрафикОплаты КАК ГрафикОплаты,
| КоммерческоеПредложениеКлиенту.Организация КАК Организация,
| КоммерческоеПредложениеКлиенту.Соглашение КАК Соглашение,
| КоммерческоеПредложениеКлиенту.Соглашение.ПорядокОплаты КАК ПорядокОплаты,
| КоммерческоеПредложениеКлиенту.Соглашение.ГруппаФинансовогоУчета КАК ГруппаФинансовогоУчета,
| КоммерческоеПредложениеКлиенту.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| КоммерческоеПредложениеКлиенту.НалогообложениеНДС КАК НалогообложениеНДС,
| КоммерческоеПредложениеКлиенту.ФормаОплаты КАК ФормаОплаты,
| КоммерческоеПредложениеКлиенту.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| КоммерческоеПредложениеКлиенту.Склад КАК Склад,
| КоммерческоеПредложениеКлиенту.Статус КАК СтатусДокумента,
| КоммерческоеПредложениеКлиенту.КартаЛояльности КАК КартаЛояльности,
| КоммерческоеПредложениеКлиенту.СостояниеЗаполненияМногооборотнойТары КАК СостояниеЗаполненияМногооборотнойТары,
| КоммерческоеПредложениеКлиенту.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| КоммерческоеПредложениеКлиенту.СрокВозвратаМногооборотнойТары КАК СрокВозвратаМногооборотнойТары,
| КоммерческоеПредложениеКлиенту.ТребуетсяЗалогЗаТару КАК ТребуетсяЗалогЗаТару,
| (НЕ КоммерческоеПредложениеКлиенту.Проведен) КАК ЕстьОшибкиПроведен,
| ВЫБОР
| КОГДА КоммерческоеПредложениеКлиенту.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыКоммерческихПредложенийКлиентам.Действует)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиСтатус,
| КоммерческоеПредложениеКлиенту.СпособДоставки КАК СпособДоставки,
| КоммерческоеПредложениеКлиенту.Товары.(
| НомерСтроки КАК НомерСтроки,
| КлючСвязи КАК КлючСвязи,
| НоменклатураНабора КАК НоменклатураНабора,
| ХарактеристикаНабора КАК ХарактеристикаНабора,
| Номенклатура КАК Номенклатура,
| Номенклатура.НаименованиеПолное КАК НаименованиеНоменклатурыПолное,
| Характеристика КАК Характеристика,
| Характеристика.НаименованиеПолное КАК НаименованиеХарактеристикиПолное,
| Номенклатура.ВариантОформленияПродажи КАК ВариантОформленияПродажи,
| Упаковка КАК Упаковка,
| КоличествоУпаковок КАК КоличествоУпаковок,
| Количество КАК Количество,
| ВидЦены КАК ВидЦены,
| Цена КАК Цена,
| ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС,
| СуммаСНДС КАК СуммаСНДС,
| Сумма КАК Сумма,
| Активность КАК Активность,
| ВЫБОР
| КОГДА КоммерческоеПредложениеКлиенту.Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ИЛИ КоммерческоеПредложениеКлиенту.Склад.ЭтоГруппа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ КоммерческоеПредложениеКлиенту.Склад
| КОНЕЦ КАК Склад
| ) КАК Товары,
| КоммерческоеПредложениеКлиенту.СкидкиНаценки.(
| КлючСвязи КАК КлючСвязи,
| СкидкаНаценка КАК СкидкаНаценка,
| Сумма КАК Сумма
| ) КАК СкидкиНаценки,
| КоммерческоеПредложениеКлиенту.КонтактноеЛицо КАК КонтактноеЛицо
|ИЗ
| Документ.КоммерческоеПредложениеКлиенту КАК КоммерческоеПредложениеКлиенту
|ГДЕ
| КоммерческоеПредложениеКлиенту.Ссылка = &Основание");
Запрос.УстановитьПараметр("Основание",Основание);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыКоммерческихПредложенийКлиентам.Действует);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.ДокументОснование,
Выборка.СтатусДокумента,
Выборка.ЕстьОшибкиПроведен,
Выборка.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
ДатаНачала = ?(ЗначениеЗаполнено(Дата),Дата,ТекущаяДата());
Если ЗначениеЗаполнено(Выборка.СрокПоставки) И ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента")Тогда
ЖелаемаяДатаОтгрузки = ОбщегоНазначенияУТКлиентСервер.РассчитатьДатуОкончанияПериода(ДатаНачала, Перечисления.Периодичность.День, Выборка.СрокПоставки) + 1;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Активность", Истина);
ТаблицаТовары = Выборка.Товары.Выгрузить();
ТаблицаТовары = ТаблицаТовары.Скопировать(ПараметрыОтбора);
ТаблицаТовары.Сортировать("НомерСтроки Возр");
Для Каждого ТекСтрока Из ТаблицаТовары Цикл
НоваяСтрока = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
Если ТекСтрока.ВариантОформленияПродажи = Перечисления.ВариантыОформленияПродажи.АктВыполненныхРабот Тогда
НоваяСтрока.Содержание = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ТекСтрока.НаименованиеНоменклатурыПолное,
ТекСтрока.НаименованиеХарактеристикиПолное);
КонецЕсли;
КонецЦикла;
СоответствиеСтрокиДляУдаления = Новый Соответствие;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(ЭтотОбъект, ХозяйственнаяОперация, Валюта);
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Договор, БанковскийСчет, БанковскийСчетКонтрагента);
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", Новый СписокЗначений);
СкидкиНаценки.Загрузить(Выборка.СкидкиНаценки.Выгрузить());
СкидкиНаценкиСервер.РассчитатьПоЗаказуКлиента(ЭтотОбъект, СтруктураПараметры);
СкидкиРассчитаны = Истина;
СуммаЗаказанныхСтрок = ПолучитьСуммуЗаказанныхСтрок();
СуммаЗалоговойТары = ПолучитьСуммуЗаказанныхСтрок(Истина);
Если ЗначениеЗаполнено(ГрафикОплаты) Тогда
ЭтапыОплатыСервер.ЗаполнитьЭтапыОплатыДокументаПродажиПоГрафикуОплаты(
ЭтотОбъект,
СуммаЗаказанныхСтрок - СуммаЗалоговойТары,
СуммаЗалоговойТары,
Ложь);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументНаОснованииЗаданияТорговомуПредставителю(Знач Основание)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаданиеТорговомуПредставителю.Ссылка КАК ДокументОснование,
| ЗаданиеТорговомуПредставителю.Организация КАК Организация,
| ЗаданиеТорговомуПредставителю.Партнер КАК Партнер,
| ЗаданиеТорговомуПредставителю.Контрагент КАК Контрагент,
| ЗаданиеТорговомуПредставителю.Договор КАК Договор,
| ЗаданиеТорговомуПредставителю.Соглашение КАК Соглашение,
| ЗаданиеТорговомуПредставителю.Соглашение.ПорядокОплаты КАК ПорядокОплаты,
| ЗаданиеТорговомуПредставителю.Валюта КАК Валюта,
| ЗаданиеТорговомуПредставителю.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаданиеТорговомуПредставителю.ГрафикОплаты КАК ГрафикОплаты,
| ЗаданиеТорговомуПредставителю.Склад КАК Склад,
| ЗаданиеТорговомуПредставителю.ФормаОплаты КАК ФормаОплаты,
| ЗаданиеТорговомуПредставителю.ЖелаемаяДатаОтгрузки КАК ЖелаемаяДатаОтгрузки,
| ЗаданиеТорговомуПредставителю.НеОтгружатьЧастями КАК НеОтгружатьЧастями,
| ЗаданиеТорговомуПредставителю.Статус КАК СтатусДокумента,
| ЗаданиеТорговомуПредставителю.НалогообложениеНДС КАК НалогообложениеНДС,
| ЗаданиеТорговомуПредставителю.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗаданиеТорговомуПредставителю.СостояниеЗаполненияМногооборотнойТары КАК СостояниеЗаполненияМногооборотнойТары,
| ЗаданиеТорговомуПредставителю.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| ЗаданиеТорговомуПредставителю.СрокВозвратаМногооборотнойТары КАК СрокВозвратаМногооборотнойТары,
| ЗаданиеТорговомуПредставителю.ТребуетсяЗалогЗаТару КАК ТребуетсяЗалогЗаТару,
| ВЫБОР
| КОГДА ЗаданиеТорговомуПредставителю.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаданийТорговымПредставителям.Отработано)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиСтатус,
| ЗаданиеТорговомуПредставителю.Товары.(
| Номенклатура КАК Номенклатура,
| Характеристика КАК Характеристика,
| Количество КАК Количество,
| Упаковка КАК Упаковка,
| КоличествоУпаковок КАК КоличествоУпаковок,
| Цена КАК Цена,
| Сумма КАК Сумма,
| ВидЦены КАК ВидЦены,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС,
| СуммаСНДС КАК СуммаСНДС,
| ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ПричинаОтмены КАК ПричинаОтмены,
| Содержание КАК Содержание,
| ВЫБОР
| КОГДА ЗаданиеТорговомуПредставителю.Товары.ПричинаОтмены = ЗНАЧЕНИЕ(Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Отменено,
| ВЫБОР
| КОГДА ЗаданиеТорговомуПредставителю.Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ЗаданиеТорговомуПредставителю.Склад
| КОНЕЦ КАК Склад
| ) КАК Товары,
| ЗаданиеТорговомуПредставителю.ЭтапыГрафикаОплаты.(
| ВариантОплаты КАК ВариантОплаты,
| ДатаПлатежа КАК ДатаПлатежа,
| ПроцентПлатежа КАК ПроцентПлатежа,
| СуммаПлатежа КАК СуммаПлатежа,
| ПроцентЗалогаЗаТару КАК ПроцентЗалогаЗаТару,
| СуммаЗалогаЗаТару КАК СуммаЗалогаЗаТару,
| НомерСтроки КАК НомерСтроки
| ) КАК ЭтапыГрафикаОплаты
|ИЗ
| Документ.ЗаданиеТорговомуПредставителю КАК ЗаданиеТорговомуПредставителю
|ГДЕ
| ЗаданиеТорговомуПредставителю.Ссылка = &Основание");
Запрос.УстановитьПараметр("Основание",Основание);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
МассивДопустимыхСтатусов = Новый Массив();
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаданийТорговымПредставителям.Отработано);
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
Выборка.ДокументОснование,
Выборка.СтатусДокумента,
,
Выборка.ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
Если НЕ ЗначениеЗаполнено(Договор) Тогда
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(ЭтотОбъект, ХозяйственнаяОперация, Валюта);
КонецЕсли;
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Договор, БанковскийСчет, БанковскийСчетКонтрагента);
Если НЕ ЗначениеЗаполнено(Статус) Тогда
Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован;
КонецЕсли;
ТаблицаТовары = Выборка.Товары.Выгрузить();
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Количество",0);
ТаблицаТовары = Выборка.Товары.Выгрузить();
// Найдем и удалим из таблицы строки с нулевым количеством
НулевыеСтроки = ТаблицаТовары.НайтиСтроки(ПараметрыОтбора);
Для Каждого ТекЭлемент Из НулевыеСтроки Цикл
ТаблицаТовары.Удалить(ТекЭлемент);
КонецЦикла;
Товары.Загрузить(ТаблицаТовары);
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Ложь);
СтруктураПараметры.Вставить("УправляемыеСкидки", Неопределено);
СкидкиНаценкиСервер.РассчитатьПоЗаказуКлиента(ЭтотОбъект, СтруктураПараметры);
СкидкиРассчитаны = Истина;
ТаблицаЭтаповОплаты = Выборка.ЭтапыГрафикаОплаты.Выгрузить();
СуммаЗаказанныхСтрок = ПолучитьСуммуЗаказанныхСтрок();
СуммаЗалоговойТары = ПолучитьСуммуЗаказанныхСтрок(Истина);
// Если в задании заполнены этапы графиков оплаты - скопируем их
Если ТаблицаЭтаповОплаты.Количество() > 0 Тогда
ЭтапыГрафикаОплаты.Загрузить(ТаблицаЭтаповОплаты);
ИначеЕсли ЗначениеЗаполнено(ГрафикОплаты) Тогда
ЭтапыОплатыСервер.ЗаполнитьЭтапыОплатыДокументаПродажиПоГрафикуОплаты(
ЭтотОбъект,
СуммаЗаказанныхСтрок - СуммаЗалоговойТары,
СуммаЗалоговойТары,
Ложь);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДокументПоОтбору(Знач ДанныеЗаполнения)
Если ДанныеЗаполнения.Свойство("Партнер") Тогда
Партнер = ДанныеЗаполнения.Партнер;
ПродажиСервер.ПроверитьВозможностьВводаНаОснованииПартнераКлиента(Партнер);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") Тогда
ЗаполнитьУсловияПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Менеджер = Пользователи.ТекущийПользователь();
Валюта = ЗначениеНастроекПовтИсп.ПолучитьВалютуРегламентированногоУчета(Валюта);
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчет;
БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(
Контрагент, ,
БанковскийСчетКонтрагента);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.ФормаОплаты = ФормаОплаты;
СтруктураПараметров.Касса = Касса;
Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Склад,
ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовПродажи"));
Приоритет = Справочники.Приоритеты.ПолучитьПриоритетПоУмолчанию(Приоритет);
НеОтгружатьЧастями = Истина;
ПорядокРасчетов = ВзаиморасчетыСервер.ПорядокРасчетовПоДокументу(ЭтотОбъект);
Если ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента") Тогда
Статус = Перечисления.СтатусыЗаказовКлиентов.КОбеспечению;
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента") Тогда
ДатаОтгрузки = ТекущаяДатаСеанса();
КонецЕсли;
Иначе
Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован;
КонецЕсли;
ЗаполнитьОбособленно = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "ОбеспечиватьЗаказыОбособленно");
ОбеспечениеСервер.ЗаполнитьВариантОбеспеченияПоУмолчанию(Товары, ЗаполнитьОбособленно, Статус);
КонецПроцедуры
Процедура ИнициализироватьУсловияПродаж()
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами") И Не ЗначениеЗаполнено(ДокументОснование) Тогда
ЗаполнитьУсловияПродажПоУмолчанию();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
Процедура СформироватьСписокРегистровДляКонтроля()
Массив = Новый Массив;
Массив.Добавить(Движения.ОбеспечениеЗаказов);
Если Не ДополнительныеСвойства.ЭтоНовый Тогда
Массив.Добавить(Движения.ЗаказыКлиентов);
Массив.Добавить(Движения.ОбеспечениеЗаказовРаботами);
КонецЕсли;
// Контроль выполняется при перепроведении, отмене проведения или если используются серии,
// чтобы проверить возможность резервирования серий
Если Не ДополнительныеСвойства.ЭтоНовый
Или НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ЗаказКлиента).ИспользоватьСерииНоменклатуры Тогда
Массив.Добавить(Движения.ТоварыКОтгрузке);
КонецЕсли;
Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Массив.Добавить(Движения.СвободныеОстатки);
Массив.Добавить(Движения.ГрафикОтгрузкиТоваров);
Массив.Добавить(Движения.РасчетыСКлиентами);
КонецЕсли;
ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);
КонецПроцедуры
Процедура ПроверитьИзменениеХозяйственнойОперации(Отказ)
Если Не ЭтоНовый() И ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
Запрос = Новый Запрос("
|ВЫБРАТЬ
| РасчетыСКлиентами.СуммаРасход КАК СуммаОплаты
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Обороты(,,Период,
| ЗаказКлиента = &Ссылка
| ) КАК РасчетыСКлиентами
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ЗаказКлиента КАК ДанныеДокумента
| ПО
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация <> &ХозяйственнаяОперация
|ГДЕ
| РасчетыСКлиентами.СуммаРасход > 0
|");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперация);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Заказ клиента оплачен. Нельзя устанавливать операцию %1'"),
ХозяйственнаяОперация);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ЭтотОбъект,
"ХозяйственнаяОперация",
,
Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
Показать
что именно посмотреть в организации, если посмотреть в НСИ, там все норм.
(28) lsd_777, конфигуратор открывать умеешь?) Ты с него наверно копировал процедуры.
Вот стань мышкой на нужный документ и сделай скрин) А то с тобой тяжко общаться)