Реализация внешней обработки по учёту объёма продаж

  • Автор темы Автор темы Nev
  • Дата начала Дата начала
Ни фига себе синтаксис! спасибо. :wacko:
 
|ТекДок = Регистр.Продажи.ТекущийДокумент.РасходнаяНакладная.ТекущийДокумент, |Регистр.Продажи.ТекущийДокумент.ZОтчет.ТекущийДокумент
Ой, сомневаюсь я, не сработает такое
 
Допустим, надо посчитать объём продаж в ед. измерениях. Т.е. продано 3 бутылки по 2л, в итоге получается 6л.
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
В справочник СвойствоНоменклатуры записывается Ёмкость
Как это высчитать в запросе?

|Условие(ПустоеЗначение(СвойствоН)=0);
Как сделать чтобы выводилось в отчёте это свойство, а под ним весь список реализованных товаров с этим свойством, и так для каждого свойства.
 
|Свойство = Справочник.СвойстваН.Емкость;
|Условие (Свойство = Товар.СвойствоН.Ёмкость);
|Условие (Свойство в ВыбСвойство);

можно ещё владельца определить - но по идее и так сработает. Первой группировкой ставишь свойство.

где Товар = Регистр.ПартииТоваров.Товар;

Обращение к реквизитам реквизитов не всегда работает. Поэтому проще сделать отдельно реквизит справочника, какой нужен, проставить условие, что он равен нужному нам (почему-то в условие обращение к реквизитам реквизитов пашет нормально), а потом фильтрануть по выбранному свойству.
 
puh14, к сожалению не очень разобрался с вашим ответом, но модель где перед списком товаров выводится его свойство смастерил.
А вот высчитать объём так и не смог. Что такое ВыбСвойство?

Пробовал писать в таблице выражение: Формат((Запрос.КоличествоРасход*Запрос.СНЕмк)/10, "Ч12.5") ищу декалитры
где
|Количество = Регистр.ПартииТоваров.Количество;
|Функция КоличествоРасход = Расход(Количество);
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
Всё считает, но вот Итог не знаю как высчитать.
 
Выбсвойство - это поле ввод с типом с значения справочник.СвойствоН на форме. Если выбрано - тогда выводятся товары только с этим свойством.

|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;

надо-же работает.. с таким синтаксисом отбор по свойству выглядит как

|Условие (СНЕмк в ВыбСвойство);


а итог сделай в отдельной переменной, чтобы при выводе строки где у тебя формула добавлялось значение формулы

ИтогоДекалитры = ИтогоДекалитры + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;

Только это надо поставить в выводе последней группировки - а то неправильно считать будет.
 
|СНЕмк = Регистр.ПартииТоваров.Товар.СвойствоН.Ёмкость;
|Функция ИтогСНЕмк = Сумма(СНЕмк);

//функция высчитывается на всех этапах запроса в каждой группировке
 
А нафига итог по емкости, если емкость нужна только для ИтогоДекалитры = ИтогоДекалитры + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;

вот если бы можно было

|Функция ИтогоДекалитры = (КоличествоРасход*СНЕмк)/10;

Кстати, офтоп а декалитры чего? :angry: Если это, о чем я думаю-то готов работать за декалитр-другой. :angry:
 
Наверное то, о чём вы думаете :rolleyes:

Как можно высчитать сумму продажи товара по стране?
Т.е. в карточке номенклатуры есть реквизит страна, нужно найти сумму продажи товаров не российского производства.
Писал:
СуммаЗарубОбщая = 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 = СпрСН.ТекущийЭлемент();
Как потом не эксперементировал, всё выписывает нули.

Опять какая нить глупая ошибка может затаилась. ;(
 
Попробуй и вторую группировку запроса использовать
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab