» | Казахстанский Бухгалтерский форум www.balans.kz | Как получить по номенклатуре нулевые остатки в 8.1 |
|
Показать сообщения: Начиная со старых .::. Начиная с новых |
Автор: | BEN | ||
Добавлено: | #1  Вт Июн 09, 2009 12:04:52 | ||
Заголовок сообщения: | Как получить по номенклатуре нулевые остатки в 8.1 | ||
Имеется (ниже) следующий код, здесь выбирается только номенклатура с не нулевыми остатками, как получить нулевой остаток по номенклатуре
|
Автор: | Raybek | ||
Добавлено: | #2  Вт Июн 09, 2009 13:35:10 | ||
Заголовок сообщения: | |||
Это - та номенклатура, которой нет в результате запроса Запрос.Выполнить().Выгрузить(). ВыборкаНоменклатуры=Справочники.Номенклатура.Выбрать(); Пока ВыборкаНоменклатуры.Следующий() Цикл Если ТабличнаяЧастьИнфо.Найти(ВыборкаНоменклатуры.Наименование, "Субконто1")<>Неопределено Тогда Продолжить КонецЕсли; МинЗапас = ВыборкаНоменклатуры.МинимальныйЗапас; Если МинЗапас <> 0 Тогда ЭлементыФормы.ТабличноеПолеОтчет.ДобавитьСтроку(); ПеремСтрокаОтчет = ЭлементыФормы.ТабличноеПолеОтчет.ТекущаяСтрока; ПеремСтрокаОтчет.Субконто1 = ВыборкаНоменклатуры.Наименование; ПеремСтрокаОтчет.МинимальныйЗапас = МинЗапас; ПеремСтрокаОтчет.Остатки = 0; ПеремСтрокаОтчет.ПланЗакупа = МинЗапас; КонецЕсли; КонецЦикла; Добавлено спустя 1 минуту 40 секунд: В смысле код, предложенный выше, продолжает имеющийся |
Автор: | BEN | ||||
Добавлено: | #3  Вт Июн 09, 2009 13:50:31 | ||||
Заголовок сообщения: | |||||
Сработало частично, только почему то группы выбрались а не сами элементы номенклатуры, а в них МинЗап нет. |
Автор: | Raybek |
Добавлено: | #4  Вт Июн 09, 2009 13:57:55 |
Заголовок сообщения: | |
Переделай Если ТабличнаяЧастьИнфо.Найти(ВыборкаНоменклатуры.Наименование, "Субконто1")<>Неопределено Тогда Продолжить КонецЕсли; НА Если (ТабличнаяЧастьИнфо.Найти(ВыборкаНоменклатуры.Наименование, "Субконто1")<>Неопределено)ИЛИ(ВыборкаНоменклатуры.ЭтоГруппа) Тогда Продолжить КонецЕсли; |
Автор: | BEN | ||
Добавлено: | #5  Вт Июн 09, 2009 14:10:06 | ||
Заголовок сообщения: | |||
В принципе оно и с этим условием почему то не выбрало, но за идею спасибо буду думать |
Автор: | BEN | ||
Добавлено: | #6  Вт Июн 09, 2009 15:29:07 | ||
Заголовок сообщения: | |||
RaybekЧто то у меня ничего не выходит, ступор поймала, помогите еще пожалуйста
если делаю = неопределено выбирает все (группы я в начале решила исключить) |
Автор: | Raybek |
Добавлено: | #7  Вт Июн 09, 2009 15:43:56 |
Заголовок сообщения: | |
В смысле, если "<>Неопределено" - вообще с нулевыми остаками номенклатура не выходит? Добавлено спустя 1 минуту 14 секунд: Или ошибку в коде выдает? |
Автор: | d.Fedor |
Добавлено: | #8  Вт Июн 09, 2009 15:45:26 |
Заголовок сообщения: | |
А не проще использовать сразу в запросе исключить группы и сравнить с ЕстьNUL через соеденение со справочником? |
Автор: | Raybek |
Добавлено: | #9  Вт Июн 09, 2009 15:50:16 |
Заголовок сообщения: | |
d.Fedor Стыдно признаваться, но запросами в 1С никогда не пользовался. Только неделю их изучаю. d.Fedor Можно поподробнее в виде кода с подробными коментариями? |
Автор: | BEN | ||||
Добавлено: | #10  Вт Июн 09, 2009 15:51:14 | ||||
Заголовок сообщения: | |||||
Вообще никакая номенклатура тогда не выводиться, если "<>Неопределено" Добавлено спустя 2 минуты 19 секунд:
Запарилась я с запросами вроде все правильно делаю (по книжки, по советам из форума), а там все не так работает как ты хочешь. Поэтому хоть так что то сдвинулось. Может Вы что нибудь посоветуйте |
Автор: | Raybek | ||||
Добавлено: | #11  Вт Июн 09, 2009 15:56:33 | ||||
Заголовок сообщения: | |||||
Лишние пробелы? Если тип колонки "Субконто1" - строка Тогда попробовать
Или может все дело в тип колонки "Субконто1" - вообще "СправочникСсылка.Номенклатура"? Тогда попробуйте
|
Автор: | d.Fedor | ||
Добавлено: | #12  Вт Июн 09, 2009 16:00:45 | ||
Заголовок сообщения: | |||
Ну например типа такого (я по российской конфигурации делал), думаю суть ухватите
То есть смысл таков, выбираем из справочника только те что отсутствуют в регистре (то есть NULL), по сути они и есть нулевые.. |
Автор: | BEN | ||||||||||
Добавлено: | #13  Вт Июн 09, 2009 16:01:05 | ||||||||||
Заголовок сообщения: | |||||||||||
В первом случае невыходит ничего во втором все даже что и не должно. Добавлено спустя 3 минуты 9 секунд:
аналогичное я это делала, когда идет ТабличнаяЧастьИнфо.Загрузить(Запрос.Выполнить().Выгрузить())почему то требует имя таблицы Добавлено спустя 3 минуты 57 секунд: Raybek загвозка наверное в "Субконто1" потомучто когда в сообщение делаю вывести ВыборкаНоменклатуры.Наименование она правильно выводит, а как проверить что в Субконто1 |
Автор: | KrEAtive | ||
Добавлено: | #14  Вт Июн 09, 2009 16:09:26 | ||
Заголовок сообщения: | |||
Что значит нулевой остаток - те, которые когда-то были и не стало? Тогда нужно брать виртуальную таблицу ОстаткиИОбороты и по ней строить запрос. Причем придется брать два параметра, то есть еще и дату начала. Просто по таблице остатков нулевые не вылезут, т.к. остатка нет и в таблице Остатки их не будет. Если не важно, был оборот или нет по ТМЦ - то нужно делать ВНЕШНЕЕ СОЕДИНЕНИЕ в запросе: таблицу Справочник.Номенклатура и РегистрБухгалтерии.Типовой.Остатки |
Автор: | BEN | ||||
Добавлено: | #15  Вт Июн 09, 2009 16:14:45 | ||||
Заголовок сообщения: | |||||
можно показать на конкретном примере моего кода, потомучто как писала выше уже все способы за 3 дня перепробывала и уже туплю |
Автор: | Raybek | ||||
Добавлено: | #16  Вт Июн 09, 2009 16:17:00 | ||||
Заголовок сообщения: | |||||
|
Автор: | KrEAtive |
Добавлено: | #17  Вт Июн 09, 2009 16:19:26 |
Заголовок сообщения: | |
ХозрасчетныйОстатки.Субконто3 зачем, или у Вас партионный учет? |
Автор: | BEN | ||
Добавлено: | #18  Вт Июн 09, 2009 16:23:11 | ||
Заголовок сообщения: | |||
это не мое, я BEN, выше смотрите |
Автор: | KrEAtive |
Добавлено: | #19  Вт Июн 09, 2009 16:30:29 |
Заголовок сообщения: | |
Тогда вот так: ВЫБРАТЬ ТиповойОстатки.Субконто2, ТиповойОстатки.КоличествоОстатокДт, Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.Остатки(, , , ) КАК ТиповойОстатки ПО (ТиповойОстатки.Субконто1 = Номенклатура.Ссылка) ГДЕ ТиповойОстатки.КоличествоОстатокДт ЕСТЬ NULL Парамеры не ставил, можете поставить. Если нужны все (и нулевые и ненулевые), тогда уберите условие Добавлено спустя 2 минуты 4 секунды: А вообще, МинЗапас = ЭлементНоменклатуры.МинимальныйЗапас - это корявенько. Такие дела нужно в одном запросе выбирать |
Автор: | BEN | ||
Добавлено: | #20  Вт Июн 09, 2009 16:36:50 | ||
Заголовок сообщения: | |||
Сама понимаю корявенько, но я учусь. В 7.7 работала с 1998года там ночью подыми раскажу как писать, а здесь пока тяжеловато даже днем. Добавлено спустя 1 минуту 59 секунд: Мужики спасибо, раслабтесь, у меня все получилось. ОГРОМЕННОЕ СПАСИБО!!!! :) :Rose: :kez_07: |
Автор: | Raybek |
Добавлено: | #21  Вт Июн 09, 2009 16:41:02 |
Заголовок сообщения: | |
А как сделали? Добавлено спустя 14 минут 22 секунды: И еще может помочь разобраться с запросами в 8-ке. Щас сам изучаю :D . Видеолекции по работе с запросами в 8-ке [url]chistov.spb.ru[/url] Онлайн упражнения по SQL Добавлено спустя 30 секунд: |
Автор: | Darjal |
Добавлено: | #22  Вт Июн 09, 2009 17:15:49 |
Заголовок сообщения: | |
Йоу! Шедеврально, ребят, чесслово: ПеремСтрокаОтчет.ПланЗакупа = МинЗапас - ПеремСтрока.КоличествоОстатокДт; Не понял, запрос ВСЕ остатки берет, по всем счетам? Супер. МинимальныйЗапас - слабо в запросе было получить, а? Еще шедеврально: ЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ПеремСтрока.Субконто1); Наименование одинаковое, что делать бум тогда? BEN, если есть желание - нормально схему эту реализовать - показать таблицу товаров, у которой остаток меньше минзапаса - welcome, начнем с самого начала? В каком доке, обработке, отчете "привязываете" сей функционал? |
Автор: | BEN | ||||
Добавлено: | #23  Вт Июн 09, 2009 17:20:19 | ||||
Заголовок сообщения: | |||||
В этом коде я выбираю данные и закидываю в другую виртуальную таблицу ТабличнаяЧастьОтчет [/code] Для Каждого ПеремСтрока Из ТабличнаяЧастьИнфо Цикл ЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ПеремСтрока.Субконто1); МинЗапас = ЭлементНоменклатуры.МинимальныйЗапас; Если МинЗапас <> 0 Тогда Если ПеремСтрока.Субконто2 = "Основной склад" Тогда Если ПоискСчета Или (ПеремСтрока.Счет = РеквизитСчет.Код) Тогда Если ПеремСтрока.КоличествоОстатокДт < МинЗапас Тогда ЭлементыФормы.ТабличноеПолеОтчет.ДобавитьСтроку(); ПеремСтрокаОтчет = ЭлементыФормы.ТабличноеПолеОтчет.ТекущаяСтрока; ПеремСтрокаОтчет.Субконто1 = ПеремСтрока.Субконто1; ПеремСтрокаОтчет.МинимальныйЗапас = МинЗапас; ПеремСтрокаОтчет.Остатки = ПеремСтрока.КоличествоОстатокДт ; ПеремСтрокаОтчет.ПланЗакупа = МинЗапас - ПеремСтрока.КоличествоОстатокДт; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; [/code] Поэтому сделала дальше так:
|