У меня задача решена так, в документе создана кнопка заполнить ГТД ниже кусок кода выбора и заполнения. релиз 10,3,47,3
Для Каждого СтрокаТабличнойЧасти из Товары Цикл
//Заполняем ГТД****************************************************************
// СтрокаТабличнойЧасти=ЭлементыФормы.Товары.ТекущиеДанные;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Владелец", СтрокаТабличнойЧасти.Номенклатура);
Запрос.Текст =
"ВЫБРАТЬ
| СерииНоменклатуры.Ссылка КАК Серия
|ИЗ
| Справочник.СерииНоменклатуры КАК СерииНоменклатуры
|ГДЕ
| СерииНоменклатуры.Владелец = &Владелец";
Попытка
//СтрокаТабличнойЧасти.СерияНоменклатуры = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Серия")[0]; //это было
//____________________тут я добавила. начало(
ТЗ = Запрос.Выполнить().Выгрузить();
ДатаГТД = Новый ОписаниеТипов("Строка");
ТЗ.Колонки.Добавить("ДатаГТД",ДатаГТД,"ДатаГТД");
Ошибка = Новый ОписаниеТипов("Число"); //потом в отборе нужно будет удалить строки, где неправильный формат даты ГТД
ТЗ.Колонки.Добавить("Ошибка",Ошибка,"Ошибка");
ДатаГТДДата = Новый ОписаниеТипов("Дата");
ТЗ.Колонки.Добавить("ДатаГТДДата",ДатаГТДДата,"ДатаГТДДата");
Для Каждого стр Из ТЗ Цикл
стр.ДатаГТД = Строка(стр.Серия);//преобразуем элемент справочника в Строку
стр.ДатаГТД = СтрЗаменить(стр.ДатаГТД,Лев(СокрЛП(стр.ДатаГТД),Найти(СокрЛП(стр.ДатаГТД),"/")-1),"");//находим подстроку до знака "/",заменяем её на пустую строку
стр.ДатаГТД = Прав(стр.ДатаГТД, СтрДлина(стр.ДатаГТД)-1);//слева удаляем знак "/"
стр.ДатаГТД = Лев(СокрЛП(стр.ДатаГТД),Найти(СокрЛП(стр.ДатаГТД),"/")-1); //берем как дату ГТД подстроку до знака /
Если СтрДлина(стр.ДатаГТД)=6 Тогда //обрабатываем только номера ГТД, где число символов во втором блоке = 6
стр.Ошибка = 0;
Если ЗначениеЗаполнено(стр.ДатаГТД) Тогда
Год = Строка("20" + Прав(стр.ДатаГТД,2)); //вычисляем год как строка 20 + 2 знака справа из ДатыГТД
Месяц = Прав(Лев(стр.ДатаГТД,4),2); //месяц как 4 знака слева, потом 2 знака справа
День = Лев(стр.ДатаГТД,2); //2 знака слева
Год1 = Число(Год); //фигарим всё в числа
Если Год1>Год(ТекущаяДата()) Тогда Год1 = Год1-100; Год = Строка("19" + Прав(стр.ДатаГТД,2)); КонецЕсли; //если год больше чем щас, то отнимем сотню
Месяц1 = Число(Месяц);
День1 = Число(День);
Если Месяц1>12 или Месяц1<=0 или День1>31 или День1<=0 или Год1>Год(ТекущаяДата()) Тогда
//Сообщить(Год+"."+Месяц+"."+День+"-странная дата!!! "+стр.НомерГТДСнова+" - Номер данного ГТД."); - неадекватные ГТД
стр.ДатаГТДДата = Дата(1990,1,1); //Если дата неадекватная, то приводим её к виду 01.01.1990
Иначе
стр.ДатаГТДДата = Дата(Год1,Месяц1,День1);//адекватные даты приводим к типу дата
КонецЕсли
КонецЕсли;
Иначе стр.Ошибка = 1;
КонецЕсли;
КонецЦикла;
Для каждого т Из ТЗ.НайтиСтроки(Новый Структура("Ошибка", 1)) Цикл
ТЗ.Удалить(т); //удалим лишние строки
КонецЦикла;
ТЗ.Сортировать("ДатаГТДДата УБЫВ");
СтрокаТЗ = ТЗ.Получить(0);
Сообщить(СтрокаТЗ.ДатаГТДДата);
СтрокаТабличнойЧасти.СерияНоменклатуры=СтрокаТЗ.Серия;
Показать