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