• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Nev

Здравствуйте...
Существует частная конфигурация приемущественно оперативного учёта, на которую недавно села некая организация. До этого была типовая Торговля и Склад.
Задачей является реализация внешней обработки\отчёта, выводящей результаты продаж розничного товара за определённый период, с ранжированием товара по свойству номенклатуры (реквизиту карточки номенклатуры).
Свойство это присутствовало в Торгове и Склад, но в новой конфигурации его нет.

Пример отчёта:

Номер Наименование Реализовано
Свойство №1
1 Товар №1 500
2 Товар №2 200
Свойство №2
3 Товар №3 125
.... и т.д.
Т.е. к каджому свойству относится группа товара.

Принцип работы примерно такой:
Должностное лицо заполняет свойства номенклатуры, которые как то должны связываться с группами товаров карточки номенклатуры, и строится отчёт.

Каким образом и как можно реализвать этот механизм (до построения самого отчёта), не меняя информационную базу изнутри, т.е. не добавляя справочников, реквизитов, не изменяя программный код существующей конфигурации.

С уважением, Nev.
 
K

KiR

По идее это некое свойство можно занести в какой-нить существующий пустой реквизит справочника товары. А в обработке сделать табчасть и поле со списком значений. В список значений добавлять свойство из реквизита (получим список всех свойств с возможностью выбора нужных). А потом по выбранному списку отбираем реализованные товары. Я бы делал так, но возможно есть и более оптимальный способ..
 
P

puh14

Никак - если этого свойства нет, то и сгруппировать по нему не получится. Надо добавлять реквизит в справочник номенклатура ( лучше всего), либо сделать внешний файлик (ДБФ например) - где будет прописано соответствие кода товара свойству. ПРи отчете , пробегаясь по нему будет заполняться список товаров с нужным свойством, и потом это список будет участвовать в фильтре. А код отчета по любому менять придется.
Как вариант - использовать в качестве свойства группу товаров (родителя). Большинство отчетов родителя показывают, так что по любому видно будет.
 
N

Nev

Спасибо за ответы.

puh14, можно поподробнее о реализации соответствия кода товара свойству в дбф...? Нужно к одному свойству привязать группу товаров, желательно интерактивно.
Т.е. я представляю примерно как внести свойства, но как из связать с группами товаров....
 
T

tanat

Помоему, вы собираетесь идти ложным путем. Для чего вообще необходимо данное свойство? Для того, чтоб красиво макет рисовался? Если его нет в данных, то не проще уж тогда вместо этого свойства просто использовать другое? Например ценовые группы или тип товар-услуга?
 
P

puh14

puh14, можно поподробнее о реализации соответствия кода товара свойству в дбф...? Нужно к одному свойству привязать группу товаров, желательно интерактивно.
Т.е. я представляю примерно как внести свойства, но как из связать с группами товаров....

Да геморрой это - на самый крайний случай. И на больших объемах будет медленно работать. В чем такая острая необходимость не менять конфу? Если надо ранжировать группы, то чем не устраивает собственно иерархическая структура справочника? верхняя папка - это свойство, по которому ранжируют, ниже - группа товаров, ниже элементы - собсно товары. Если надо перенести папку товаров из одного свойства в другое- меняешь нужной папке родителя.
 
K

KiR

а почему нельзя использовать какой-нить существующий реквизит, который не используется по назнаению?
 
N

Nev

Данное свойство необходимо для ранжирования товаров, на основе которого составляется ведомость.


Добавление нового реквизита на форму карточки номенклатуры, или изменение типа существующего, если он не используется в операциях, как то может повлиять на работу системы? вызвать косвенно какие то изменения в информационной базе. А также перенос карточек из одной группы в другую?... Если база к примеру ведётся давно... Т.е. если пойти простым путём и просто добавить реквизит и справочник связанный с ним.... где будут находится эти свойства номенклатуры.
 
N

Nev

Доброго времени суток.

Я добавил реквизит в карточку номенклатуры типа справочник, который отражает свойства товаров. Но заполняться он будет только у определённой группы товаров. ( например: Молочные продукты : жирность )
Вопрос: каким образом можно сделать выборку продаж товаров из регистров по условию что этот реквизит заполнен?
Всмысле как прописать, чтобы товары отбирались при условии что реквизит заполнен? можно запросом.
 
K

kaa

Условие (ПустоеЗначение(Переменная)=0)
 
N

Nev

Код:
|Условие(ТекущийДокумент.Вид()=""ZОтчет"");
Как по аналогии сделать условие, при котором данные будут выниматься из двух и более документов?

Код:
Если (Рег.ПоДокументу.Вид()<>"РасходнаяНакладная")		
И (Рег.ПоДокументу.Вид()<>"ZОтчет") Тогда
Продолжить;
КонецЕсли;
Мой вариант без запроса. Не работает. ПоДокументу - измерение регистра, куда в документах, в ПриПроведении() прописывается ТекущийДокумент().
 
P

puh14

Как по аналогии сделать условие, при котором данные будут выниматься из двух и более документов?
Загони нужные виды документов в список значениий и
|Условие(ТекущийДокумент.Вид() в СписокЗначений);

Если (Рег.ПоДокументу.Вид()<>"РасходнаяНакладная")
И (Рег.ПоДокументу.Вид()<>"ZОтчет") Тогда
Продолжить;
КонецЕсли;

конечно не работает! - если у тебя расходная накладная то она одновременно не может быть ZОтчет, вот и пролеташь. ИЛИ вместо И надо и равенство вместо <>, а продожить повесить на Иначе
 
N

Nev

Загони нужные виды документов в список значениий и
|Условие(ТекущийДокумент.Вид() в СписокЗначений);

Т.е. до запроса создать СЗ, а в условии "СписокЗначений"-переменная которой мы его присвоим?

конечно не работает! - если у тебя расходная накладная то она одновременно не может быть ZОтчет, вот и пролеташь. ИЛИ вместо И надо и равенство вместо <>, а продожить повесить на Иначе

А я считал что это будет читаться как:
При переборе, если выбранный документ не равен Расходной накладной, и не равен ZОтчёту, тогда пропускаем его. (условие в цикле)

Такой ещё вопрос, как можно найти конечный остаток продукции из регистров? В запросах есть спец Функции.. атак...
 
P

puh14

Функция Остаток = КонОст(Количество);
 
N

Nev

Загони нужные виды документов в список значениий и
|Условие(ТекущийДокумент.Вид() в СписокЗначений);
Что то не получается... можно пример?

конечно не работает! - если у тебя расходная накладная то она одновременно не может быть ZОтчет, вот и пролеташь. ИЛИ вместо И надо и равенство вместо <>, а продожить повесить на Иначе
Т.е. должно выглядить так? И что стоять в условии, пустое место оставить?
Код:
Если (Рег.ПоДокументу.Вид()="РасходнаяНакладная") 
ИЛИ (Рег.ПоДокументу.Вид()="ZОтчет") Тогда
Иначе
Продолжить;
КонецЕсли;
 
K

kaa

Не мудрите:
|ТекДок = РасходнаяНакладная.ТекщийДокумент(),ZОтчет.ТекущийДокумент();
|Группировка ТекДок;
 
P

puh14

ТекДок = РасходнаяНакладная.ТекщийДокумент(),ZОтчет.ТекущийДокумент();
|Группировка ТекДок;

Это если документы перебирать - а если текущий документ регистра? Тож сработает?
 
V

vbs

(Рег.ПоДокументу.Вид()="РасходнаяНакладная") ИЛИ (Рег.ПоДокументу.Вид()="ZОтчет")
Рег.ПоДокументу.Вид()<>"РасходнаяНакладная") И (Рег.ПоДокументу.Вид()<>"ZОтчет")
Забавная дискуссия на тему булевой алгебры
оба условия, по сути идентичны, ибо отрицание суммы есть произведение отрицаний и наоборот
 
K

kaa

Это если документы перебирать - а если текущий документ регистра? Тож сработает?
|ТекДок = Регистр.Продажи.ТекущийДокумент.РасходнаяНакладная.ТекущийДокумент, |Регистр.Продажи.ТекущийДокумент.ZОтчет.ТекущийДокумент;
 
Мы в соцсетях:

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