&После("ЗаполнитьВидыЗапасов")
Процедура ГТД_ЗаполнитьВидыЗапасов(Отказ)
ПустойГТД = Справочники.НомераГТД.ПустаяСсылка();
Для Каждого строка_ВидЗапаса Из ВидыЗапасов Цикл
Если строка_ВидЗапаса.КоличествоУпаковок >= 0 Тогда
Продолжить;
КонецЕсли;
Если строка_ВидЗапаса.НомерГТД <> ПустойГТД Тогда
Продолжить;
КонецЕсли;
текАналитикаУчетаНоменклатуры = строка_ВидЗапаса.АналитикаУчетаНоменклатуры;
Если НЕ ЗначениеЗаполнено(текАналитикаУчетаНоменклатуры) Тогда
Продолжить;
КонецЕсли;
текНоменклатура = текАналитикаУчетаНоменклатуры.Номенклатура;
Если НЕ ЗначениеЗаполнено(текНоменклатура) Тогда
Продолжить;
КонецЕсли;
Если НЕ текНоменклатура.ВестиУчетПоГТД Тогда
Продолжить;
КонецЕсли;
// подбирает ГТД
новый_НомерГТД = ПолучитьГТД( текНоменклатура, Контрагент );
// устанавливаем ГТД в ВидыЗапасов
Если новый_НомерГТД <> Неопределено И новый_НомерГТД <> ПустойГТД Тогда
строка_ВидЗапаса.НомерГТД = новый_НомерГТД;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ПолучитьГТД( текНоменклатура, текКонтрагент )
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| Регистратор,
| НомерГТД КАК НомерГТД
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Обороты(, , Регистратор, ) КАК ТоварыОрганизацийОбороты
|ГДЕ
| АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура
| И АналитикаУчетаНоменклатуры.Контрагент = &Контрагент
| И НомерГТД <> ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка)
| И Регистратор ССЫЛКА Документ.ПередачаТоваровХранителю //Передача на комиссию
|
|УПОРЯДОЧИТЬ ПО
| Период УБЫВ
|";
Запрос.УстановитьПараметр("Контрагент", текКонтрагент);
Запрос.УстановитьПараметр("Номенклатура", текНоменклатура);
Выборка = Запрос.ВЫПОЛНИТЬ().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.НомерГТД;
КонецЕсли;
Возврат Неопределено;
КонецФункции