Некорректный вывод данных в ексель

1. 1cBokov 7 10.07.17 10:10 Сейчас в теме
Добрый день, есть обработка которая выгружает данные по Основным средствам, все хорошо только вот данные по Группе Основного средства выгружаются, только не у все ОС те которые указаны в справочнике ОС. Кто подскажет где копать? (см. подробнее скриншоты).



Вот сама строчка кода для вывода инфо по группе ОС:

Лист.Cells(a,19).NumberFormat = "@";
Лист.Cells(a,19).value = Строка(РезультатЗапроса.ОсновноеСредство.ГруппаОС);
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. 1cBokov 7 10.07.17 10:19 Сейчас в теме
Процедура КнопкаВыполнитьНажатие(Кнопка)
	 НомерЛиста         = 1;
   
    //Пытаемся подключиться к Excel
    Попытка
        Excel = новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
        Возврат;
    КонецПопытки;     
   
    //Подключились удачно, открываем файл
    Excel.Workbooks.Open("C:\Documents and Settings\Программист-3\Рабочий стол\333.xlsx");   
    //Открываем необходимый лист
    Лист = Excel.Sheets(1);   
	ФайлСтрок   = Excel.Cells.CurrentRegion.Rows.Count;
	ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 19);
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	ХозрасчетныйДвиженияССубконто.Период,
	|	ХозрасчетныйДвиженияССубконто.Регистратор,
	|	ХозрасчетныйДвиженияССубконто.СчетДт,
	|	ХозрасчетныйДвиженияССубконто.СубконтоДт1,
	|	ХозрасчетныйДвиженияССубконто.СубконтоДт2,
	|	ХозрасчетныйДвиженияССубконто.СубконтоДт3,
	|	ХозрасчетныйДвиженияССубконто.Сумма,
	|	ХозрасчетныйДвиженияССубконто.СуммаНУДт,
	|	ХозрасчетныйДвиженияССубконто.СуммаНУКт,
	|	ХозрасчетныйДвиженияССубконто.СчетКт,
	|	ХозрасчетныйДвиженияССубконто.СубконтоКт1,
	|	ПервоначальныеСведенияОСБухгалтерскийУчет.ОсновноеСредство,
	|	ПервоначальныеСведенияОСБухгалтерскийУчет.ПервоначальнаяСтоимость,
	|	ПервоначальныеСведенияОСБухгалтерскийУчет.Период КАК Период1
	|ИЗ
	|	РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет КАК ПервоначальныеСведенияОСБухгалтерскийУчет
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
	|				&НачалоПериода,
	|				&КонецПериода,
	|				(СчетДт.Код = ""20.01""
	|					ИЛИ СчетДт.Код = ""25""
	|					ИЛИ СчетДт.Код = ""26"")
	|					И СчетКт.Код = ""02.01"",
	|				,
	|				) КАК ХозрасчетныйДвиженияССубконто
	|		ПО ПервоначальныеСведенияОСБухгалтерскийУчет.ОсновноеСредство.Ссылка = ХозрасчетныйДвиженияССубконто.СубконтоКт1.Ссылка
	|ГДЕ
	|	ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &НачалоПериода И &КонецПериода
	|	И ХозрасчетныйДвиженияССубконто.Сумма <> 0");
	
	Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца('20170430000000'));
	Запрос.УстановитьПараметр("КонецПериода",КонецМесяца('20170531000000'));

	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	a=1;
	Пока РезультатЗапроса.Следующий() Цикл
					
				a = a + 1;
				Лист.Cells(a,1).NumberFormat = "@";
				Лист.Cells(a,1).value = Строка(РезультатЗапроса.Регистратор.УникальныйИдентификатор());				
				Лист.Cells(a,2).NumberFormat = "@";
				Лист.Cells(a,2).value = РезультатЗапроса.Регистратор.Номер;
				Лист.Cells(a,3).NumberFormat = "ДД.ММ.ГГГГ";
				Лист.Cells(a,3).value = РезультатЗапроса.Регистратор.Дата;
				Лист.Cells(a,4).NumberFormat = "@";
				Лист.Cells(a,4).value = Строка(РезультатЗапроса.Регистратор);
				Лист.Cells(a,5).NumberFormat = "@";
				Если (РезультатЗапроса.СчетДт.Код = "20.01") Тогда
					//Лист.Cells(a,5).value = Строка(РезультатЗапроса.СубконтоДт3.Код);
				КонецЕсли;
				Лист.Cells(a,6).NumberFormat = "ДД.ММ.ГГГГ";
				Лист.Cells(a,6).value = НачалоМесяца(РезультатЗапроса.Регистратор.Дата);
				Лист.Cells(a,7).NumberFormat = "@";
				//Лист.Cells(a,7).value = РезультатЗапроса.ОсновноеСредство.УИД;
				Лист.Cells(a,8).NumberFormat = "@";
                Лист.Cells(a,9).NumberFormat = "@";
                Лист.Cells(a,10).NumberFormat = "0,00";
                Лист.Cells(a,10).value = РезультатЗапроса.Сумма;
				Лист.Cells(a,11).NumberFormat = "@";
				Если (РезультатЗапроса.СуммаНУКт > 0) ИЛИ (РезультатЗапроса.СуммаНУДт > 0) Тогда
					Лист.Cells(a,11).value = "Да";
				КонецЕсли;
				Лист.Cells(a,12).NumberFormat = "@";
				Лист.Cells(a,12).value = РезультатЗапроса.СчетДт.Код;
				Лист.Cells(a,14).NumberFormat = "@";
                Лист.Cells(a,14).value = РезультатЗапроса.ОсновноеСредство.НаименованиеПолное;
                Лист.Cells(a,15).NumberFormat = "@";
				Лист.Cells(a,15).value = Строка(РезультатЗапроса.ОсновноеСредство.АмортизационнаяГруппа);
				Лист.Cells(a,16).NumberFormat = "ДД.ММ.ГГГГ";
				Лист.Cells(a,16).value = РезультатЗапроса.Период1;
				Лист.Cells(a,17).NumberFormat = "0,00";
				Лист.Cells(a,17).value = РезультатЗапроса.ПервоначальнаяСтоимость;
				Лист.Cells(a,19).NumberFormat = "@";
				Лист.Cells(a,19).value = Строка(РезультатЗапроса.ОсновноеСредство.ГруппаОС);
				
	КонецЦикла;
		
				
							
		Excel.Save();
			
	
Excel.quit();			
КонецПроцедуры
Показать
2. Rust 10.07.17 10:15 Сейчас в теме
Вот здесь скорее всего запрос смотри РезультатЗапроса
3. Rust 10.07.17 10:16 Сейчас в теме
4. v3rter 10.07.17 10:16 Сейчас в теме
Откройте в конфигураторе справочник ОС, в нем форму элемента, в ней выделите элемент данных из Вашего второго скриншота и перепроверьте название поля. Возможно, оно называется не ГруппаОС. В выводе в эксель ошибок не вижу.
6. 1cBokov 7 10.07.17 10:23 Сейчас в теме
(4)Открыл посмотрел, все так как и у меня сейчас ГруппаОС, так и написал в модуле
7. v3rter 10.07.17 10:31 Сейчас в теме
А так?
Лист.Cells(a,19).value = Строка(РезультатЗапроса.ОсновноеСредство.ГруппаОС.Наименование); 

Отладчиком можете остановиться на этой строке и посмотреть в табло что в РезультатЗапроса.ОсновноеСредство.ГруппаОС ? Подсказка: табличные части и результаты запросов можно посмотреть в табло кнопкой F2.
9. 1cBokov 7 10.07.17 10:34 Сейчас в теме
(7)Поле объекта не обнаружено (Наименование)
Лист.Cells(a,19).value = Строка(РезультатЗапроса.ОсновноеСредство.ГруппаОС.Наименование);
8. Rust 10.07.17 10:32 Сейчас в теме
Ну вот наверное точку останова поставить нужно РезультатЗапроса = Запрос.Выполнить().Выбрать(); и написать Запрос.Выполнить().Выгрузить() Получиш таблицу с данными Ну и если там не все данные значит смотри параметры выборки в запросе
10. Rust 10.07.17 10:35 Сейчас в теме
А нет убери вот это вот a = a + 1;
12. v3rter 10.07.17 10:38 Сейчас в теме
(10) При чём здесь "а"??

"а" - это строка экселя, в которую идет вывод. Если убрать - всё будет последовательно выводиться в шапку таблицы и на выходе останется последнее значение запроса вместо шапки.

С циклом "Пока РезультатЗапроса.Следующий() Цикл" всё в порядке.
11. Rust 10.07.17 10:35 Сейчас в теме
13. Rust 10.07.17 10:41 Сейчас в теме
14. v3rter 10.07.17 13:22 Сейчас в теме
А так?
    ПервоначальныеСведенияОС.ОсновноеСредство,
    ПервоначальныеСведенияОС.ОсновноеСредство.ГруппаОС КАК ГруппаУчетаОС,
    ПервоначальныеСведенияОС.ОсновноеСредство.Родитель КАК ГруппаОС,
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот