Доброго времени суток! Создаю запрос, все вроде отрабатывает. Но, как я понимаю, в результат идет только первая партия. Хотя группировку по партиям я не заказывала. Почему так происходит? Что с этим делать? Может есть какой-то отладчик, который покажет мне идет ли группировка по партиям?
Смотрю конкретный товар. Он приходил тремя партиями: 1шт, 1шт, 6шт. Моя процедура показывает, что на остатке 1 шт....
Смотрю конкретный товар. Он приходил тремя партиями: 1шт, 1шт, 6шт. Моя процедура показывает, что на остатке 1 шт....
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Период с ВыбНачПериода по ДатаОст;
|Обрабатывать НеПомеченныеНаУдаление;
|Фирма = Регистр.СкладУчетПарт.Фирма;
|Товар = Регистр.СкладУчетПарт.Номенклатура;
|Колво = Регистр.СкладУчетПарт.Количество;
//|Партия = Регистр.СкладУчетПарт.Партия;
|Цена = Регистр.СкладУчетПарт.УчетнаяЦена;
|Функция ТовОстаток = КонОст(Колво);
|Группировка Фирма без групп;
|Группировка Товар без групп;
|";
Запрос.Выполнить(ТекстЗапроса);
СчетчикСтр = СводнаяТаблица.КоличествоСтрок();
Пока Запрос.Группировка(1) = 1 Цикл
ФирмаОбщ = Запрос.Фирма;
Если (ФирмаОбщ = Фирма1) или (ФирмаОбщ = Фирма2) тогда
Если Строка(ФирмаОбщ) = Строка(ФЛ) тогда
ФирмаОбщ = "Л";
ИначеЕсли Строка(ФирмаОбщ) = Строка(ФШ) тогда
ФирмаОбщ = "Ш";
иначе
продолжить;
КонецЕсли;
СводнаяТаблица.НоваяКолонка(СокрЛП(Строка(ФирмаОбщ) + "Цена"), "Число");
СводнаяТаблица.НоваяКолонка(СокрЛП(Строка(ФирмаОбщ)), "Число");
НомерКол = СводнаяТаблица.КоличествоКолонок();
Пока Запрос.Группировка(2) = 1 Цикл
СчетчикСтр = СчетчикСтр +1;
СводнаяТаблица.НоваяСтрока();
СводнаяТаблица.Номенклатура = Запрос.Товар;
СводнаяТаблица.Количество = Запрос.Колво;
СводнаяТаблица.Единица = Шт.ТекущийЭлемент();
//СводнаяТаблица.Цена = Запрос.Цена;
СводнаяТаблица.Сумма = Запрос.Цена*Запрос.Колво;
СводнаяТаблица.УстановитьЗначение(СчетчикСтр, НомерКол, Запрос.Колво);
//по сути сумма, потом она разделится на количество
СводнаяТаблица.УстановитьЗначение(СчетчикСтр, НомерКол-1, Запрос.Цена*Запрос.Колво);
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПоказатьПо теме из базы знаний
- Сравнение 1С8 и Navision
- Подключение к 1С 7.7 через внешний источник данных, работа со справочниками 7.7 (на примере справочника клиенты)
- Консоль запросов для управляемых форм 8.3
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Расширение для интеграции с iboxPro через HTTP-сервис (создание чеков)
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)нет =) я ж специально смотрю по этим двум фирмам. Остатки у меня разбиты по фирмам. Всего 4 фирмы, меня интересует 2 из них. По некоторой конкретной номенклатуре по фирме1 остаток = 1шт и пишется как 1шт (мб случайно), по фирме2 = 8шт (но пишет 1), по фирме3 = 0шт, по фирме4 = 0шт.
Так может остаток реально 1 шт?
Просмотрите, что возвращает запрос.
И взять какую-нибудь из многочисленных обработок, показывающих остатки в регистре, и сверить с данными, полученными из запроса.
Проверьте правильность ВыбНачПериода и ДатаОст.
Просмотрите, что возвращает запрос.
ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ,0,0);
ТЗ.ВыбратьСтроку();
И взять какую-нибудь из многочисленных обработок, показывающих остатки в регистре, и сверить с данными, полученными из запроса.
Проверьте правильность ВыбНачПериода и ДатаОст.
Ещё момент.
СчетчикСтр = СводнаяТаблица.КоличествоСтрок(); ---стоит перед первым циклом, и это смущает...
попробуй по другому.
внутри второго цикла
СчетчикСтр = СводнаяТаблица.КоличествоСтрок(); ---стоит перед первым циклом, и это смущает...
попробуй по другому.
внутри второго цикла
СводнаяТаблица.НоваяСтрока();
НомСтр = СводнаяТаблица.количествоСтрок();
СводнаяТаблица.Номенклатура = Запрос.Товар;
СводнаяТаблица.Количество = Запрос.Колво;
СводнаяТаблица.Единица = Шт.ТекущийЭлемент();
//СводнаяТаблица.Цена = Запрос.Цена;
СводнаяТаблица.Сумма = Запрос.Цена*Запрос.Колво;
СводнаяТаблица.УстановитьЗначение(НомСтр, НомерКол, Запрос.Колво);
Показать
(6)разве? У меня таблица формируется из трех разных запросов. Перед циклом я узнаю количество строк и во втором цикле прибавляю, ведь до этого у меня не было новых строк. В принципе, думаю, можно и вашим способом, будет точнее. Сейчас попробую.
У меня еще до использования счетчика идет неверный результат...Что-то с перебором значений что ли... Вот здесь смотрю количество - пишет 1 шт (вместо 8):
У меня такое чувство, что идет выборка по партиям, но даже если бы она была, то результат запроса бы не отрабатывал (по простой выгрузке). Аааааа
У меня еще до использования счетчика идет неверный результат...Что-то с перебором значений что ли... Вот здесь смотрю количество - пишет 1 шт (вместо 8):
СводнаяТаблица.НоваяСтрока();
Номенклатура = Запрос.Товар;
Если Номенклатура.Код = "00031433" тогда
к = к + Запрос.Колво;
КонецЕсли;
СводнаяТаблица.Номенклатура = Запрос.Товар;
СводнаяТаблица.Количество = Запрос.Колво;
СводнаяТаблица.Единица = Шт.ТекущийЭлемент()
У меня такое чувство, что идет выборка по партиям, но даже если бы она была, то результат запроса бы не отрабатывал (по простой выгрузке). Аааааа
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот