Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 1
Добрий вечір. Створив запрос для отримання залишку товарів по складу на зараз. 1С 77. Торгівля + склад дороблена. Виводиться товар по складу із НЕНУЛЬОВИМИ ЗАЛИШКАМИ. Будь ласка підкажітть як вивести весь товар по складу (щоб були і нульові залишки але тільки по вибраному складу?) В 1с створив новий документ ЗаказНаряд.... все працює... А із запросами чогось не виходить. Колись пропустив цю тему при вивченні 1С....
Процедура ВивЗал() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Обрабатывать НеПомеченныеНаУдаление; |Фирма = Регистр.ОстаткиТоваров.Фирма; |ФлагУчета=Регистр.ОстаткиТоваров.ФлагУчета; |Товар = Регистр.ОстаткиТоваров.Товар.Наименование; |Скл = Регистр.ОстаткиТоваров.Склад; |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара; |Функция КонОст1 = КонОст(ОстатокТовара) когда((Скл = спрСклад.ТекущийЭлемент()) и (Фирма = спрФирма.ТекущийЭлемент())); |Группировка Товар; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" //Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл //Необходимо что бы в отчёт не лезли названия категорий и подкатегорий. Только товар // Заполнение полей Товар Таб.ВывестиСекцию("Товар"); // Сообщить(Запрос.Товар); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры
Если ПустоеЗначение(выбФирма) = 0 Тогда ТекстЗапр = ТекстЗапр + " |Условие (Фир = выбФирма);"; КонецЕсли;
Если ПустоеЗначение(выбСклад) = 0 Тогда ТекстЗапр = ТекстЗапр + " |Условие ((Скл в выбСклад) ИЛИ (Скл = выбСклад));"; КонецЕсли;
Если ПустоеЗначение(выбТМЦ) = 0 Тогда ТекстЗапр = ТекстЗапр + " |Условие (ТМЦ в выбТМЦ);"; КонецЕсли;
ТекстЗапр = ТекстЗапр + " |Функция НОКво = НачОст(Кво); |Функция ПКво = Приход(Кво); |Функция РКво = Расход(Кво); |Функция КОКво = КонОст(Кво); |Группировка Скл Без Групп Упорядочить по Скл.Код; |Группировка ТМЦ упорядочить по ТМЦ.Код;";
Если ВыбТМЦ.РазмерСписка() = 0 Тогда Заг1 = Заг1 + "По всім ТМЦ. "; Иначе Заг1 = Заг1 + "По ТМЦ зі списку: " + ВыбТМЦ.ВСтрокуСРазделителями() + ". "; КонецЕсли; Если ВыбСклад.Выбран() = 0 Тогда Заг2 = Заг2 + "По всім складам."; Иначе Заг2 = Заг2 + "По складу " + ВыбСклад.Наименование + "."; КонецЕсли;
Если Запр.Выполнить(ТекстЗапр) = 0 Тогда Возврат; КонецЕсли;
Таб.ВывестиСекцию("Шапка");
Пока Запр.Группировка("Скл") = 1 Цикл ИндСкл = 0; текНом = 0; Пока Запр.Группировка("ТМЦ") = 1 Цикл Если Запр.ТМЦ.ЭтоГруппа()=0 Тогда УчЦена = Запр.ТМЦ.УчетнаяЦена.Получить(ДатаПо); КвоОст = (Запр.НОКво+Запр.ПКво)-Запр.РКво;
Если КвоОст = 0 Тогда Если ИндСкл = 0 Тогда Таб.ВывестиСекцию("Скл"); ИндСкл = 1; КонецЕсли; текНом = текНом + 1; Таб.ВывестиСекцию("ТМЦ"); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Таб.Опции(0,0,Таб.ВысотаСекции("Шапка"),0); Таб.ТолькоПросмотр(1); Таб.ПараметрыСтраницы(2,100,,10,5,5,,,,,,); Таб.Показать("Залишки ТМЦ по складам"); КонецПроцедуры
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 1
denis84 @ Сегодня, 9:24
, Дякую. Зараз буду пробувати. Мене смущаї тут
Если ПустоеЗначение(выбТМЦ) = 0 Тогда ТекстЗапр = ТекстЗапр + " |Условие (ТМЦ в выбТМЦ);"; КонецЕсли;
выбТМЦ- це наперед вибраний список товару....? Я не можу наперед вибрати товар... і ще тут
Если ВыбТМЦ.РазмерСписка() = 0 Тогда Заг1 = Заг1 + "По всім ТМЦ. ";
Де і Як Змінна Заг1 використовується.... тут вона тільки визначається... Дякую
Profi_1C77 @ Сегодня, 10:28
, Дякую за відповідь. На мою думку при таких запитах буде виводитись весь товар із довідника Номенклатура. Тобто той якого ніколи не було по цьому складу. Хоч він був і може бути зараз на іншому складі. Мене цікавить вибірка по одному конкретно вибраному сладу. Щоб вивод нульові залишки і не нульові. Думаю такий звіт неможливо зробити..... 1С не тримає (регіст залишки товарів) таблиця (Ra123.dbf- зміна залишків при провед доків) або (Rg123.dbf - зал по періодах (місяцях)). Коли відбувається відкриття наступного місяця. То лінійки дбф з товаром складом і фірмою не переносяться на наступний місяць якщо залиш = 0...
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 1
vovkpro @ Сегодня, 10:50
, Можна ченез фокспро або запитом в 1С Вибрати по всій базі по всіх періодах товар який колись був на залишку по цьому складу. Поді пройтися по цьому списку і вибрати залишки на зараз. Якщо товару зараз нема на залишку буде 0....
vovkpro @ Сегодня, 10:50
, Правильно, Вы ж хотите что выводило и 0. Скажем у Вас новый товар который никогда не был в обороте в по этому складу , логично что остаток будет 0. Что б наверняка используйте функцию СводныйОстаток
Цитата(denis84 @ 26.11.24, 10:57)
в запросах оператор "в" означає, що по всим ТМЦ буде формуватися
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 1
Profi_1C77 @ Сегодня, 10:58
, Скажем у Вас новый товар который никогда не был в обороте в по этому складу При такому запиті цей товар буде попадати у звіт по кожному складу і показувати залишок 0 ....? Мені потрібно щоби по кожному складу був ТІЛЬКИ товар який коли небудь (рік тому) був на цьому складі а зараз його немає там І ЗАЛИШКУ 0 ТЕЖ НЕМАЄ В БАЗІ ПО ЦЬОМУ СКЛАДУ ФІЗИЧНО НА ТЕПЕРІШНІЙ ПЕРІОД. Можливо за якийсь ПЕРІОД (місяць) в базі є запис по ньому із залишком 0. А також щоб був товар який є зараз на цьому складу...
vovkpro @ Сегодня, 11:05
, Тогда, анализируем Все варианты остатка, накидал по - быстрому в конструкторе :
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Фирма = Регистр.ОстаткиТоваров.Фирма; |Товар = Регистр.ОстаткиТоваров.Товар; |Склад = Регистр.ОстаткиТоваров.Склад; |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара; |Функция ОстатокТовараНачОст = НачОст(ОстатокТовара); |Функция ОстатокТовараПриход = Приход(ОстатокТовара); |Функция ОстатокТовараРасход = Расход(ОстатокТовара); |Функция ОстатокТовараКонОст = КонОст(ОстатокТовара); |Группировка Товар; |Условие(Склад = ВыбСклад); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Товар Если (Запрос.НачОст<>0) или (Запрос.Приход<>0) или (Запрос.Расход<>0) или (Запрос.КонОст<>0) Тогда
Группа: Местный
Сообщений: 471
Из: Украина
Спасибо сказали: 154 раз
Рейтинг: 155.8
Profi_1C77 @ Сегодня, 11:02
, в мене написано запрос під специфіку нашого довідника ТМЦ. Там не важко викинути ті умови, які Вам не підходять і там все працюватиме.
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 1
Profi_1C77 @ Сегодня, 11:17
,
Вискочило.... Если (Запрос.НачОст<>0) или (Запрос.Приход<>0) или (Запрос.Расход<>0) или (Запрос.КонОст<>0) Тогда {Обработка.OstatkiRozprodazhi.Форма.Модуль(188)}: Поле агрегатного объекта не обнаружено (НачОст) Вже побачив зараз виправлю
vovkpro @ Сегодня, 11:35
, Ніби працює... Дуже Вам Дякую. Зараз піду до бухів. Хай Глянуть чи їм підходить.... Можливо ще прийдеться вивести ціну у гривні...
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 1
Profi_1C77, Profi_1C77, Вибачте, що турбую.... Можна ще в запросі зробити так щоби спочатку виводились лінійки товару потім лінійки його підпапок і потім лінійки головних папок товару... Під час такого виводу я зможу вибрати із довідника цін Закупочну, помножити її на залишок і отримати вартість товару на складі по цій ціні. Потім просумувати по підпапці і потім по головній папці.
vovkpro @ Сегодня, 15:21
, [необходимо зарегистрироваться для просмотра ссылки]
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 1
tibank @ Вчера, 21:54
, Замість запросів у мене є багато звітів на фокспро якщо мова йде про великі обєми інформаціїї. Фокспро в десятки разів скоріше працює із таблицями .dbf В яких 1С 7 зберігає свої дані. Особливо коли в базі велика кількість документів і сама по собі база виростає протягом року. Також на фокспро я кожного року обрізаю базу із декількох гігабайт до 400 мегабайт.... (обрізка відбувається протягом 30 хвилин) Єдине що в 1с кращий інтерфейс у звітах...
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 1
vovkpro @ Сегодня, 10:35
, Доробив через вигрузку у тз. Дещо криво але працює. Папки і підпапки сумуються по вартості товару. Звіт використовується не часто. Всім хто допомагав дякую.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!