1C8.1Бух Запрос бухгалтерский (ошибка)
03.03.2010
13:45
#1
"Здравствуйте.
Дано: 1С:Предприятие 8.1 (8.1.9.57) "Бухгалтерия" редакция 1.6 (1.6.15.6) (пока что не ломаная, но прогресс неизбежен)
Требуется: запросом выбрать остатки товара на 41-м счету.
Паяльной лампой наваял:
ЗапросОстаткиТовара=Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| СУММА(ХозрасчетныйОстатки.СуммаОборотДТ) КАК ОборотДТ,
| СУММА(ХозрасчетныйОстатки.СуммаКонечныйОстатокДт) КАК СуммаКонечныйОстатокДт,
| СУММА(ХозрасчетныйОстатки.СуммаКонечныйОстатокКт) КАК СуммаКонечныйОстатокКт,
| ХозрасчетныйОстатки.Счет КАК Счет
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода,&КонецПериода) КАК ХозрасчетныйОстатки
|ГДЕ
| Счет=41.01
|СГРУППИРОВАТЬ ПО
| Счет,
| ХозрасчетныйОстатки.Субконто1,
| ХозрасчетныйОстатки.СуммаКонечныйОстатокДт,
| ХозрасчетныйОстатки.СуммаКонечныйОстатокКт,
| ХозрасчетныйОстатки.СуммаОборотДТ
|");
ЗапросОстаткиТовара.УстановитьПараметр("НачалоПериода",ДатаНачала);
ЗапросОстаткиТовара.УстановитьПараметр("КонецПериода",ДатаКонца);
ОстаткиТовара=ЗапросОстаткиТовара.Выполнить();
Если ОстаткиТовара.Пустой()=Ложь Тогда
Сообщить("!");
ОстаткиТовара.Выбрать();
Пока ОстаткиТовара.Следующий() Цикл
Сообщить("!");
КонецЦикла;
КонецЕсли;
1С не дает никаких результатов.
Вопрос: Что делать? Кто виноват сам знаю, давеча в зеркале видел."
Дано: 1С:Предприятие 8.1 (8.1.9.57) "Бухгалтерия" редакция 1.6 (1.6.15.6) (пока что не ломаная, но прогресс неизбежен)
Требуется: запросом выбрать остатки товара на 41-м счету.
Паяльной лампой наваял:
ЗапросОстаткиТовара=Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| СУММА(ХозрасчетныйОстатки.СуммаОборотДТ) КАК ОборотДТ,
| СУММА(ХозрасчетныйОстатки.СуммаКонечныйОстатокДт) КАК СуммаКонечныйОстатокДт,
| СУММА(ХозрасчетныйОстатки.СуммаКонечныйОстатокКт) КАК СуммаКонечныйОстатокКт,
| ХозрасчетныйОстатки.Счет КАК Счет
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода,&КонецПериода) КАК ХозрасчетныйОстатки
|ГДЕ
| Счет=41.01
|СГРУППИРОВАТЬ ПО
| Счет,
| ХозрасчетныйОстатки.Субконто1,
| ХозрасчетныйОстатки.СуммаКонечныйОстатокДт,
| ХозрасчетныйОстатки.СуммаКонечныйОстатокКт,
| ХозрасчетныйОстатки.СуммаОборотДТ
|");
ЗапросОстаткиТовара.УстановитьПараметр("НачалоПериода",ДатаНачала);
ЗапросОстаткиТовара.УстановитьПараметр("КонецПериода",ДатаКонца);
ОстаткиТовара=ЗапросОстаткиТовара.Выполнить();
Если ОстаткиТовара.Пустой()=Ложь Тогда
Сообщить("!");
ОстаткиТовара.Выбрать();
Пока ОстаткиТовара.Следующий() Цикл
Сообщить("!");
КонецЦикла;
КонецЕсли;
1С не дает никаких результатов.
Вопрос: Что делать? Кто виноват сам знаю, давеча в зеркале видел."
03.03.2010
14:12
#2
"Ошибка в строке
| Счет=41.01
Варианта 2:
1. Возможно требуется уточнить код
| Счет.Код=""""41.01""""
2.
| Счет.Код=&Счет
ЗапросОстаткиТовара.УстановитьПараметр("Счет",...); //Либо передать выбранный в форме, либо найти по коду, либо ..."
| Счет=41.01
Варианта 2:
1. Возможно требуется уточнить код
| Счет.Код=""""41.01""""
2.
| Счет.Код=&Счет
ЗапросОстаткиТовара.УстановитьПараметр("Счет",...); //Либо передать выбранный в форме, либо найти по коду, либо ..."
03.03.2010
14:14
#3
> ГДЕ
> Счет=41.01
И где вы видели чтобы так условие задавалось.
Совет. поставьте условие в виртуальной таблице, запрос будет работает быстрее.
> Паяльной лампой наваял:
Лучше конструктором запросов.
> Счет=41.01
И где вы видели чтобы так условие задавалось.
Совет. поставьте условие в виртуальной таблице, запрос будет работает быстрее.
> Паяльной лампой наваял:
Лучше конструктором запросов.
03.03.2010
14:24
#4
"Вариант 1. не прокатил, а вариант
| Счет.Код=&Счет
ЗапросОстаткиТовара.УстановитьПараметр("Счет",...);
что-то получает, так как срабатывает условие Если ОстаткиТовара.Пустой()=Ложь Тогда
Но вылетает при ошибке в строке Пока ОстаткиТовара.Следующий() Цикл
Говорит, что "Метод объекта не обнаружен (Следующий)"
Что сделал не так?"
| Счет.Код=&Счет
ЗапросОстаткиТовара.УстановитьПараметр("Счет",...);
что-то получает, так как срабатывает условие Если ОстаткиТовара.Пустой()=Ложь Тогда
Но вылетает при ошибке в строке Пока ОстаткиТовара.Следующий() Цикл
Говорит, что "Метод объекта не обнаружен (Следующий)"
Что сделал не так?"
03.03.2010
14:31
#5
> Но вылетает при ошибке в строке Пока ОстаткиТовара.Следующий() Цикл
> Говорит, что "Метод объекта не обнаружен (Следующий)"
> Что сделал не так?
Сначала нужно выбрать
Метод следующий() у объекта выборки.
Вы хоть синтаксис-помощник посмотрите.
> Говорит, что "Метод объекта не обнаружен (Следующий)"
> Что сделал не так?
Сначала нужно выбрать
Метод следующий() у объекта выборки.
Вы хоть синтаксис-помощник посмотрите.
03.03.2010
14:36
#6
"Обновленный код:
ЗапросОстаткиТовара=Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| СУММА(ХозрасчетныйОстатки.СуммаОборотДТ) КАК ОборотДТ,
| СУММА(ХозрасчетныйОстатки.СуммаКонечныйОстатокДт) КАК СуммаКонечныйОстатокДт,
| СУММА(ХозрасчетныйОстатки.СуммаКонечныйОстатокКт) КАК СуммаКонечныйОстатокКт,
| ХозрасчетныйОстатки.Счет КАК Счет
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода,&КонецПериода) КАК ХозрасчетныйОстатки
//|ГДЕ
//| Счет=""""41.01""""
|СГРУППИРОВАТЬ ПО
| Счет,
| ХозрасчетныйОстатки.Субконто1,
| ХозрасчетныйОстатки.СуммаКонечныйОстатокДт,
| ХозрасчетныйОстатки.СуммаКонечныйОстатокКт,
| ХозрасчетныйОстатки.СуммаОборотДТ
|");
ЗапросОстаткиТовара.УстановитьПараметр("НачалоПериода",ДатаНачала);
ЗапросОстаткиТовара.УстановитьПараметр("КонецПериода",ДатаКонца);
ЗапросОстаткиТовара.УстановитьПараметр("Счет",СчетОстатков);
ОстаткиТовара=ЗапросОстаткиТовара.Выполнить();
Если ОстаткиТовара.Пустой()=Ложь Тогда
Сообщить("!");
ОстаткиТовара.Выбрать();//***** ВРОДЕ КАК ВЫБРАЛ
Пока ОстаткиТовара.Следующий() Цикл
Сообщить("!");
КонецЦикла;
КонецЕсли;
Но выдает ошибку в цикле."
ЗапросОстаткиТовара=Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| СУММА(ХозрасчетныйОстатки.СуммаОборотДТ) КАК ОборотДТ,
| СУММА(ХозрасчетныйОстатки.СуммаКонечныйОстатокДт) КАК СуммаКонечныйОстатокДт,
| СУММА(ХозрасчетныйОстатки.СуммаКонечныйОстатокКт) КАК СуммаКонечныйОстатокКт,
| ХозрасчетныйОстатки.Счет КАК Счет
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода,&КонецПериода) КАК ХозрасчетныйОстатки
//|ГДЕ
//| Счет=""""41.01""""
|СГРУППИРОВАТЬ ПО
| Счет,
| ХозрасчетныйОстатки.Субконто1,
| ХозрасчетныйОстатки.СуммаКонечныйОстатокДт,
| ХозрасчетныйОстатки.СуммаКонечныйОстатокКт,
| ХозрасчетныйОстатки.СуммаОборотДТ
|");
ЗапросОстаткиТовара.УстановитьПараметр("НачалоПериода",ДатаНачала);
ЗапросОстаткиТовара.УстановитьПараметр("КонецПериода",ДатаКонца);
ЗапросОстаткиТовара.УстановитьПараметр("Счет",СчетОстатков);
ОстаткиТовара=ЗапросОстаткиТовара.Выполнить();
Если ОстаткиТовара.Пустой()=Ложь Тогда
Сообщить("!");
ОстаткиТовара.Выбрать();//***** ВРОДЕ КАК ВЫБРАЛ
Пока ОстаткиТовара.Следующий() Цикл
Сообщить("!");
КонецЦикла;
КонецЕсли;
Но выдает ошибку в цикле."
03.03.2010
14:38
#7
"Так далеко я не смотрел:
лВыборка = ОстаткиТовара.Выбрать();
Пока лВыборка.Следующий() Цикл
...
У результата запроса нет Следующего."
лВыборка = ОстаткиТовара.Выбрать();
Пока лВыборка.Следующий() Цикл
...
У результата запроса нет Следующего."
03.03.2010
14:44
#8
Вот и верь потом учебникам... И что ж делать? На 41-м остатки есть.
Мысль... у регистра измерение "Организация" и "Валюта", которые я в запросе не указывал. В этом может быть косяк?
p.s. Извиняюсь за глупые вопросы, ибо это мой первый запрос на 8.1
Мысль... у регистра измерение "Организация" и "Валюта", которые я в запросе не указывал. В этом может быть косяк?
p.s. Извиняюсь за глупые вопросы, ибо это мой первый запрос на 8.1
03.03.2010
15:31
#9
"Догнал. Массивы - сила.
МассивОстаткиТовара=ОстаткиТовара.Выгрузить();
Для Каждого СтрокаИзМассива Из МассивОстаткиТовара Цикл
Сообщить(Строка(СтрокаИзМассива["Номенклатура"])+" "+Строка(СтрокаИзМассива["СуммаКонечныйОстатокДт"]));
КонецЦикла;
Непонимаю только, почему ни в одном учебнике нет нормального примера. Очень съэкономило бы время и нервы."
МассивОстаткиТовара=ОстаткиТовара.Выгрузить();
Для Каждого СтрокаИзМассива Из МассивОстаткиТовара Цикл
Сообщить(Строка(СтрокаИзМассива["Номенклатура"])+" "+Строка(СтрокаИзМассива["СуммаКонечныйОстатокДт"]));
КонецЦикла;
Непонимаю только, почему ни в одном учебнике нет нормального примера. Очень съэкономило бы время и нервы."
03.03.2010
17:13
#10
"> Догнал. Массивы - сила.
>
> МассивОстаткиТовара=ОстаткиТовара.Выгрузить();
> Для Каждого СтрокаИзМассива Из МассивОстаткиТовара Цикл
> Сообщить(Строка(СтрокаИзМассива["Номенклатура"])+" "+Строка(СтрокаИзМассива["СуммаКонечныйОстатокДт"]));
> КонецЦикла;
>
Если ОстаткиТовара - это результат запроса (Запрос.Выполнить()), то Выгрузить это не Масиив, а ТаблицаЗначений
А Выборку я и сам не люблю, хотя она должна быть быстрее.
> Сообщить(Строка(СтрокаИзМассива["Номенклатура"])+" "+Строка(СтрокаИзМассива["СуммаКонечныйОстатокДт"]));
Можно и так написать:
Сообщить(Строка(СтрокаИзМассива.Номенклатура)+" "+Строка(СтрокаИзМассива.СуммаКонечныйОстатокДт));"
>
> МассивОстаткиТовара=ОстаткиТовара.Выгрузить();
> Для Каждого СтрокаИзМассива Из МассивОстаткиТовара Цикл
> Сообщить(Строка(СтрокаИзМассива["Номенклатура"])+" "+Строка(СтрокаИзМассива["СуммаКонечныйОстатокДт"]));
> КонецЦикла;
>
Если ОстаткиТовара - это результат запроса (Запрос.Выполнить()), то Выгрузить это не Масиив, а ТаблицаЗначений
А Выборку я и сам не люблю, хотя она должна быть быстрее.
> Сообщить(Строка(СтрокаИзМассива["Номенклатура"])+" "+Строка(СтрокаИзМассива["СуммаКонечныйОстатокДт"]));
Можно и так написать:
Сообщить(Строка(СтрокаИзМассива.Номенклатура)+" "+Строка(СтрокаИзМассива.СуммаКонечныйОстатокДт));"
ЗиК 7.7 релиз 293. Не формируются проводки Резерв отпусковНДФЛ удержанный не считается, Комплексная 7.7 (рел.492)
Читают тему
(гостей: 1)