#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ДоверенностьВыданная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗаявкаНаРасходованиеДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.РасходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СписаниеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПриходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПоступлениеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СчетНаОплатуКлиенту.ДобавитьКомандуСоздатьНаОснованииСчетаНаОплатуПоДоговору(КомандыСозданияНаОсновании);
Документы.СчетНаОплатуКлиенту.ДобавитьКомандуСоздатьНаОснованииСчетаНаОплатуПредоплатаПоДоговору(КомандыСозданияНаОсновании);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Справочники.ДоговорыКонтрагентов) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Справочники.ДоговорыКонтрагентов.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Справочники.ДоговорыКонтрагентов);
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция УстановитьСтатус(Договоры, Статус) Экспорт
МассивСсылок = Новый Массив();
КоличествоОбработанных = 0;
Для Каждого Договор Из Договоры Цикл
Если ТипЗнч(Договор) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
Продолжить;
КонецЕсли;
МассивСсылок.Добавить(Договор);
КонецЦикла;
Если МассивСсылок = 0 Тогда
Возврат КоличествоОбработанных;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка КАК Ссылка,
| ДоговорыКонтрагентов.ПометкаУдаления КАК ПометкаУдаления,
| ВЫБОР
| КОГДА ДоговорыКонтрагентов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Ссылка В(&МассивСсылок)");
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.УстановитьПараметр("Статус", Статус);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ПометкаУдаления Тогда
ТекстОшибки = НСтр("ru='Договор %Договор% помечен на удаление. Невозможно изменить статус'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Договор%", Выборка.Ссылка);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Выборка.Ссылка);
Продолжить;
КонецЕсли;
Если Выборка.СтатусСовпадает Тогда
ТекстОшибки = НСтр("ru='Договору %Договор% уже присвоен статус ""%Статус%""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Договор%", Выборка.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", Статус);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Выборка.Ссылка);
Продолжить;
КонецЕсли;
Попытка
ЗаблокироватьДанныеДляРедактирования(Выборка.Ссылка);
Исключение
ТекстОшибки = НСтр("ru='Не удалось заблокировать %Договор%. %ОписаниеОшибки%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Договор%", Выборка.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Выборка.Ссылка);
КонецПопытки;
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Статус = Статус;
Если Статус = Перечисления.СтатусыДоговоровКонтрагентов.НеСогласован Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
КонецЕсли;
Если Не Объект.ПроверитьЗаполнение() Тогда
Продолжить;
КонецЕсли;
Попытка
Объект.Записать();
КоличествоОбработанных = КоличествоОбработанных + 1;
Исключение
ТекстОшибки = НСтр("ru='Не удалось записать %Договор%. %ОписаниеОшибки%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Договор%", Выборка.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Выборка.Ссылка);
КонецПопытки
КонецЦикла;
Возврат КоличествоОбработанных;
КонецФункции
Процедура ЗаполнитьБанковскиеСчетаПоДоговору(Договор, БанковскийСчетОрганизации, БанковскийСчетКонтрагента) Экспорт
ДанныеДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Договор, "БанковскийСчет, БанковскийСчетКонтрагента");
Если БанковскийСчетОрганизации <> Неопределено И ЗначениеЗаполнено(ДанныеДоговора.БанковскийСчет) Тогда
БанковскийСчетОрганизации = ДанныеДоговора.БанковскийСчет;
КонецЕсли;
Если БанковскийСчетКонтрагента <> Неопределено И ЗначениеЗаполнено(ДанныеДоговора.БанковскийСчетКонтрагента) Тогда
БанковскийСчетКонтрагента = ДанныеДоговора.БанковскийСчетКонтрагента;
КонецЕсли;
КонецПроцедуры
Функция УчетнаяИнформацияПоДоговору(Договор) Экспорт
Если ЗначениеЗаполнено(Договор) Тогда
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Договор,
"ВалютаВзаиморасчетов, СтатьяДвиженияДенежныхСредств, СтавкаНДС, НаправлениеДеятельности, ГруппаФинансовогоУчета");
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция ХозяйственнаяОперация(ТипДоговора, ВариантОформленияЗакупок) Экспорт
Типы = Перечисления.ТипыДоговоров;
Операции = Перечисления.ХозяйственныеОперации;
Если ТипДоговора = Типы.СПоклажедателем Тогда
Возврат Операции.ПриемНаХранениеСПравомПродажи;
ИначеЕсли ТипДоговора = Типы.СХранителем Тогда
Возврат Операции.ПередачаНаХранениеСПравомПродажи;
ИначеЕсли ТипДоговора = Типы.РеализацияЧерезКомиссионера Тогда
Возврат Операции.РеализацияЧерезКомиссионера;
ИначеЕсли ТипДоговора = Типы.СПереработчиком Тогда
Возврат Операции.ПроизводствоУПереработчика;
ИначеЕсли ТипДоговора = Типы.СПереработчиком2_5 Тогда
Возврат Операции.ПроизводствоУПереработчика2_5;
ИначеЕсли ТипДоговора = Типы.СПереработчиком2_5_ЕАЭС Тогда
Возврат Операции.ПроизводствоУПереработчикаВСтранахЕАЭС2_5;
ИначеЕсли ТипДоговора = Типы.ПередачаВАренду Или ТипДоговора = Типы.Субаренда Тогда
Возврат Операции.РеализацияУслугПоАренде;
КонецЕсли;
ТоварыВПути = (ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.ТоварыВПути);
НеотфактурованныеПоставки = (ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваров)
ИЛИ (ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг);
ОперацияЗакупкаУПоставщика = Операции.ЗакупкаУПоставщика;
ОперацияЗакупкаУПоставщика =
?(ТоварыВПути, Операции.ЗакупкаУПоставщикаТоварыВПути, ОперацияЗакупкаУПоставщика);
ОперацияЗакупкаУПоставщика =
?(НеотфактурованныеПоставки, Операции.ЗакупкаУПоставщикаФактуровкаПоставки, ОперацияЗакупкаУПоставщика);
ОперацияЗакупкаПоИмпорту = Операции.ЗакупкаПоИмпорту;
ОперацияЗакупкаПоИмпорту =
?(ТоварыВПути, Операции.ЗакупкаПоИмпортуТоварыВПути, ОперацияЗакупкаПоИмпорту);
ОперацияЗакупкаВСтранахЕАЭС = Операции.ЗакупкаВСтранахЕАЭС;
ОперацияЗакупкаВСтранахЕАЭС =
?(ТоварыВПути, Операции.ЗакупкаВСтранахЕАЭСТоварыВПути, ОперацияЗакупкаВСтранахЕАЭС);
ОперацияЗакупкаВСтранахЕАЭС =
?(НеотфактурованныеПоставки, Операции.ЗакупкаВСтранахЕАЭСФактуровкаПоставки, ОперацияЗакупкаВСтранахЕАЭС);
ХозяйственнаяОперация =
?(ТипДоговора = Типы.СПоставщиком, ОперацияЗакупкаУПоставщика,
?(ТипДоговора = Типы.Импорт, ОперацияЗакупкаПоИмпорту,
?(ТипДоговора = Типы.ВвозИзЕАЭС, ОперацияЗакупкаВСтранахЕАЭС,
?(ТипДоговора = Типы.СПокупателем, Операции.РеализацияКлиенту,
?(ТипДоговора = Типы.СКомиссионером, Операции.ПередачаНаКомиссию,
?(ТипДоговора = Типы.СКомитентом, Операции.ПриемНаКомиссию,
?(ТипДоговора = Типы.СКомитентомНаЗакупку, Операции.ПоставкаПодПринципала,
Неопределено)))))));
Возврат ХозяйственнаяОперация;
КонецФункции
Функция ТипДоговора(ХозяйственнаяОперация) Экспорт
Типы = Перечисления.ТипыДоговоров;
Операции = Перечисления.ХозяйственныеОперации;
Если ХозяйственнаяОперация = Операции.ПередачаНаХранениеСПравомПродажи Тогда
Возврат Типы.СХранителем;
ИначеЕсли ХозяйственнаяОперация = Операции.ПриемНаХранениеСПравомПродажи Тогда
Возврат Типы.СПоклажедателем;
ИначеЕсли ХозяйственнаяОперация = Операции.РеализацияЧерезКомиссионера Тогда
Возврат Типы.РеализацияЧерезКомиссионера;
ИначеЕсли ХозяйственнаяОперация = Операции.ПроизводствоУПереработчика Тогда
Возврат Типы.СПереработчиком;
ИначеЕсли ХозяйственнаяОперация = Операции.ПроизводствоУПереработчика2_5 Тогда
Возврат Типы.СПереработчиком2_5;
ИначеЕсли ХозяйственнаяОперация = Операции.ПроизводствоУПереработчикаВСтранахЕАЭС2_5 Тогда
Возврат Типы.СПереработчиком2_5_ЕАЭС;
КонецЕсли;
ОперацииЗакупки = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ОперацииИмпорта = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
ОперацииВСтранахЕАЭС = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС);
Возврат
?(ХозяйственнаяОперация = Операции.РеализацияКлиенту
И ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами"), Типы.СПокупателем,
?(ХозяйственнаяОперация = Операции.ПередачаНаКомиссию, Типы.СКомиссионером,
?(ОперацииЗакупки.Найти(ХозяйственнаяОперация) <> Неопределено
И ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСПоставщиками"), Типы.СПоставщиком,
?(ХозяйственнаяОперация = Операции.ПриемНаКомиссию, Типы.СКомитентом,
?(ОперацииИмпорта.Найти(ХозяйственнаяОперация) <> Неопределено, Типы.Импорт,
?(ОперацииВСтранахЕАЭС.Найти(ХозяйственнаяОперация) <> Неопределено, Типы.ВвозИзЕАЭС,
?(ХозяйственнаяОперация = Операции.ПоставкаПодПринципала, Типы.СКомитентомНаЗакупку,
Неопределено)))))));
КонецФункции
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
Результат = Новый Массив;
Результат.Добавить("ТипДоговора");
Результат.Добавить("Партнер");
Результат.Добавить("Контрагент");
Результат.Добавить("Организация");
Результат.Добавить("ОплатаВВалюте");
Результат.Добавить("ВалютаВзаиморасчетов");
Результат.Добавить("ПорядокРасчетов");
Результат.Добавить("НаправлениеДеятельности");
Результат.Добавить("Подразделение");
Результат.Добавить("ГруппаФинансовогоУчета");
Результат.Добавить("ВариантОформленияЗакупок; ИспользоватьОформлениеДокументовРаздельнойЗакупки,
|ВариантОформленияРаздельнойЗакупки");
Результат.Добавить("ВариантПриемкиТоваров; ОформлениеПоступления, ПриемкаТоваров");
Результат.Добавить("ЦентрализованныйДоговор");
Результат.Добавить("РазрешаетсяПередачаОплатМеждуФилиалами");
Результат.Добавить("КомиссионныеПродажи25");
Результат.Добавить("ВестиРасчетыЧерезКонечныхПокупателей");
Результат.Добавить("ВидЦенУчетный");
Результат.Добавить("ВидЦенПродажи");
Результат.Добавить("КомиссионерПартнер");
Результат.Добавить("КомиссионерКонтрагент");
Результат.Добавить("ДоговорСКомиссионером");
Результат.Добавить("ГруппаФинансовогоУчетаКлиента");
Результат.Добавить("СтавкаДисконтирования");
Результат.Добавить("СрокДляПримененияДисконтирования");
Результат.Добавить("ПрименитьСтавкуДисконтированияПоРассрочке");
Результат.Добавить("РазрешенаРаботаСДочернимиПартнерами");
Результат.Добавить("ВариантКурсаДоговора");
Результат.Добавить("ИдентификаторПлатежа");
Результат.Добавить("ДоговорССамозанятым");
Результат.Добавить("УникальныйНомерВалютногоКонтроля");
Возврат Результат;
КонецФункции
Функция РеквизитыОбъекта(Ссылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Данные.Дата КАК Дата,
| Данные.Организация КАК Организация,
| Данные.Партнер КАК Партнер,
| Данные.Контрагент КАК Контрагент,
| Данные.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| Данные.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Данные.Сумма КАК СуммаДокумента,
| Данные.Сумма КАК СуммаВзаиморасчетов,
| &Ссылка КАК Договор,
| Данные.ПорядокРасчетов КАК ПорядокРасчетов,
| НЕ Данные.ПометкаУдаления КАК Проведен
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК Данные
|ГДЕ
| Данные.Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Партнер = Выборка.Партнер;
Контрагент = Выборка.Контрагент;
Договор = Выборка.Договор;
ПорядокРасчетов = Выборка.ПорядокРасчетов;
ВалютаВзаиморасчетов = Выборка.ВалютаВзаиморасчетов;
ХозяйственнаяОперация = ?(ЗначениеЗаполнено(Выборка.ХозяйственнаяОперация), Выборка.ХозяйственнаяОперация, Перечисления.ХозяйственныеОперации.РеализацияКлиенту);
СуммаДокумента = Выборка.СуммаДокумента;
СуммаВзаиморасчетов = ?(Выборка.Проведен, Выборка.СуммаВзаиморасчетов, 0);
Иначе
Дата = Дата(1,1,1);
Организация = Справочники.Организации.ПустаяСсылка();
Партнер = Справочники.Партнеры.ПустаяСсылка();
Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПустаяСсылка();
ВалютаВзаиморасчетов = Справочники.Валюты.ПустаяСсылка();
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту;
СуммаДокумента = 0;
СуммаВзаиморасчетов = 0;
КонецЕсли;
СтруктураРеквизитов = Новый Структура();
СтруктураРеквизитов.Вставить("Дата", Дата);
СтруктураРеквизитов.Вставить("Организация", Организация);
СтруктураРеквизитов.Вставить("Партнер", Партнер);
СтруктураРеквизитов.Вставить("Контрагент", Контрагент);
СтруктураРеквизитов.Вставить("Договор", Договор);
СтруктураРеквизитов.Вставить("ПорядокРасчетов", ПорядокРасчетов);
СтруктураРеквизитов.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
СтруктураРеквизитов.Вставить("ХозяйственнаяОперация", ХозяйственнаяОперация);
СтруктураРеквизитов.Вставить("СуммаДокумента", СуммаДокумента);
СтруктураРеквизитов.Вставить("СуммаВзаиморасчетов", СуммаВзаиморасчетов);
Возврат СтруктураРеквизитов;
КонецФункции
Функция ДоговорИспользуетсяПриПриемке(Знач ВариантПриемкиТоваров) Экспорт
Если Не ЗначениеЗаполнено(ВариантПриемкиТоваров) Тогда
ВариантПриемкиТоваров = Константы.ВариантПриемкиТоваров.Получить();
КонецЕсли;
Результат = Ложь;
Если ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных
Или ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных
Или ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных Тогда
Результат = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
ПараметрыЗаполнения.Организация = Объект.Организация;
ПараметрыЗаполнения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ПараметрыЗаполнения.Подразделение = Объект.Подразделение;
ПараметрыЗаполнения.Дата = ?(ЗначениеЗаполнено(Объект.ДатаНачалаДействия),Объект.ДатаНачалаДействия, ТекущаяДатаСеанса());
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем Тогда
ПараметрыЗаполнения.РеализацияТоваров = Истина;
ПараметрыЗаполнения.РеализацияРаботУслуг = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером Тогда
ПараметрыЗаполнения.ОтчетКомиссионера = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.ПередачаВАренду
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.Субаренда Тогда
ПараметрыЗаполнения.РеализацияРаботУслуг = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СХранителем Тогда
ПараметрыЗаполнения.ВыкупТоваровХранителем = Истина;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСЗакупки();
ПараметрыЗаполнения.Контрагент = Объект.Контрагент;
ПараметрыЗаполнения.Период = ?(ЗначениеЗаполнено(Объект.ДатаНачалаДействия),Объект.ДатаНачалаДействия, ТекущаяДатаСеанса());
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком Тогда
ПараметрыЗаполнения.ПриобретениеТоваров = Истина;
ПараметрыЗаполнения.ПриобретениеРабот = Истина;
ПараметрыЗаполнения.ПриобретениеНаСтатьи = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоклажедателем Тогда
ПараметрыЗаполнения.ПриобретениеТоваров = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком Тогда
ПараметрыЗаполнения.ПриобретениеРабот = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5 Тогда
ПараметрыЗаполнения.ПриобретениеРабот = Истина;
ПараметрыЗаполнения.ПриобретениеНаСтатьи = Истина;
ПараметрыЗаполнения.ПоступлениеИзПереработки = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС Тогда
ПараметрыЗаполнения.ПриобретениеРабот = Истина;
ПараметрыЗаполнения.ПриобретениеНаСтатьи = Истина;
ПараметрыЗаполнения.ПоступлениеИзПереработки = Истина;
ПараметрыЗаполнения.ВвозТоваровИзТаможенногоСоюза = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентом Тогда
ПараметрыЗаполнения.ПриемНаКомиссию = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС Тогда
ПараметрыЗаполнения.ВвозТоваровИзТаможенногоСоюза = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт Тогда
ПараметрыЗаполнения.ИмпортТоваров = Истина;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыЗаполненияВидаДеятельностиНДС(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияВидаДеятельностиНДС();
ПараметрыЗаполнения.Организация = Объект.Организация;
ПараметрыЗаполнения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ПараметрыЗаполнения.Дата = ?(ЗначениеЗаполнено(Объект.ДатаНачалаДействия),Объект.ДатаНачалаДействия, ТекущаяДатаСеанса());
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком Тогда
ПараметрыЗаполнения.ПриобретениеТоваров = Истина;
ПараметрыЗаполнения.ПриобретениеРабот = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоклажедателем Тогда
ПараметрыЗаполнения.ПриобретениеТоваров = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком
Или Ложь Тогда
ПараметрыЗаполнения.ПриобретениеРабот = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС Тогда
ПараметрыЗаполнения.ПриобретениеТоваров = Истина;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт Тогда
ПараметрыЗаполнения.ПриобретениеТоваров = Истина;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыВзаиморасчеты(ДанныеЗаполнения = Неопределено) Экспорт
Если ОбщегоНазначения.ЗначениеСсылочногоТипа(ДанныеЗаполнения) Тогда
СтруктураДанныеЗаполнения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ДанныеЗаполнения,
"ТипДоговора,
|Сумма,
|ДоговорСКомиссионером,
|КомиссионныеПродажи25,
|ПорядокРасчетов");
ТипДоговора = СтруктураДанныеЗаполнения.ТипДоговора;
Сумма = СтруктураДанныеЗаполнения.Сумма;
ДоговорСКомиссионером = СтруктураДанныеЗаполнения.ДоговорСКомиссионером;
КомиссионныеПродажи25 = СтруктураДанныеЗаполнения.КомиссионныеПродажи25;
ПорядокРасчетов = СтруктураДанныеЗаполнения.ПорядокРасчетов;
ИначеЕсли ДанныеЗаполнения = Неопределено Тогда
ТипДоговора = Неопределено;
Сумма = 0;
РеализацияЧерезКонечногоКлиента = Ложь;
ВестиРасчетыЧерезКонечныхПокупателей = Ложь;
ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПустаяСсылка();
Иначе
ТипДоговора = ДанныеЗаполнения.ТипДоговора;
Сумма = ДанныеЗаполнения.Сумма;
ДоговорСКомиссионером = ДанныеЗаполнения.ДоговорСКомиссионером;
КомиссионныеПродажи25 = ДанныеЗаполнения.КомиссионныеПродажи25;
Если ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера
И ЗначениеЗаполнено(ДоговорСКомиссионером) Тогда
ВестиРасчетыЧерезКонечныхПокупателей = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДоговорСКомиссионером, "ВестиРасчетыЧерезКонечныхПокупателей");
Иначе
ВестиРасчетыЧерезКонечныхПокупателей = Ложь;
КонецЕсли;
ПорядокРасчетов = ДанныеЗаполнения.ПорядокРасчетов;
КонецЕсли;
ВлияющиеРеквизиты = "ТипДоговора,ДоговорСКомиссионером,КомиссионныеПродажи25,ПорядокРасчетов";
МассивПараметров = Новый Массив();
#Область ОсновнаяСтруктура
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.ЭтоСправочник = Истина;
СтруктураПараметров.МожетЯвлятьсяОбъектомРасчетов = ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
Или ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным;
Если ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.СХранителем
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.ПередачаВАренду
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.Субаренда
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.СКомитентомНаЗакупку
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера Тогда
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
Иначе
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСПоставщиком;
КонецЕсли;
СтруктураПараметров.ИзменяетПланОплаты = Сумма <> 0;
СтруктураПараметров.ИзменяетПланОтгрузкиПоставки = СтруктураПараметров.ИзменяетПланОплаты;
СтруктураПараметров.Дата = "Объект.Дата";
СтруктураПараметров.ВалютаДокумента = "Объект.ВалютаВзаиморасчетов";
СтруктураПараметров.СуммаДокумента = "Объект.Сумма";
Если ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера Тогда
Если Не ВестиРасчетыЧерезКонечныхПокупателей Тогда
СтруктураПараметров.Партнер = "Объект.КомиссионерПартнер";
СтруктураПараметров.Контрагент = "Объект.КомиссионерКонтрагент";
Иначе
СтруктураПараметров.Партнер = "Объект.Партнер";
КонецЕсли;
КонецЕсли;
СтруктураПараметров.Договор = "Объект.Ссылка";
СтруктураПараметров.ПорядокРасчетов = "Объект.ПорядокРасчетов";
СтруктураПараметров.Соглашение = "";
СтруктураПараметров.БанковскийСчетОрганизации = "Объект.БанковскийСчет";
СтруктураПараметров.Касса = "";
СтруктураПараметров.ФормаОплаты = "";
СтруктураПараметров.Менеджер = "Объект.Менеджер";
СтруктураПараметров.НомерВходящегоДокумента = "Объект.Номер";
СтруктураПараметров.ДатаВходящегоДокумента = "Объект.Дата";
СтруктураПараметров.ОперацияССамозанятым = "Объект.ДоговорССамозанятым";
Если ТипДоговора <> Перечисления.ТипыДоговоров.СКомиссионером
Или КомиссионныеПродажи25 Тогда
СтруктураПараметров.ОбъектРасчетов = "Объект.ОбъектРасчетов";
КонецЕсли;
СтруктураПараметров.ЭлементыФормы.ЗачетОплаты = ?(ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера,
"",
"ЗачетОплатыФорма");
СтруктураПараметров.ЭлементыФормы.НаправлениеДеятельности = "НаправлениеДеятельности";
#Область СостояниеВзаиморасчетов
СтруктураПараметров.ЭлементыФормы.НадписьРасчеты = "ДекорацияСостояниеРасчетов";
#КонецОбласти
#Область ОграниченияЗадолженностиПоДоговору
СтруктураПараметров.ЭлементыФормы.ОграничениеЗадолженностиТекст = "ДекорацияОграничениеЗадолженности";
СтруктураПараметров.ЭлементыФормы.ОграничениеЗадолженностиКартинка = "КартинкаОтгрузкаЗапрещена";
#КонецОбласти
СтруктураПараметров.ВлияющиеРеквизиты = ВлияющиеРеквизиты;
МассивПараметров.Добавить(СтруктураПараметров);
#КонецОбласти
#Область ДополнительнаяСтруктура
Если ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС
ИЛИ ТипДоговора = Перечисления.ТипыДоговоров.СКомитентом Тогда
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.ЭтоСправочник = Истина;
СтруктураПараметров.МожетЯвлятьсяОбъектомРасчетов = ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
Или ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным;
Если ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером Тогда
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСПоставщиком;
ИначеЕсли ТипДоговора = Перечисления.ТипыДоговоров.СКомитентом Тогда
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
ИначеЕсли ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5
Или ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС Тогда
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
КонецЕсли;
СтруктураПараметров.ИзменяетПланОплаты = Ложь;
СтруктураПараметров.ИзменяетПланОтгрузкиПоставки = Ложь;
СтруктураПараметров.Дата = "Объект.Дата";
СтруктураПараметров.ВалютаДокумента = "Объект.ВалютаВзаиморасчетов";
СтруктураПараметров.СуммаДокумента = "Объект.Сумма";
СтруктураПараметров.Партнер = "Объект.Партнер";
СтруктураПараметров.Договор = "Объект.Ссылка";
СтруктураПараметров.ПорядокРасчетов = "Объект.ПорядокРасчетов";
СтруктураПараметров.Соглашение = "";
СтруктураПараметров.БанковскийСчетОрганизации = "Объект.БанковскийСчет";
СтруктураПараметров.Касса = "";
СтруктураПараметров.ФормаОплаты = "";
СтруктураПараметров.Менеджер = "Объект.Менеджер";
СтруктураПараметров.НомерВходящегоДокумента = "Объект.Номер";
СтруктураПараметров.ДатаВходящегоДокумента = "Объект.Дата";
СтруктураПараметров.ВлияющиеРеквизиты = ВлияющиеРеквизиты;
МассивПараметров.Добавить(СтруктураПараметров);
КонецЕсли;
#КонецОбласти
Возврат МассивПараметров;
КонецФункции
Функция ТекстЗапросаТоварыКДоставке() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ТоварыКПоступлениюОстатки.ДокументПоступления КАК Ссылка,
| ТоварыКПоступлениюОстатки.Номенклатура КАК Номенклатура,
| ТоварыКПоступлениюОстатки.Характеристика КАК Характеристика,
| ТоварыКПоступлениюОстатки.Назначение КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ТоварыКПоступлениюОстатки.Склад КАК Склад,
| ТоварыКПоступлениюОстатки.КОформлениюОрдеровОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(, ДокументПоступления В (&Ссылки)) КАК ТоварыКПоступлениюОстатки";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "ТипДоговора,Менеджер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "ТипДоговора";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"ПорядокРасчетов", Параметры);
КонецПроцедуры
Процедура ЗаполнитьРеквизитыДокумента(Объект, Договор, СписокРеквизитов) Экспорт
Если ЗначениеЗаполнено(Договор) Тогда
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Договор, СписокРеквизитов);
Для Каждого ТекущийРеквизит Из СписокРеквизитов Цикл
Если ЗначениеЗаполнено(РеквизитыДоговора[ТекущийРеквизит.Ключ]) Тогда
Объект[ТекущийРеквизит.Ключ] = РеквизитыДоговора[ТекущийРеквизит.Ключ];
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьДанныеДляЭД(СсылкаНаОбъект) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДоговорыКонтрагентов.Номер,
| ДоговорыКонтрагентов.Дата,
| ДоговорыКонтрагентов.Сумма,
| ДоговорыКонтрагентов.СтавкаНДС,
| ДоговорыКонтрагентов.ВалютаВзаиморасчетов.Наименование КАК Валюта_Наименование,
| ДоговорыКонтрагентов.ВалютаВзаиморасчетов.Код КАК Валюта_Код,
| ДоговорыКонтрагентов.ДатаНачалаДействия,
| ДоговорыКонтрагентов.ДатаОкончанияДействия,
| ДоговорыКонтрагентов.ТипДоговора,
| ДоговорыКонтрагентов.ПорядокРасчетов,
| ДоговорыКонтрагентов.СрокОплаты,
| ДоговорыКонтрагентов.Организация КАК Организация,
| ДоговорыКонтрагентов.Организация.ЮрФизЛицо КАК Организация_ЮрФизЛицо,
| ДоговорыКонтрагентов.БанковскийСчет,
| ДоговорыКонтрагентов.БанковскийСчет.Банк.Код КАК Организация_БанковскийСчет_БИК,
| ДоговорыКонтрагентов.БанковскийСчет.Банк.Наименование КАК
| Организация_БанковскийСчет_НаименованиеБанка,
| ДоговорыКонтрагентов.БанковскийСчет.НомерСчета КАК Организация_БанковскийСчет_НомерСчета,
| ДоговорыКонтрагентов.БанковскийСчет.Банк.КоррСчет КАК Организация_БанковскийСчет_КоррСчет,
| ДоговорыКонтрагентов.БанковскийСчет.Банк.ИНН КАК Организация_БанковскийСчет_ИНН,
| ДоговорыКонтрагентов.Контрагент КАК Контрагент,
| ДоговорыКонтрагентов.Контрагент.ЮрФизЛицо КАК Контрагент_ЮрФизЛицо,
| ДоговорыКонтрагентов.БанковскийСчетКонтрагента,
| ДоговорыКонтрагентов.Контрагент.РегистрационныйНомер КАК Контрагент_ИдентификаторЮридическогоЛица,
| ДоговорыКонтрагентов.БанковскийСчетКонтрагента.Банк.Код КАК Контрагент_БанковскийСчет_БИК,
| ДоговорыКонтрагентов.БанковскийСчетКонтрагента.Банк.Наименование КАК
| Контрагент_БанковскийСчет_НаименованиеБанка,
| ДоговорыКонтрагентов.БанковскийСчетКонтрагента.НомерСчета КАК Контрагент_БанковскийСчет_НомерСчета,
| ДоговорыКонтрагентов.БанковскийСчетКонтрагента.Банк.КоррСчет КАК Контрагент_БанковскийСчет_КоррСчет,
| ДоговорыКонтрагентов.БанковскийСчетКонтрагента.Банк.ИНН КАК Контрагент_БанковскийСчет_ИНН
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
Возврат Запрос.Выполнить().Выбрать();
КонецФункции
Функция ЭтоДоговорСКлиентом(ТипДоговора) Экспорт
ЭтоДоговорСКлиентом = Ложь;
Если ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера
Или ВзаиморасчетыКлиентСервер.ТипыДоговоровСКлиентом().НайтиПоЗначению(ТипДоговора) <> Неопределено Тогда
ЭтоДоговорСКлиентом = Истина;
КонецЕсли;
Возврат ЭтоДоговорСКлиентом;
КонецФункции
Функция ПроверитьФлагиПартнераКлиентПоставщик(Партнер,
ХозяйственнаяОперация,
ЭтоНовыйДоговор,
ВыводитьСообщенияПользователю,
ФлагиПартнера = Неопределено,
ТекстСообщения = "") Экспорт
Отказ = Ложь;
Если ЗначениеЗаполнено(Партнер) Тогда
ОперацииЗакупки = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(
Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ОперацииИмпорта = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
ОперацииВСтранахЕАЭС = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(
Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС);
ОперацииПроизводстваУПереработчика2_5 = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(
Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5);
Если ФлагиПартнера = Неопределено Тогда
ФлагиПартнера = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Партнер, "Клиент, Поставщик");
КонецЕсли;
Если Не ФлагиПартнера.Клиент = Истина И Не ФлагиПартнера.Поставщик = Истина Тогда
Отказ = Истина;
Если ЭтоНовыйДоговор Тогда
ТекстСообщения = НСтр("ru = 'Создание договора возможно для партнеров с признаками ""Клиент/Поставщик""'");
Иначе
ТекстСообщения = НСтр("ru = 'Для выбранного партнера должен быть установлен признак ""Клиент/Поставщик""'");
КонецЕсли;
ИначеЕсли Не ФлагиПартнера.Клиент = Истина
И (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера) Тогда
Отказ = Истина;
Если ЭтоНовыйДоговор Тогда
ТекстСообщения = НСтр("ru = 'Создание договора с клиентом возможно для партнеров с признаком ""Клиент""'");
Иначе
ТекстСообщения = НСтр("ru = 'Для выбранного партнера должен быть установлен признак ""Клиент""'");
КонецЕсли;
ИначеЕсли Не ФлагиПартнера.Поставщик = Истина
И Не (ОперацииЗакупки.Найти(ХозяйственнаяОперация) = Неопределено
Или Не ОперацииИмпорта.Найти(ХозяйственнаяОперация) = Неопределено
Или Не ОперацииВСтранахЕАЭС.Найти(ХозяйственнаяОперация) = Неопределено
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика
Или Не ОперацииПроизводстваУПереработчика2_5.Найти(ХозяйственнаяОперация) = Неопределено
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи) Тогда
Отказ = Истина;
Если ЭтоНовыйДоговор Тогда
ТекстСообщения = НСтр("ru = 'Создание договора с поставщиком возможно для партнеров с признаком ""Поставщик""'");
Иначе
ТекстСообщения = НСтр("ru = 'Для выбранного партнера должен быть установлен признак ""Поставщик""'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Отказ И ВыводитьСообщенияПользователю Тогда
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
Возврат Не Отказ;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК Т
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИерархияПартнеров КАК Т2
| ПО Т2.Родитель = Т.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.Филиалы КАК Филиалы
| ПО Филиалы.Ссылка = Т.Ссылка
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Т2.Партнер)
| И (ЗначениеРазрешено(Т.Организация)
| ИЛИ ЗначениеРазрешено(Филиалы.Организация))
| И ЗначениеРазрешено(Т.ХозяйственнаяОперация)
| И ЗначениеРазрешено(Т.Подразделение)";
Ограничение.ТекстДляВнешнихПользователей =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК ЭтотСписок
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиПартнеры
| ПО ВнешниеПользователиПартнеры.ОбъектАвторизации = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
| ПО КонтактныеЛицаПартнеров.Владелец = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиКонтактныеЛица
| ПО ВнешниеПользователиКонтактныеЛица.ОбъектАвторизации = КонтактныеЛицаПартнеров.Ссылка
|
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИерархияПартнеров КАК ИерархияПартнеров
| ПО ИерархияПартнеров.Родитель = ЭтотСписок.Партнер
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(ВнешниеПользователиПартнеры.Ссылка)
| ИЛИ ЗначениеРазрешено(ВнешниеПользователиКонтактныеЛица.Ссылка)
| ИЛИ ЗначениеРазрешено(ИерархияПартнеров.Партнер)";
КонецПроцедуры
Процедура ПриОпределенииДоступныхВидовОповещенийПользователей(ОписаниеВидовОповещений) Экспорт
ГруппаВидаОповещенийДоговоры = ОповещенияПользователейОСобытиях.ГруппаВидаОповещений("ДоговорыКонтрагентов");
НовыйВидОповещений = ОповещенияПользователейОСобытиях.ДобавитьОписаниеВидаОповещенийПользователей(ОписаниеВидовОповещений);
НовыйВидОповещений.ГруппаВидаОповещений = ГруппаВидаОповещенийДоговоры;
НовыйВидОповещений.Идентификатор = "fc0af7b5-12da-43d8-a416-8c713dd5d4aa";
НовыйВидОповещений.Наименование = НСтр("ru = 'Приближение даты окончания действия договора'", ОбщегоНазначения.КодОсновногоЯзыка());
НовыйВидОповещений.ТипОповещения = Перечисления.ТипыОповещенийПользователей.Неоперативное;
НовыйВидОповещений.ИмяШаблонаСКД = Метаданные.Справочники.ДоговорыКонтрагентов.Макеты.Оповещения_ОкончаниеСрокаДействияПриближается.ПолноеИмя();
НовыйВидОповещений.ШаблонТекстаОповещения = "ru = 'Заканчивается срок действия договора [ДатаОкончанияДействия].'";
НовыйВидОповещений.ТекстСгруппированногоОповещения = "ru = 'Заканчивается срок действия договора.'";
НовыйВидОповещений = ОповещенияПользователейОСобытиях.ДобавитьОписаниеВидаОповещенийПользователей(ОписаниеВидовОповещений);
НовыйВидОповещений.ГруппаВидаОповещений = ГруппаВидаОповещенийДоговоры;
НовыйВидОповещений.Идентификатор = "88ea3524-fcef-48e5-907f-b339b1886347";
НовыйВидОповещений.Наименование = НСтр("ru = 'Окончание срока действия договора'", ОбщегоНазначения.КодОсновногоЯзыка());
НовыйВидОповещений.ТипОповещения = Перечисления.ТипыОповещенийПользователей.Неоперативное;
НовыйВидОповещений.ИмяШаблонаСКД = Метаданные.Справочники.ДоговорыКонтрагентов.Макеты.Оповещения_ОкончаниеСрокаДействияПросрочено.ПолноеИмя();
НовыйВидОповещений.ШаблонТекстаОповещения = "ru = 'Закончился срок действия договора [ДатаОкончанияДействия].'";
НовыйВидОповещений.ТекстСгруппированногоОповещения = "ru = 'Закончился срок действия договора.'";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Запрос = Новый Запрос;
ТекстСоединений = "";
ТекстУсловий = "";
НомерОтбора = 0;
Если Параметры.Свойство("Партнер") Тогда
Запрос.УстановитьПараметр("Партнер", Параметры.Партнер);
ТекстСоединений = ТекстСоединений + "
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ИерархияПартнеров КАК ИерархияПартнеров
| ПО Договоры.Партнер = ИерархияПартнеров.Родитель
| И ИерархияПартнеров.Партнер = &Партнер
| И (Договоры.РазрешенаРаботаСДочернимиПартнерами
| ИЛИ ИерархияПартнеров.Родитель = &Партнер)";
СтандартнаяОбработка = Ложь;
КонецЕсли;
ПроверятьСоглашение = Истина;
Если Параметры.Свойство("Отбор") Тогда
ОтборПараметров = Параметры.Отбор;
Если ОтборПараметров.Свойство("ХозяйственнаяОперация")
И ОтборПараметров.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5 Тогда
ПроверятьСоглашение = Ложь;
КонецЕсли;
КонецЕсли;
Если ПроверятьСоглашение И Параметры.Свойство("Соглашение") Тогда
ПоСоглашениюИспользуютсяДоговорыКонтрагентов = Ложь;
Если ЗначениеЗаполнено(Параметры.Соглашение) Тогда
УстановитьПривилегированныйРежим(Истина);
ПоСоглашениюИспользуютсяДоговорыКонтрагентов = ОбщегоНазначенияУТВызовСервера.ЗначенияРеквизитовОбъекта(Параметры.Соглашение, "ИспользуютсяДоговорыКонтрагентов");
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Если ПоСоглашениюИспользуютсяДоговорыКонтрагентов = Ложь Тогда
Запрос.УстановитьПараметр("Соглашение", Параметры.Соглашение);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами")
И Тип("СправочникСсылка.СоглашенияСКлиентами") = ТипЗнч(Параметры.Соглашение) Тогда
ТекстСоединений = ТекстСоединений + "
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами КАК СоглашенияСКлиентами
| ПО Договоры.ОплатаВВалюте = СоглашенияСКлиентами.ОплатаВВалюте
| И СоглашенияСКлиентами.Ссылка = &Соглашение";
СтандартнаяОбработка = Ложь;
ИначеЕсли ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСПоставщиками")
И Тип("СправочникСсылка.СоглашенияСПоставщиками") = ТипЗнч(Параметры.Соглашение)
И ЗначениеЗаполнено(Параметры.Соглашение) Тогда
ТекстСоединений = ТекстСоединений + "
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СоглашенияСПоставщиками КАК СоглашенияСПоставщиками
| ПО Договоры.ОплатаВВалюте = СоглашенияСПоставщиками.ОплатаВВалюте
| И СоглашенияСПоставщиками.Ссылка = &Соглашение";
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Параметры.Свойство("НалогообложениеНДС") Тогда
Запрос.УстановитьПараметр("УчетАгентскогоНДС",
Параметры.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.НалоговыйАгентПоНДС);
ТекстУсловий = ТекстУсловий + "
| И Договоры.УчетАгентскогоНДС = &УчетАгентскогоНДС";
СтандартнаяОбработка = Ложь;
КонецЕсли;
Если Параметры.Свойство("Отбор") Тогда
Для Каждого ТекущийОтбор Из Параметры.Отбор Цикл
Если ТекущийОтбор.Ключ = "Организация" Тогда
ТекстУсловий = ТекстУсловий + "
| И (Договоры.Организация В (&Организация)
| ИЛИ Договоры.Филиалы.Организация В (&Организация))";
Запрос.УстановитьПараметр("Организация", ТекущийОтбор.Значение);
СтандартнаяОбработка = Ложь;
Продолжить;
ИначеЕсли ТекущийОтбор.Ключ = "Контрагент"
И ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов") Тогда
Если Не Запрос.Параметры.Свойство("Партнер") Тогда
Запрос.УстановитьПараметр("Контрагент", ТекущийОтбор.Значение);
ТекстСоединений = ТекстСоединений + "
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО Договоры.Партнер = Контрагенты.Партнер
| И Контрагенты.Ссылка = &Контрагент";
СтандартнаяОбработка = Ложь;
КонецЕсли;
Продолжить;
ИначеЕсли ТекущийОтбор.Ключ = "ХозяйственнаяОперация" Тогда
Если ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности Тогда
ТекстУсловий = ТекстУсловий + "
| И Договоры.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту)";
СтандартнаяОбработка = Ложь;
Продолжить;
КонецЕсли;
Если Параметры.Свойство("ПоказыватьЗакупкуПоИмпорту")
И (ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика
Или ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути
Или ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки) Тогда
ТекстУсловий = ТекстУсловий + "
| И Договоры.ХозяйственнаяОперация В(ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпорту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПроизводствоУПереработчика),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки))";
СтандартнаяОбработка = Ложь;
Продолжить;
КонецЕсли;
Если Параметры.Свойство("ПоказыватьДоговорыРаздельнойЗакупки")
И (ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика
Или ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту
Или ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС) Тогда
ТекстУсловий = ТекстУсловий + "
| И Договоры.ХозяйственнаяОперация В(&ХозяйственныеОперацииРаздельнойЗакупки)";
Запрос.УстановитьПараметр("ХозяйственныеОперацииРаздельнойЗакупки",
ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(ТекущийОтбор.Значение));
Если Параметры.Свойство("ПоказыватьПроизводствоУПереработчика") Тогда
Если ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5") Тогда
Если ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Запрос.Параметры.ХозяйственныеОперацииРаздельнойЗакупки,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5));
ИначеЕсли ТекущийОтбор.Значение = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Запрос.Параметры.ХозяйственныеОперацииРаздельнойЗакупки,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчикаВСтранахЕАЭС2_5));
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Продолжить;
КонецЕсли;
Если Параметры.Свойство("ПереработкаВСтранахЕАЭС") Тогда
ТекстУсловий = ТекстУсловий + "
| И Договоры.ХозяйственнаяОперация В(&ХозяйственныеОперацииПереработки)";
Запрос.УстановитьПараметр("ХозяйственныеОперацииПереработки",
ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(ТекущийОтбор.Значение));
СтандартнаяОбработка = Ложь;
Продолжить;
КонецЕсли;
ИначеЕсли ТекущийОтбор.Ключ = "КомиссионныеПродажи25" Тогда
ТекстУсловий = ТекстУсловий + "
| И Договоры.КомиссионныеПродажи25 = &КомиссионныеПродажи25";
Запрос.УстановитьПараметр("КомиссионныеПродажи25", ТекущийОтбор.Значение);
СтандартнаяОбработка = Ложь;
Продолжить;
ИначеЕсли ТекущийОтбор.Ключ = "ПодходитДляПодбораВДоговорЗаказчика" Тогда
ТекстУсловий = ТекстУсловий + "
| И ВЫБОР
| КОГДА Договоры.ТипДоговора = ЗНАЧЕНИЕ(Перечисление.ТипыДоговоров.СПокупателем)
| И Договоры.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту)
| ИЛИ Договоры.ТипДоговора = ЗНАЧЕНИЕ(Перечисление.ТипыДоговоров.СДавальцем2_5)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ = &ПодходитДляПодбораВДоговорЗаказчика";
Запрос.УстановитьПараметр("ПодходитДляПодбораВДоговорЗаказчика", ТекущийОтбор.Значение);
СтандартнаяОбработка = Ложь;
Продолжить;
КонецЕсли;
НомерОтбора = НомерОтбора + 1;
ТекстУсловий = ТекстУсловий + "
| И Договоры." + ТекущийОтбор.Ключ + " В (&ЗначениеОтбора" + СокрЛП(НомерОтбора) + ")";
Запрос.УстановитьПараметр("ЗначениеОтбора" + СокрЛП(НомерОтбора), ТекущийОтбор.Значение);
КонецЦикла;
КонецЕсли;
Если Не СтандартнаяОбработка Тогда
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Договоры.Ссылка КАК Ссылка,
| Договоры.Наименование КАК Наименование,
| Договоры.Наименование КАК Совпадение,
| 1 КАК Порядок
|ПОМЕСТИТЬ ДоговорыПоиск
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК Договоры
|
|,&ТекстСоединений
|
|ГДЕ
| Договоры.Наименование ПОДОБНО &СтрокаПоиска СПЕЦСИМВОЛ ""~""
| И &ТекстУсловий
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Договоры.Ссылка,
| Договоры.Наименование,
| Договоры.Номер,
| 2
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК Договоры
|
|,&ТекстСоединений
|
|ГДЕ
| Договоры.Номер ПОДОБНО &СтрокаПоиска СПЕЦСИМВОЛ ""~""
| И &ТекстУсловий
|;
|
|
|ВЫБРАТЬ
| ДоговорыПоиск.Ссылка КАК Ссылка,
| МИНИМУМ(ДоговорыПоиск.Порядок) КАК Порядок
|ПОМЕСТИТЬ ДоговорыПоПорядку
|ИЗ
| ДоговорыПоиск КАК ДоговорыПоиск
|
|СГРУППИРОВАТЬ ПО
| ДоговорыПоиск.Ссылка
|;
|
|
|ВЫБРАТЬ
| ЕСТЬNULL(ДоговорыПоиск.Ссылка, ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)) КАК Ссылка,
| ЕСТЬNULL(ДоговорыПоиск.Наименование, """") КАК Наименование,
| ЕСТЬNULL(ДоговорыПоиск.Совпадение, """") КАК Совпадение,
| ЕСТЬNULL(ДоговорыПоиск.Порядок, 0) КАК Порядок
|ИЗ
| ДоговорыПоПорядку КАК ДоговорыПоПорядку
| ЛЕВОЕ СОЕДИНЕНИЕ ДоговорыПоиск КАК ДоговорыПоиск
| ПО ДоговорыПоПорядку.Ссылка = ДоговорыПоиск.Ссылка
| И ДоговорыПоПорядку.Порядок = ДоговорыПоиск.Порядок
|
|УПОРЯДОЧИТЬ ПО
| ЕСТЬNULL(ДоговорыПоиск.Порядок, 0),
| ЕСТЬNULL(ДоговорыПоиск.Совпадение, """"),
| ЕСТЬNULL(ДоговорыПоиск.Наименование, """")";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ТекстСоединений", ТекстСоединений);
Если Не ПустаяСтрока(ТекстУсловий) Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ТекстУсловий", ТекстУсловий);
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ТекстУсловий", "");
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("СтрокаПоиска", ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе(Параметры.СтрокаПоиска) + "%");
ДанныеВыбора = Новый СписокЗначений;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ТекстЗначение = ?(
Выборка.Порядок = 1,
Выборка.Наименование,
СокрП(Выборка.Совпадение) + " (" + Выборка.Наименование + ")");
ДанныеВыбора.Добавить(Выборка.Ссылка, ТекстЗначение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Назначения
Функция ШаблонНазначения(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентомНаЗакупку Тогда
Если НаправленияДеятельностиСервер.ЭтоНаправлениеДеятельностиСОбособлениемТоваровИРабот(Объект.НаправлениеДеятельности) Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
ШаблонНазначения.Партнер = Объект.Партнер;
ШаблонНазначения.Договор = Объект.Ссылка;
ШаблонНазначения.ТипНазначения = Перечисления.ТипыНазначений.ПоставкаПодПринципала;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком
Или Ложь Тогда
Если НаправленияДеятельностиСервер.ЭтоНаправлениеДеятельностиСОбособлениемТоваровИРабот(Объект.НаправлениеДеятельности) Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
ШаблонНазначения.Партнер = Объект.Партнер;
ШаблонНазначения.Договор = Объект.Ссылка;
КонецЕсли;
Возврат ШаблонНазначения;
КонецФункции
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ОбщиеПараметрыЗапросов = ТекущиеДелаСлужебный.ОбщиеПараметрыЗапросов();
ЗаполнитьДелоДоговорыСКлиентами(ТекущиеДела, ОбщиеПараметрыЗапросов);
ЗаполнитьДелоДоговорыСПоставщиками(ТекущиеДела, ОбщиеПараметрыЗапросов);
КонецПроцедуры
Процедура ЗаполнитьДелоДоговорыСКлиентами(ТекущиеДела, ОбщиеПараметрыЗапросов)
ИмяФормы = "Справочник.ДоговорыКонтрагентов.Форма.ФормаСпискаПродажи";
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Справочники.ДоговорыКонтрагентов))
И ДоступныДоговорыСКлиентами();
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА ДоговорСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.НеСогласован)
| ТОГДА ДоговорСКлиентом.Ссылка
| КОНЕЦ) КАК ДоговорыСКлиентамиНаСогласовании,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА ДоговорСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.НеСогласован)
| И (ДоговорСКлиентом.ДатаНачалаДействия <> ДАТАВРЕМЯ(1, 1, 1)
| И ДоговорСКлиентом.ДатаНачалаДействия < &ДатаАктуальности
| ИЛИ ДоговорСКлиентом.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1, 1, 1)
| И ДоговорСКлиентом.ДатаОкончанияДействия < &ДатаАктуальности)
| ТОГДА ДоговорСКлиентом.Ссылка
| КОГДА ДоговорСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Действует)
| И ДоговорСКлиентом.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1, 1, 1)
| И ДоговорСКлиентом.ДатаОкончанияДействия < &ДатаАктуальности
| ТОГДА ДоговорСКлиентом.Ссылка
| КОНЕЦ) КАК ДоговорыСКлиентамиПросроченные
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорСКлиентом
|ГДЕ
| ДоговорСКлиентом.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Закрыт)
| И (ДоговорСКлиентом.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту)
| ИЛИ ДоговорСКлиентом.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| ИЛИ ДоговорСКлиентом.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи))
| И ДоговорСКлиентом.Менеджер = &Пользователь
| И (НЕ ДоговорСКлиентом.ПометкаУдаления)";
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ДоговорыСКлиентами";
ДелоРодитель.Представление = НСтр("ru = 'Договоры с клиентами'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Продажи;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", Перечисления.СостоянияДоговоровКонтрагентов.ОжидаетсяСогласование);
ПараметрыОтбора.Вставить("Актуальность", "");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Организация", Неопределено);
ПараметрыОтбора.Вставить("Контрагент", Неопределено);
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ДоговорыСКлиентамиНаСогласовании";
Дело.ЕстьДела = Результат.ДоговорыСКлиентамиНаСогласовании > 0;
Дело.Представление = НСтр("ru = 'Договоры на согласовании'");
Дело.Количество = Результат.ДоговорыСКлиентамиНаСогласовании;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ДоговорыСКлиентами";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", Неопределено);
ПараметрыОтбора.Вставить("Актуальность", "Просроченные");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Организация", Неопределено);
ПараметрыОтбора.Вставить("Контрагент", Неопределено);
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ДоговорыСКлиентамиПросроченные";
Дело.ЕстьДела = Результат.ДоговорыСКлиентамиПросроченные > 0;
Дело.Представление = НСтр("ru = 'Просроченные договоры'");
Дело.Количество = Результат.ДоговорыСКлиентамиПросроченные;
Дело.Важное = Истина;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ДоговорыСКлиентами";
Если Результат.ДоговорыСКлиентамиНаСогласовании > 0
Или Результат.ДоговорыСКлиентамиПросроченные > 0 Тогда
ДелоРодитель.ЕстьДела = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьДелоДоговорыСПоставщиками(ТекущиеДела, ОбщиеПараметрыЗапросов)
ИмяФормы = "Справочник.ДоговорыКонтрагентов.Форма.ФормаСпискаЗакупки";
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Справочники.ДоговорыКонтрагентов))
И ДоступныДоговорыСПоставщиками();
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА ДоговорСПоставщиком.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.НеСогласован)
| ТОГДА ДоговорСПоставщиком.Ссылка
| КОНЕЦ) КАК ДоговорыСПоставщикамиНаСогласовании,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА ДоговорСПоставщиком.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.НеСогласован)
| И (ДоговорСПоставщиком.ДатаНачалаДействия <> ДАТАВРЕМЯ(1, 1, 1)
| И ДоговорСПоставщиком.ДатаНачалаДействия < &ДатаАктуальности
| ИЛИ ДоговорСПоставщиком.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1, 1, 1)
| И ДоговорСПоставщиком.ДатаОкончанияДействия < &ДатаАктуальности)
| ТОГДА ДоговорСПоставщиком.Ссылка
| КОГДА ДоговорСПоставщиком.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Действует)
| И ДоговорСПоставщиком.ДатаОкончанияДействия <> ДАТАВРЕМЯ(1, 1, 1)
| И ДоговорСПоставщиком.ДатаОкончанияДействия < &ДатаАктуальности
| ТОГДА ДоговорСПоставщиком.Ссылка
| КОНЕЦ) КАК ДоговорыСПоставщикамиПросроченные
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорСПоставщиком
|ГДЕ
| ДоговорСПоставщиком.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Закрыт)
| И (ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика)
| ИЛИ ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути)
| ИЛИ ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки)
| ИЛИ ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпорту)
| ИЛИ ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути)
| ИЛИ ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС)
| ИЛИ ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| ИЛИ ДоговорСПоставщиком.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи))
| И ДоговорСПоставщиком.Менеджер = &Пользователь
| И (НЕ ДоговорСПоставщиком.ПометкаУдаления)";
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ДоговорыСПоставщиками";
ДелоРодитель.Представление = НСтр("ru = 'Договоры с поставщиками'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Закупки;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", Перечисления.СостоянияДоговоровКонтрагентов.ОжидаетсяСогласование);
ПараметрыОтбора.Вставить("Актуальность", "");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Организация", Неопределено);
ПараметрыОтбора.Вставить("Контрагент", Неопределено);
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ДоговорыСПоставщикамиНаСогласовании";
Дело.ЕстьДела = Результат.ДоговорыСПоставщикамиНаСогласовании > 0;
Дело.Представление = НСтр("ru = 'Договоры на согласовании'");
Дело.Количество = Результат.ДоговорыСПоставщикамиНаСогласовании;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ДоговорыСПоставщиками";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", Неопределено);
ПараметрыОтбора.Вставить("Актуальность", "Просроченные");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Организация", Неопределено);
ПараметрыОтбора.Вставить("Контрагент", Неопределено);
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ДоговорыСПоставщикамиПросроченные";
Дело.ЕстьДела = Результат.ДоговорыСПоставщикамиПросроченные > 0;
Дело.Представление = НСтр("ru = 'Просроченные договоры'");
Дело.Количество = Результат.ДоговорыСПоставщикамиПросроченные;
Дело.Важное = Истина;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ДоговорыСПоставщиками";
Если Результат.ДоговорыСПоставщикамиНаСогласовании > 0
Или Результат.ДоговорыСПоставщикамиПросроченные > 0 Тогда
ДелоРодитель.ЕстьДела = Истина;
КонецЕсли;
КонецПроцедуры
Функция ДоступныДоговорыСКлиентами()
МассивХозяйственныхОпераций = Новый Массив;
МассивХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.РеализацияКлиенту);
МассивХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
МассивХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
Возврат ЕстьПравоНаИзменениеДоговоров(МассивХозяйственныхОпераций);
КонецФункции
Функция ДоступныДоговорыСПоставщиками()
МассивХозяйственныхОпераций = Новый Массив;
МассивХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
МассивХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПриемНаКомиссию);
МассивХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи);
Возврат ЕстьПравоНаИзменениеДоговоров(МассивХозяйственныхОпераций);
КонецФункции
Функция ЕстьПравоНаИзменениеДоговоров(МассивХозяйственныхОпераций)
ТаблицаНаборы = УправлениеДоступом.ТаблицаНаборыЗначенийДоступа();
Сч = 1;
Для Каждого ХозяйственнаяОперация Из МассивХозяйственныхОпераций Цикл
СтрокаТаб = ТаблицаНаборы.Добавить();
СтрокаТаб.НомерНабора = Сч;
СтрокаТаб.ЗначениеДоступа = ХозяйственнаяОперация;
Сч = Сч+1;
КонецЦикла;
Возврат УправлениеДоступом.ЕстьРоль("ДобавлениеИзменениеДоговоровКонтрагентов", ТаблицаНаборы);
КонецФункции
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
ДоговорыКонтрагентовЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
#КонецОбласти
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = ВзаиморасчетыСервер.ВедомостьРасчетовСПартнерами_ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСписка,ФормаСпискаПродажи";
КонецЕсли;
КомандаОтчет = Отчеты.СправкаРасчетНачисленияПроцентныхРасходовДисконтирования.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСпискаЗакупки";
КонецЕсли;
КомандаОтчет = Отчеты.ДействующиеРетроБонусыПоДоговору.ДобавитьКомандуОтчета(
КомандыОтчетов,
"ДействующиеРетроБонусыПоДоговоруКонтекст");
Если КомандаОтчет <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
КомандаОтчет,
"ТипДоговора",
Перечисления.ТипыДоговоров.СПокупателем,
ВидСравненияКомпоновкиДанных.Равно);
КомандаОтчет.ВидимостьВФормах = "ФормаЭлемента,ФормаСпискаПродажи,ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.ДействующиеРетроБонусыПоставщиков.ДобавитьКомандуОтчета(
КомандыОтчетов, Параметры, "ДействующиеРетроБонусыПоставщиковКонтекст");
Если КомандаОтчет <> Неопределено Тогда
Представление = НСтр("ru = 'Действующие ретро-бонусы поставщика'");
КомандаОтчет.Представление = Представление;
ТипыДоговоров = РетроБонусыКлиентСервер.ТипыДоговоровЗакупки();
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
КомандаОтчет,
"ТипДоговора",
ТипыДоговоров,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияДоговора(КомандыОтчетов);
ДоговорыКонтрагентовЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли