Как проанализировать самую первую группу на название "Производство"?" Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период С ДатаОтч по ДатаОтч; |Фирма = Регистр.ОстаткиТМЦ.Фирма; |Количество = Регистр.ОстаткиТМЦ.Количество; |Склад = Регистр.ОстаткиТМЦ.Склад; |Товар = Регистр.ОстаткиТМЦ.Номенклатура; // |Условие (Склад = Склады); // |Условие (Товар.Родитель = ""Производство""); |Функция Колво = КонОст(Количество); |Группировка Фирма; |Группировка Товар без групп;"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка("Фирма") = 1 Цикл Пока Запрос.Группировка("Товар") = 1 Цикл Если (Запрос.Колво < 0) Тогда |
как угодно , а почему именно на название ? а если там "производство крышек" |
при обходе как минимум если этогруппа т о равна ли сокрлп производство иначе товарродитель тоже самое ЗЫ в запросе несколько по другому ачо ? |
опять же - чоу значет - Как проанализировать [u]самую первую группу[/u] ??? |
У меня в справочнике в папке "Производство" на 2 уровне есть папки, на третьем . А товар может быть на третьем уровне, на четвертом . Вот мне нужно в выбрать товар, который принадлежит паке "Производство" независимо от уровня вложенность Вот |
ПринадлежитГруппе(<?>) Синтаксис: ПринадлежитГруппе(<Группа>) Назначение: Метод проверяет, принадлежит ли указанной группе текущий элемент справочника (независимо от того, на каком нижележащем уровне он находится). Возвращает: 1 - если элемент принадлежит указанной группе , 0 - если нет. или через стандартные условия // Процедура генерации запроса Сформировать. // Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//**{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Функция Счётчик = Счётчик(); |Группировка Номенклатура без групп; |Условие(Номенклатура в ВыбНоменклатура); |"//****ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Номенклатура Таб.ВывестиСекцию("Номенклатура"); КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
Выбноменклатура - элемент справочника - группа которая тебе нужна |
Если Найти(Запрос.Товар.Родитель.Родитель.Наименование,"Производство")>0 А если Родитель.Родитель.Родитель? |
(7) ниструя не кошерно ... ЗЫ вы случаем в рарусе не работали ? :)))) |
спр=СоздатьОбъект("Справочник.номенклатура"); спр.Найтипонаименованию("производство"); Выбноменклатура= спр.текущийэлемент(); но тоже хз - есть он у тя нету ... и группа ли вообще |
Вот это не срабатывает Если Запрос.Товар.ПринадлежитГруппе("Производство")=0 Тогда |
Мне нужно выбрать отрицательные остатки по товару и только для той номенклатуры,которая входит в группу производство |
бред тупых одноэсников берем полный путь и далее в нем ищем что надо хотя есть и более красивое и правильное решение |
(11) Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; пр=СоздатьОбъект("Справочник.номенклатура"); спр.Найтипонаименованию("производство"); Выбноменклатура= спр.текущийэлемент(); //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//**{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Функция Счётчик = Счётчик(); |Группировка Номенклатура без групп; |Условие(Номенклатура в ВыбНоменклатура); |"//****ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Номенклатура Таб.ВывестиСекцию("Номенклатура"); КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры (12) нука ... |
(10) и не сработает НИ КА ДА\ ЗЫ строка с элементом не сравнивается |
Вот так счас попробую .... ГруппаНоменкл = СоздатьОбъект("Справочник.Номенклатура"); ГрНоменкл = ГруппаНоменкл.НайтиПоНаименованию("Производство",0); Группа=ГрНоменкл.ТекущийЭлемент(); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Номенклатура"); ТЗ.НоваяКолонка("Количество","Число"); ТЗ.НоваяКолонка("Единица"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период С ДатаОтч по ДатаОтч; |Фирма = Регистр.ОстаткиТМЦ.Фирма; |Количество = Регистр.ОстаткиТМЦ.Количество; |Склад = Регистр.ОстаткиТМЦ.Склад; |Товар = Регистр.ОстаткиТМЦ.Номенклатура; |Условие (Товар.ПринадлежитГруппе(Группа)=1); |Функция Колво = КонОст(Количество); |Группировка Фирма; |Группировка Товар без групп;"; |
ГрНоменкл = ГруппаНоменкл.НайтиПоНаименованию("Производство",0 ); Группа=ГрНоменкл.ТекущийЭлемент(); ;)))))) жесть |
Теперь РАБОТАЕТ :)))))) СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); СпрНоменклатура.ВключатьПодчиненные(1); СпрНоменклатура.ВыбратьЭлементы(); Пока СпрНоменклатура.ПолучитьЭлемент() = 1 Цикл Если Найти(СпрНоменклатура.Наименование,"Производство")>0 Тогда Группа = СпрНоменклатура.ТекущийЭлемент(); КонецЕсли; КонецЦикла; СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); СпрНоменклатура.ВключатьПодчиненные(1); СпрНоменклатура.ВыбратьЭлементы(); Пока СпрНоменклатура.ПолучитьЭлемент() = 1 Цикл Если Найти(СпрНоменклатура.Наименование,"Производство")>0 Тогда Группа = СпрНоменклатура.ТекущийЭлемент(); КонецЕсли; КонецЦикла; |
и запрос к регистру на каждый элемент ? :))) |
(4) примени конструкцию <ТМЦвзапросе> в <ВыбранныйТМЦ> |
(4) (19) примени конструкцию з запросе Условие (<ТМЦвзапросе> в <ВыбранныйТМЦ>); |
|Условие(Номенклатура в ВыбНоменклатура); - всегда работало |
Текущее время: 07:35. Часовой пояс GMT +3. |