• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы Nev
  • Дата начала
P

puh14

И что же это за наименование ? может таки код? Тогда надо НайтиПоКоду()
 
N

Nev

Не помогает...
Может я иду вообще ложным путём.

Есть справочник СвойстаНоменклатуры с реквизитами: Код, Наименование, Ёмкость, Строка.
В реквизит строка вписываются значения от 14 до 26.
По каждому свойству с определённым реквизитом строка нужно высчитать объём продаж и декалитры.
Код:
Если СокрЛП(Запрос.Строка) = "14" Тогда 
ДекаСтр14 = ДекаСтр14 + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10; 
СуммаСтр14 = СуммаСтр14 + Запрос.СуммаПродажи; 
Если Запрос.Страна <> Россия Тогда  
ДекаСтрЗаруб14 = ДекаСтрЗаруб14 + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;	
СуммаЗарубСтр14 = СуммаЗарубСтр14 + Запрос.СуммаПродажи;	 
КонецЕсли;			 
КонецЕсли;
Решил что можно сделать это такими вот условиями, может есть способ лучше, а я занимаюсь ерундой?
 
V

vbs

Тогда надо в справочнике использовать метод
НайтиПоРеквизиту("Строка","14");
 
K

kaa

измените идентификатор реквизита со Строка на какой-нибудь другой
 
N

Nev

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

|Группировка Наименование;
|Группировка Строка;
|Группировка ТекущийДокумент;

Возможно расчитать КоличествоРасход, Декалитры в первой группировке, но вывести их во второй? Отдельно вывести допустим 3 группировку без первых? Необходимо чтобы каждый элемент "Строка" выводился отдельной строчкой, единственной для каждого.
При расчёте во второй группировке, результат неправилен (Дека = Дека + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;, и в отдельности Запрос.КоличествоРасход*Запрос.СНЕмк).
 
N

Nev

Код:
СпрСН.ИспользоватьРодителя(ВыбСвойство);
СпрСН.ВыбратьЭлементы();
Пока СпрСН.ПолучитьЭлемент() = 1 Цикл
Если ПустоеЗначение(ВыбСвойство) = 0 Тогда
Если СпрСН.ТекущийЭлемент() = Запрос.ТекСвойствоН Тогда
Таб.ВывестиСекцию("СвойствоН");
КонецЕсли;
Иначе
Таб.ВывестиСекцию("СвойствоН");
КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
Если СпрСН.ТекущийЭлемент() = Запрос.ТекСвойствоН Тогда
ИтогоДекалитры = ИтогоДекалитры + (Запрос.КоличествоРасход*Запрос.СНЕмк)/10;
Таб.ВывестиСекцию("Наименование");
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
КонецЦикла;

Почему при СпрСН.ИспользоватьРодителя(ВыбСвойство); ничего не выдаёт?
 
V

vbs

А ты хорошо разобрался со справочниками "ВидыСвойств" и "ЗначенияСвойств" (который подчинен предыдущему) ?
 
N

Nev

В этой конфигурации они отстутсвуют... пойду читать о них.
 
V

vbs

почитай их описания в конфигураторе
 
N

Nev

Прочёл, но не могу понять каким образом эти справочники связаны с проблемой использования метода ИспользоватьРодителя? Тем более что в данной конфигурации они отстутствуют.
 
N

Nev

ВыбСвойство - реквизит формы обработки, типа справочник.СвНом.
При выборе группы в реквизите... в отчёт ничего не выводится.. если же выбрать элемент всё работает.
 
V

vbs

а СпрСН какой тип имеет ?
И как это связано с типом СвНом ?
 
N

Nev

СпрСН=СоздатьОбъект("Справочник.СвНом");
 
N

Nev

Разобрался.
Осталось только выяснить почему ИспользоватьРодителя не работает.
 
N

Nev

|СвойствоН = Регистр.ПартииТоваров.Товар.СвойствоН;

Если ПустоеЗначение(ВыбСвойство) = 0 Тогда
ТекстЗапроса = ТекстЗапроса +"
|Условие(СвойствоН = ВыбСвойство);
|";
КонецЕсли;

Пришёл к заключению что Использовать Родителя не работает т.к. в запросе выбираются элементы. Поэтому отчёт выводится пустым. Как это можно решить?
 
N

Nev

Никто не подскажет, как сделать чтобы запрос отбирал значения из реквизита типа справочник, если в нём выбрана группа (родитель)?
 
P

puh14

|Условие (Справочник.Родитель в ВыбРодитель);

что-то такое.

справочник - объявленный справочник
Выбродитель - переменная ( хошь на форме заполняй, хошь программно)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!