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