Запрос=Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ХозрасчетныйОстатки.Счет, | ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстатки.Счет), | ХозрасчетныйОстатки.Субконто1, | ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстатки.Субконто1), |ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Период,Счет = &Счет, , ) КАК ХозрасчетныйОстатки"; Запрос.УстановитьПараметр("Период", ТекущаяДата()); Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("2821")); РезультатЗапроса=запрос.Выполнить().Выбрать(); Пока РезультатЗапроса.Следующий() Цикл Сообщить(РезультатЗапроса.КоличествоОстаток); КонецЦикла;
В отладчике посмотрел, выполняет цикл и сообщает мне такое чувство что по всему номеклатору, как в этом запросе отсеять по моим наименованиям товара, я так понимаю что надо установить параметр в запросе по субконто1
Запрос=Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ХозрасчетныйОстатки.Счет, | ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстатки.Счет), | ХозрасчетныйОстатки.Субконто1, | ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстатки.Субконто1), |ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Период,Счет = &Счет, , Субконто1 В (&Номенклатура)) КАК ХозрасчетныйОстатки"; Запрос.УстановитьПараметр("Период", ТекущаяДата()); Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("2821")); Запрос.УстановитьПараметр("Номенклатура", Товары); РезультатЗапроса=запрос.Выполнить().Выбрать(); Пока РезультатЗапроса.Следующий() Цикл Сообщить(РезультатЗапроса.КоличествоОстаток); КонецЦикла;
Запрос.УстановитьПараметр("Номенклатура", ???); - к какой тут таблице надо обратиться?
//Не Товары, а -Товары.ВыгрузитьКолонку("Номенклатура") или СтрокаТабличнойЧасти.Номенклатура 2 - е неоптимально т.к. запрос будет каждый раз выполнятся. А первое получаются остатки по всей номенклатуре ТЧ. А затем при выводе строки, отображается ваш остаток.
Выборка = Запрос.Выполнить().Выбрать(); Для Каждого СтрокаТабличногПоля Из ОформленияСтрок Цикл ДанныеСтроки = СтрокаТабличногПоля.ДанныеСтроки; Выборка.Сбросить(); Если Выборка.НайтиСледующий(ДанныеСтроки.Номенклатура, "Номенклатура") Тогда
а если таблицы в запросе соединить? таблицу табл.части Дока и таблицу Регистра. По товару. Только сгруппировать нужно по товару - выгрузка ли это табл части или таблица в запросе.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Может ничего нет на остатке? У меня код из первого куска отрабатывает верно. Единственное что в первом куске будет сообщено только сколько остатка в первой позиции Товаров.
Личные бесплатные консультации не даю, для этого есть форум!
Может ничего нет на остатке? У меня код из первого куска отрабатывает верно. Единственное что в первом куске будет сообщено только сколько остатка в первой позиции Товаров.
Остаток есть, первый кусок отрабатывает нормально и внизу сообщает остаток по бу по первой позиции товара, дальше не перебирает и бесконечно сообщает остаток,а вот как сделать что б бесконечно не было и перебирал дальше я не знаю.
Кстати, счет указывать как Вы мне советовали, я не проигнорил, сделаю конечно как подсказали, просто не могу с этим запросом разрулиться
В 1с8 для каждого предопределенного счета используется его Символьное имя(см. документацию и\или макет ПервоначальноеЗаполнение). Это сделано с учетом возможных искривлений исправлений БУ законодательством
позволю себе дополнить: Открыть план счетов -> Прочее -> Предопределенные
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Для Каждого СтрокаТабличногПоля Из ОформленияСтрок Цикл ДанныеСтроки = СтрокаТабличногПоля.ДанныеСтроки; Выборка.Сбросить(); Если Выборка.НайтиСледующий(ДанныеСтроки.Номенклатура, "Номенклатура") Тогда Сообщить (Выборка.КоличествоОстаток); КонецЕсли; КонецЦикла;
Вот здесь надо перебирать не таблицу, а результат запроса. Т.е Пока Выборка.Слудющий() Цикл И в цикле уже находить строку ТЧ соответствующую (Выборка.Субконто1 = Строка.Номенклатура) в колонки которой и вставлять результат.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Ну не занимайтесь же вставкой тупо-кода... я написал пример логики, а не код.
В цикле нужно для Выборка.Субконто1 найти соответствующую строку в ТЧ и присвоить колонкам этой строки нужные значения из выборки. как-то так (это примерный код!!!!)
Пока Выборка.Следующий() Цикл СтрокаТЧ = Товары.НайтиСтроки(Новый Структура("Номенклатура",Выборка.Субконто1)); Строка = СтрокаТЧ[0]; Строка.РеквизитКудаПоместитьОстаток = Выборка.КоличествоОстаток; КонецЦикла;
Личные бесплатные консультации не даю, для этого есть форум!
Извините что программирую больше мышкой Остатки он мне сообщает, но запрос после выполнения цикла опять делает, т.е. сообщает бесконечно,подскажите в чем может быть дело?
Маловероятно, проводит в конце месяца человек согласно печатной формы расходника, он фактически отрабатывает в бух учете, списывает с нужных счетов. (Хотя было бы неплохо сделать так что после печати редактирование ТЧ запрещено)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!