Подскажите что не так?
Существует справочник Групповые, в справочнике есть реквизит наименование, район и табличная часть Улицы (Реквизиты - Улица и Дом). Есть файл excel с колонками Район, Улица, Дом. Пытаюсь закачать файл с проверкой по, загрузить в табличную часть улицы и дома с одинаковым районом.
(7) Ermak, давайте определимся, что Вы хотите получить. В вышеприведённом коде написано, что если нашли элемент с искомым значением, то добавляем новый элемент справочника (создаём) и заполняем его ТЧ.Улицы. Естесственно, что элемент как бы пустой (нет наименования). Я так подозреваю, что Вы хотите отредактировать найденный элемент, тогда надо получить найденный объект, код будет примерно таким: Изменено 01.11.12 10:05:06
Вы правильно подозреваете
Я проверил, сначала стала заполнять и создавать еще пустые новые документы, но теперь опять выдает ошибку {Форма.Форма.Форма(35)}: Значение не является значением объектного типа (Улицы)
ТЧ = Об.Улицы.Добавить();
Ничего вроде не делал, а почему ошибка не пойму. И еще вот ТЧ.Улица имеет тип Строка, а мне надо Тип Справочники , если ставлю тип справочники тогда не заполняет.
В форме списка справочника у меня добавлена Табличное поле с колонками Улица, Дом, Квартира , я пытаюсь загрузить данные с формы документа ТЧ.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГрупповыеУлицы.НомерСтроки КАК Колонка4,
| ГрупповыеУлицы.Улица КАК Колонка1,
| ГрупповыеУлицы.Дом КАК Колонка2,
| ГрупповыеУлицы.Кв КАК Колонка3
|ИЗ
| Справочник.Групповые.Улицы КАК ГрупповыеУлицы";
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Результат;
Смысл в чем, в форме списка, когда нажимаешь на строчку в ТП показываются улицы которые принадлежат данной улице из списка.
Я в какое событие поставить?
Постараюсь еще раз объяснить:
В Форме списка Табличного поля СправочникСписок добавил еще Табличное поле ТабличноеПоле1 в которой будет выводиться информация с Табличной части Формы Элемента. Т.е нажатии на строчку в СправочникСписок выводится информация ТабличноеПоле1
Процедура СправочникСписокПриАктивацииСтроки()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГрупповыеУлицы.НомерСтроки КАК Колонка4,
| ГрупповыеУлицы.Улица КАК Колонка1,
| ГрупповыеУлицы.Дом КАК Колонка2,
| ГрупповыеУлицы.Кв КАК Колонка3
|ИЗ
| Справочник.Групповые.Улицы КАК ГрупповыеУлицы
|ГДЕ //тут условие надо поставить на данные из текущей строки";
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Результат;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
КонецПроцедурыИзменено 01.11.12 13:49:07
а вообще, подумал сейчас, зачем огород городить? это же ТЧ элемента, поэтому надо в значение ТабличноеПоле1 выставить ТЧ.Улицы и связать два поля поля Ссылке.
Всё делается без единой строчки кода.Изменено 01.11.12 13:53:13
Я пытаюсь с Excel загрузить документ там есть колонка с датой, я пытаюсь загрузить в реквиз дата и он выдает ошибку
{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Записать)
Об.Записать();
по причине:
Значение поля "Дата" не может быть пустой датой
Процедура КнопкаВыполнитьНажатие(Кнопка)
//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;
Ex = ПолучитьТаблицуExcel(Файл);
Док = Документы.Заправка;
НС = 1;
Пока Истина Цикл
Об=Док.СоздатьДокумент();
Об.Дата = СокрЛП(Ex.Cells(НС,1).NumberFormat="ДД.ММ.ГГГГ");
Об.Улица = СокрЛП(Ex.Cells(НС,2).Value);
Об.Дом = СокрЛП(Ex.Cells(НС,3).Value);
Об.Кол = СокрЛП(Ex.Cells(НС,4).Value);
Об.РУ = СокрЛП(Ex.Cells(НС,5).Value);
Об.Записать();
Сообщить("-Создан элемент: "+Об.Улица);
//Если Об.Улица = "" Тогда
// Прервать;
// КонецЕсли;
Если выложите, что выдаёт выражение Ex.Cells(НС,1).NumberFormat="ДД.ММ.ГГГГ", то смогу Вам помочь, хотя на вопрос "КАК?" посылаются обычно читать синтаксис-помощник. Да, и ещё, в каком виде в экселе дата забита?
я Вас столько раз просил прислать мне то-то и то-то....
1. Ex.Cells(НС,1) - это комобъект
2.Ex.Cells(НС,1).NumberFormat="ДД.ММ.ГГГГ" - это сравнение, соответственно возвращает булево
3. Ex.Cells(НС,1).Value - строка с Вашей датой, именно строка, и чтобы преобразовать её в дату надо функцию написать, например, я такую написал:
Тогда применительно в Вашей задаче:
Об.Дата = ПреобразоватьВДату(СтрЗаменить(СокрЛП(Ex.Cells(НС,1).Value),".",""));
А что может быть такое, загрузка пошла, дошла до 700 строки и выдала ошибку
{Форма.Форма.Форма(83)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));
вычислил строка 654 последнюю загружает там значение Даты 31.01.2007 а вот на строка следующая 655 значение 01.02.2007 выдает ошибку
{Форма.Форма.Форма(83)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));
{Форма.Форма.Форма(82)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));