AI-выжимка обсуждения
скоро
Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.
Обзор обсужденияскоро
Разбор ответов скоро
Ключевые ответы обсуждения и их оценка появятся здесь.
Эксперты в тредескоро
Рейтинг участников скоро
Участники с сильными ответами в этой теме появятся здесь.
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
К курсу →
Сортировка
Обсуждаемые
Лучшие
Эксперты
скоро
Ой, сомневаюсь я, не сработает такое|ТекДок = Регистр.Продажи.ТекущийДокумент.РасходнаяНакладная.ТекущийДокумент, |Регистр.Продажи.ТекущийДокумент.ZОтчет.ТекущийДокумент
Допустим, надо посчитать объём продаж в ед. измерениях. Т.е. продано 3 бутылки по 2л, в итоге получается 6л.
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
В справочник СвойствоНоменклатуры записывается Ёмкость
Как это высчитать в запросе?
|Условие(ПустоеЗначение(СвойствоН)=0);
Как сделать чтобы выводилось в отчёте это свойство, а под ним весь список реализованных товаров с этим свойством, и так для каждого свойства.
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
В справочник СвойствоНоменклатуры записывается Ёмкость
Как это высчитать в запросе?
|Условие(ПустоеЗначение(СвойствоН)=0);
Как сделать чтобы выводилось в отчёте это свойство, а под ним весь список реализованных товаров с этим свойством, и так для каждого свойства.
|Свойство = Справочник.СвойстваН.Емкость;
|Условие (Свойство = Товар.СвойствоН.Ёмкость);
|Условие (Свойство в ВыбСвойство);
можно ещё владельца определить - но по идее и так сработает. Первой группировкой ставишь свойство.
где Товар = Регистр.ПартииТоваров.Товар;
Обращение к реквизитам реквизитов не всегда работает. Поэтому проще сделать отдельно реквизит справочника, какой нужен, проставить условие, что он равен нужному нам (почему-то в условие обращение к реквизитам реквизитов пашет нормально), а потом фильтрануть по выбранному свойству.
|Условие (Свойство = Товар.СвойствоН.Ёмкость);
|Условие (Свойство в ВыбСвойство);
можно ещё владельца определить - но по идее и так сработает. Первой группировкой ставишь свойство.
где Товар = Регистр.ПартииТоваров.Товар;
Обращение к реквизитам реквизитов не всегда работает. Поэтому проще сделать отдельно реквизит справочника, какой нужен, проставить условие, что он равен нужному нам (почему-то в условие обращение к реквизитам реквизитов пашет нормально), а потом фильтрануть по выбранному свойству.
puh14, к сожалению не очень разобрался с вашим ответом, но модель где перед списком товаров выводится его свойство смастерил.
А вот высчитать объём так и не смог. Что такое ВыбСвойство?
Пробовал писать в таблице выражение: Формат((Запрос.КоличествоРасход*Запрос.СНЕмк)/10, "Ч12.5") ищу декалитры
где
|Количество = Регистр.ПартииТоваров.Количество;
|Функция КоличествоРасход = Расход(Количество);
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
Всё считает, но вот Итог не знаю как высчитать.
А вот высчитать объём так и не смог. Что такое ВыбСвойство?
Пробовал писать в таблице выражение: Формат((Запрос.КоличествоРасход*Запрос.СНЕмк)/10, "Ч12.5") ищу декалитры
где
|Количество = Регистр.ПартииТоваров.Количество;
|Функция КоличествоРасход = Расход(Количество);
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
Всё считает, но вот Итог не знаю как высчитать.
Выбсвойство - это поле ввод с типом с значения справочник.СвойствоН на форме. Если выбрано - тогда выводятся товары только с этим свойством.
надо-же работает.. с таким синтаксисом отбор по свойству выглядит как
|Условие (СНЕмк в ВыбСвойство);
а итог сделай в отдельной переменной, чтобы при выводе строки где у тебя формула добавлялось значение формулы
ИтогоДекалитры = ИтогоДекалитры + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;
Только это надо поставить в выводе последней группировки - а то неправильно считать будет.
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
надо-же работает.. с таким синтаксисом отбор по свойству выглядит как
|Условие (СНЕмк в ВыбСвойство);
а итог сделай в отдельной переменной, чтобы при выводе строки где у тебя формула добавлялось значение формулы
ИтогоДекалитры = ИтогоДекалитры + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;
Только это надо поставить в выводе последней группировки - а то неправильно считать будет.
|Функция ИтогСНЕмк = Сумма(СНЕмк);|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
//функция высчитывается на всех этапах запроса в каждой группировке
А нафига итог по емкости, если емкость нужна только для ИтогоДекалитры = ИтогоДекалитры + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;
вот если бы можно было
|Функция ИтогоДекалитры = (КоличествоРасход*СНЕмк)/10;
Кстати, офтоп а декалитры чего? :angry: Если это, о чем я думаю-то готов работать за декалитр-другой. :angry:
вот если бы можно было
|Функция ИтогоДекалитры = (КоличествоРасход*СНЕмк)/10;
Кстати, офтоп а декалитры чего? :angry: Если это, о чем я думаю-то готов работать за декалитр-другой. :angry:
Наверное то, о чём вы думаете 
Как можно высчитать сумму продажи товара по стране?
Т.е. в карточке номенклатуры есть реквизит страна, нужно найти сумму продажи товаров не российского производства.
Писал:
СуммаЗарубОбщая = 0;
|Страна = Регистр.ПартииТоваров.Товар.Страна.ТекущийЭлемент;
|Сумма = Регистр.ПартииТоваров.СуммаПродажиРуб;
Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Страна <> "РОССИЯ" Тогда
СуммаЗарубОбщая = СуммаЗарубОбщая+ Запрос.Сумма;
КонецЕсли;
КонецЦикла;
Что то не то высчитывает...
Как можно высчитать сумму продажи товара по стране?
Т.е. в карточке номенклатуры есть реквизит страна, нужно найти сумму продажи товаров не российского производства.
Писал:
СуммаЗарубОбщая = 0;
|Страна = Регистр.ПартииТоваров.Товар.Страна.ТекущийЭлемент;
|Сумма = Регистр.ПартииТоваров.СуммаПродажиРуб;
Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Страна <> "РОССИЯ" Тогда
СуммаЗарубОбщая = СуммаЗарубОбщая+ Запрос.Сумма;
КонецЕсли;
КонецЦикла;
Что то не то высчитывает...
|Условие (Найти(Страна.Наименование,""РОССИЯ"")>0);
если и так не находит - тогда РОССИЯ написано неправильно - мож англицкая буква затесалась.
если и так не находит - тогда РОССИЯ написано неправильно - мож англицкая буква затесалась.
СокрЛП(Запрос.Страна.наименование)<>"РОССИЯ" //если есть наменовние
Спр = создатьобъект("Справочник.СтраныХХХ");//в торговле помоему ОКСМ
Спр.НайтиПоКоду("ХХХХ");//внимательнее код бывает строка и число
Запрос.Страна<> Спр.ТекущийЭлемент()
Спр = создатьобъект("Справочник.СтраныХХХ");//в торговле помоему ОКСМ
Спр.НайтиПоКоду("ХХХХ");//внимательнее код бывает строка и число
Запрос.Страна<> Спр.ТекущийЭлемент()
Перед запросом найти элемент справочника "Страны" :А как сравнить с элементом справочника?
Спр = СоздатьОбъект("Справочник.Страны");
Спр.НайтиПоНаименованию("Россия");
Россия = Спр.ТекущийЭлемент();
и в условии Россия без кавычек
Не помогает... всё равно выводит 345 или 274, в зависимости от способа... а должно быть 1200. Это за исследоваемый период.
Код:
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
СуммаЗарубОбщая = 0;
СпрСтрана=СоздатьОбъект("Справочник.Страны");
СпрСтрана.НайтиПоНаименованию("РОССИЯ");
Россия = СпрСтрана.ТекущийЭлемент();
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|Товар = Регистр.ПартииТоваров.Товар;
|Наименование = Регистр.ПартииТоваров.Товар.Наименование;
|СвойствоН = Регистр.ПартииТоваров.Товар.СвойствоН;
|ТекСвойствоН = Регистр.ПартииТоваров.Товар.СвойствоН.ТекущийЭлемент;
|ТекущийДокумент = Регистр.ПартииТоваров.ТекущийДокумент.ZОтчет.ТекущийДокумент;
|Количество = Регистр.ПартииТоваров.Количество;
|ЕдИзм = Регистр.ПартииТоваров.Товар.БазоваяЕдиница.ТекущийЭлемент;
|Страна = Регистр.ПартииТоваров.Товар.Страна.ТекущийЭлемент;
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
|Сумма = Регистр.ПартииТоваров.СуммаПродажиРуб;
|Функция СуммаПродажи = Расход(Сумма);
|Функция КоличествоРасход = Расход(Количество);
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка Наименование;
|Группировка ТекущийДокумент;
|Условие(ПустоеЗначение(СвойствоН)=0);
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
СпрСН=СоздатьОбъект("Справочник.СвНом");
СпрСтрана=СоздатьОбъект("Справочник.Страны");
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Общий");
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Страна <> Россия Тогда
СуммаЗарубОбщая = СуммаЗарубОбщая + Запрос.Сумма;
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Таблица");
Таб.ТолькоПросмотр(1);
Таб.Показать("Учёт (общий)", "");
КонецПроцедуры
СуммаЗарубОбщая = СуммаЗарубОбщая + Запрос.СуммаПродажи;СуммаЗарубОбщая = СуммаЗарубОбщая + Запрос.Сумма;
Код:
|Строка = Регистр.ПартииТоваров.Товар.СвойствоН.Строка;
Если [b]СокрЛП(Запрос.Строка) = "14"[/b] Тогда
ДекаСтр14 = ДекаСтр14 + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;
СуммаСтр14 = СуммаСтр14 + Запрос.СуммаПродажи;
Если Запрос.Страна <> Россия Тогда
ДекаСтрЗаруб14 = ДекаСтрЗаруб14 + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;
СуммаЗарубСтр14 = СуммаЗарубСтр14 + Запрос.СуммаПродажи;
КонецЕсли;
КонецЕсли;
А как тут сравнить с элементом справочника? Строка, это реквизит справочника, типа строка.
так же, как и с другим элементом справочника )))А как тут сравнить с элементом справочника?
Ну делал как и в предыдущем случае, находил элемент справочника...
СпрСН.НайтиПоНаименованию("14");
Стр14 = СпрСН.ТекущийЭлемент();
Как потом не эксперементировал, всё выписывает нули.
Опять какая нить глупая ошибка может затаилась. ;(
СпрСН.НайтиПоНаименованию("14");
Стр14 = СпрСН.ТекущийЭлемент();
Как потом не эксперементировал, всё выписывает нули.
Опять какая нить глупая ошибка может затаилась. ;(
Поиск в обсуждении
Ещё по теме
4
Поделиться: