Использование характеристик в СКД




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2025-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

75 Comments

  1. fishca
    Непонятные ему реквизиты конфигураток отобразит красными крестами, как недоступные:

    подправь

    Reply
  2. vkt

    Если в типовой УПП 1.3 взять, допустим, отчет Ведомость товары на складах, то обнаружим, что в нем используется СКД.

    Откроем ОсновнуюСхемуКомпоновкиДанных, увидим текст запроса. В этом запросе подключаются Свойства и Характеристики объектов. Используется следующий синтаксис:

    — для Категорий:

    {ХАРАКТЕРИСТИКИ

    ТИП(Справочник.ХарактеристикиНоменклатуры)

    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ

    КатегорииОбъектов.Ссылка,

    КатегорииОбъектов.Наименование

    ИЗ

    Справочник.КатегорииОбъектов КАК КатегорииОбъектов

    ГДЕ

    КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры))

    ПОЛЕКЛЮЧА Ссылка

    ПОЛЕИМЕНИ Наименование

    ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КатегорииОбъектов

    ПОЛЕОБЪЕКТА Объект

    ПОЛЕВИДА Категория }

    — для Свойств:

    {ХАРАКТЕРИСТИКИ

    ТИП(Справочник.Контрагенты)

    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ

    СвойстваОбъектов.Ссылка,

    СвойстваОбъектов.Наименование,

    СвойстваОбъектов.ТипЗначения

    ИЗ

    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов

    ГДЕ

    СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Контрагенты))

    ПОЛЕКЛЮЧА Ссылка

    ПОЛЕИМЕНИ Наименование

    ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения

    ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов

    ПОЛЕОБЪЕКТА Объект

    ПОЛЕВИДА Свойство

    ПОЛЕЗНАЧЕНИЯ Значение }

    Для своих разработок можно просто скопировать соответствующую часть типового запроса в свой запрос.

    Reply
  3. anig99

    Ещё не хватает способа, как заставить в отборе при выборе характеристики предлагать как значение, только значения этой характеристики, а не весь справочник.

    Reply
  4. DoctorRoza

    Пожалуйста! Отправьте мне на doctorroza@mail.ru копию статьи в формате .doc. Возьму себе на вооружение идею! Заранее благодарю!

    Reply
  5. dimanich70

    Не пойму, что мешало 1С так же подробно объяснить.

    Reply
  6. DitriX

    (4) DoctorRoza, отправлено.

    Reply
  7. DitriX

    Работа с характеристиками в системе СКД рассматривается в книге: «Разработка сложных отчетов в 1С:ПРЕДПРИЯТИИ 8. Система компоновки данных«. В книге также рассматриваются другие вопросы, рекомендую к прочтению.

    Reply
  8. gr0ck

    Да, сам как-то с этим сталкивался.

    Надо будет кстати почитать книжку Хрусталевой. Есть в электронном виде, но читать неудобно.

    Reply
  9. dkprim

    весьма полезная статья. коротко и доступно — «на пальцах и картинках» 🙂 спасибо, товариЩ 🙂

    Reply
  10. Alex@ander

    Даже сильно не вчитываясь всё понял, поскольку всё разобрано и оставалось только проглотить. Спасибо что потратил время и всё разжевал!

    Reply
  11. krv2k

    (3) это вопрос или пожелание к публикации?

    Reply
  12. anig99

    (11) это пожелание к публикации. Вывод всех значений характеристик при настройке отбор — сильно бесит.

    Я находил решение этой проблемы, но оно было муторное. Поэтому когда я случайно удалил обработку, то повторять это не осталось сил. Сейчас нет такой необходимости, чтобы отложить более актуальные проекты и поискать это решение снова или придумать проще.

    Reply
  13. krv2k

    (12)

    Для управляемых форм все достаточно просто. Пример для типовых:

    Нужно полю Значение регистра сведений ЗначенияСвойствОбъектов добавить связь параметра выбора Отбор.Владелец с реквизитом Свойство.

    Reply
  14. anig99

    (13) спасибо. Не знал. Поэкспериментирую у себя в конфе. Но когда это появится в типовых — неизвестно. Так что вопрос остается частично открытым: как это сделать в самом отчете, не исправляя конфигурацию

    Reply
  15. Alexey55

    Спасибо! Все понял

    Reply
  16. zhleonid8

    работает безб

    Reply
  17. mrXoxot

    Автору огромная благодарность за красивое и толковое разъяснение ситуации. Совсем недавно столкнулся с характеристиками в отчете. Сделал по Хрусталевой, а вот про то как выбрать только те характеристики, которые принадлежат данному справочнику не знал. Еще раз огромная благодарность.

    Reply
  18. lexi

    Автору спасибо за раъяснения.

    Reply
  19. Yashazz

    Автор может дополнительно рассказать, или поделиться ссылкой, насчёт особенностей работы с характеристиками любого объекта в конфигураторе 8.2?

    Reply
  20. WaterSmith

    (20) Yashazz, Не понял вопроса. Опишите подробно проблему с которой вы столкнулись.

    Reply
  21. sumixam

    спасибо но вот прочитать ника не получается можно на почту выслать

    Reply
  22. echo77

    Да, хорошая статья. Натолкнула на мысль посмотреть как это сделано в типовых отчетах 1С

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

    Reply
  23. Dushka

    Благодарю! Очень пригодилась статья в нашем учете с милионными характеристиками, это как нельзя кстати. Стыдно, но раньше вложенными запросами приходилось вытаскивать характеристики.

    (23) тут, наверно, надо Источник значений ставить тоже запрос и делать отбор по свойству конкретному. Попробую сделать.

    Reply
  24. pawellkrv

    Благодарю автора! Руки не как не доходили, посмотреть какк этим пользоватся, а тут публикация и как раз только отчет начал мастерить по оборудованию 🙂

    Reply
  25. WaterSmith

    (23) echo77, (24) Dushka, Источник значений, тоже запросом, в этой ситуации не поможет, потому что при выборе значения в отборе срабатывает связь по типу, и открывается соответствующая форма списка, в нашем случае «РегистрСведений.ЗначенияСвойств». А у этой формы списка нет отбора по владельцу. Решение для управляемых форм есть в (13)

    Reply
  26. anig99

    (23) (24) подтверждаю. Запросом не получается. Всё равно выводит весь список, или только какой-то фиксированный набор

    Reply
  27. andrys

    Помогло написать ряд отчетов по товарообороту. Огромное спасибо автору, за подробную обучающую статью.

    Reply
  28. MYRZILKA123

    Спасибо больное за полезную информацию она мне сейчас очень пригодилась!

    Reply
  29. artspeed

    Хорошая статья. Прочитал и кое что уяснил для себя. Благодарю

    Reply
  30. malutin

    Давно уже хотел разобраться как пользоваться этой вкладкой, автору благодарность за простое и подробное разъяснение!

    Reply
  31. andru_dv

    Спасибо за разъяснение этой вкладки.

    Обязательно попробую на практике её работоспособность.

    Однозначно плюс.

    Reply
  32. Sairys

    Да вроде бы на диске ИТС всё достаточно подробно описано касаемо характеристик в СКД. Но всё равно автору большое спасибо за труд.

    Reply
  33. master_yoda

    Сделал по аналогии только для 8.1 Управление производственным предприятием, редакция 1.2 (1.2.26.1) Открыл настройку в режиме предприятия и не увидел доступных полей……может что то не учел (((

    Reply
  34. WaterSmith

    (34) master_yoda, Может быть и не учел. К сожалению, помочь вам пока ничем не могу, — слишком мало информации по вашей проблеме.

    Reply
  35. GreenFox
    DitriX пишет:

    Работа с характеристиками в системе СКД рассматривается в книге: » Разработка сложных отчетов в 1С:ПРЕДПРИЯТИИ 8. Система компоновки данных «. В книге также рассматриваются другие вопросы, рекомендую к прочтению.

    Надо прочитать, а то по компоновке у меня вообще знания скудные

    Reply
  36. Brawler

    Все бы хорошо, но и в этой публикации не раскрыта тема как использовать запросы для особо «хороших» случаев.

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

    Задача есть, а как решить ее пока не знаю.

    Reply
  37. hohmankia

    Спасибо большое, все коротко и очень ясно ))

    Reply
  38. BalVlad

    Спасибо за статью, очень нужная. +

    Reply
  39. master_yoda

    А вообще статья нужная, однозначно плюс

    Reply
  40. Leksus

    Получилось ли у кого-нибудь использовать характеристики во временных таблицах запроса — источника данных СКД?

    У меня не работает почему-то 🙁

    Reply
  41. WaterSmith

    (37) Brawler, Кхм, а какое это имеет отношение к характеристикам?

    Reply
  42. Brawler

    (42) так вот именно через характеристики в СКД это бы хорошо добавилось, но напрочь отсутствуют примеры как туда можно прилепить любые данные не завязанные на ПланахВидахХарактеристиках. Ведь есть же возможность подставлять свои мини запросы, но описание того, что они получают на входе и должны выдать на выходе я не нашел. Для работника как раз неплохо бы увидеть и другого рода данные, которые находятся не в дополнительных свойствах элементов справочника физлиц.

    Если это невозможно так и скажите, тогда вопрос отпадет сам собой, так как выйдет, что механизм характеристик в СКД придумывался под придумку хранить для объектов некие дополнительные сведения, но не в самом объекте, а как-то опосредованно, при помощи планов видов характеристик. Механизм жестко узконаправленный выходит.

    Жду ваши варианты.

    Reply
  43. WaterSmith

    (43) Brawler, Что то я не пойму, зачем вы пытаетесь свалить все в одну кучу? Да, механизм характеристик в СКД работает с объектами «Планы видов характеристик», именно поэтому он так называется.

    А какие нибудь другие данные нужно извлекать при помощи вложенных запросов, дополнительных источников данных, временных таблиц, соединений таблиц, вычисляемых выражений. Целый легион инструментов, а вы почему-то хотите все сделать характеристиками.

    P.S. Возможно я вас неправильно понял.

    Reply
  44. i132

    (43) пример доп.информации из других источников можно посмотреть в типовой бухгалтерии: отчет УниверсальныйОтчетПоМетаданным.макеты.ОписаниеХарактеристик

    Reply
  45. AlexanderKai

    Не знал даже как к ним подобраться-то, к характеристикам. Теперь имею более-менее представление. Хотя, чувствую, придется еще разбираться, чтобы полностью вникнуть. Автору спасибо!

    Reply
  46. vec435

    краткие пояснения порой лучше целой книги

    Reply
  47. WaterSmith

    (48) alexism, За какую обработку, любезнейший? При том, что вас даже в списке скачавших нет! Даю подсказку: это статья.

    А вы, любезный набиваете стартмани, и думаете, что все вокруг дураки, и ничего не видят.

    Reply
  48. aleksey_vk

    Хорошая статья. Можно было бы добавить про использование «Дополнительных характеристик объекта метаданных» как универсальный способ добавления характеристик ко всем отчетам на СКД. Только вот с категориями эти дополнительные характеристики не работают (либо я что-то не понимаю).

    Reply
  49. WaterSmith

    (50) aleksey_vk, За наводку на «Дополнительные характеристики объекта метаданных» — огромное спасибо. Как то прошла мимо меня информация, теперь буду в курсе.

    А насчет работы с категориями, пощупаю, когда разберусь обязательно напишу новую статью.

    Reply
  50. nataon

    спасибо, хорошая статья

    Reply
  51. bolush

    :)))) спасибо

    Reply
  52. RomanUzmov

    Статья хорошая — сжато и понятно всё описано. Автору (+)! Вопрос, может не в тему… есть у кого опыт работы с большим количеством характеристик (порядка 2-3 млн. шт)? Насколько это быстро и надёжно всё работает? Поделитесь…

    Reply
  53. kapafla

    Товарищи, вопрос: у меня справочник ТМЦ, в нем есть реквизит Харктеристика ТМЦ — с табличной частью — Доп.реквизиты — где один из реквизитов таб.части — это ПВХ. Как мне правильно в конфигурации сделать, чтоб когда пользователь изменяет настройки СКД — чтоб в реквизите Хартектистика ТМЦ — можно было бы увидеть -те характеристики -которые пользователь создал в системе?

    Reply
  54. gradus

    Спасибо за инфу.

    Возникла задача использовать значение доп.характеристики для вычисления других значений. Такое вообще возможно?

    Поясню на примере.

    У договора добавим доп. реквизит «Сумма договора» — тип «Число»

    При выводе отчета, например посчитать итог по сумме или вывести другое поле, «долг по договору», где будут анализироваться данные регистра бухгалтерии по оплате и сравниваться с «Суммой договора».

    Reply
  55. WaterSmith

    (56) gradus, Думаю возможно, можно использовать пользовательские выражения. Не забудьте про NULL — не у всех договоров (в вашем примере) может быть заполнено это свойство. В это случае функция ВЫБОР выручит вас.

    Reply
  56. Milanick

    Пытаюсь прикрутить в запрос такую вещь (взято из отчета «ведомость товаров…»

    ВЫБРАТЬ

    СвойстваОбъектов.Ссылка,

    СвойстваОбъектов.Наименование,

    СвойстваОбъектов.ТипЗначения

    ИЗ

    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов

    ГДЕ

    СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Подразделения)

    Выдает ошибку

    куда капнуть?

    Автору респект…

    Reply
  57. WaterSmith

    (58) Milanick, Наверное дело в том, что надо писать

    ЗНАЧЕНИЕ(ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Подразделения) 

    «ПланЫ», а не «План».

    Reply
  58. Kaniman

    (59) хотел бы ознакомится со статьей, но недостаточно пока sm, скиньте, пожалуйста на kaniman @yandex.ru

    Reply
  59. WaterSmith

    (60) Kaniman, Вчера перевел вам 1 см. Не пойму, почему вы так и не скачали статью?

    Reply
  60. Kaniman

    (61) огромное спасибо! вчера не заметил:) уже скачал.

    Reply
  61. Swetlana

    Может кто подскажет. УТ10.3.1.17

    Сделала так же как в (2) но свойства у Номенклатуры выводит пустые хотя РС ЗначенияСвойствОбъектов заполнен. В чем может быть дело?

    {ХАРАКТЕРИСТИКИ

    ТИП(Справочник.Номенклатура)

    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ

    СвойстваОбъектов.Ссылка,

    СвойстваОбъектов.ТипЗначения,

    СвойстваОбъектов.Наименование

    ИЗ

    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов

    ГДЕ

    СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры))

    ПОЛЕКЛЮЧА Ссылка

    ПОЛЕИМЕНИ Наименование

    ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения

    ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов

    ПОЛЕОБЪЕКТА Объект

    ПОЛЕВИДА Свойство

    ПОЛЕЗНАЧЕНИЯ Значение }

    Reply
  62. isn

    Здравствуйте! Подскажите пожалуйста, зашел в тупик. Задача отбор документов по дополнительному реквизиту по условию: незаполненные значения и значение равное чему либо. Дополнительный реквизит имеет тип «число». Сформировал такой запрос

    ВЫБРАТЬ

    РеализацияТоваровУслуг.Дата КАК Дата,

    РеализацияТоваровУслуг.Ссылка КАК Документ,

    РеализацияТоваровУслуг.Контрагент КАК Контрагент,

    РеализацияТоваровУслуг.СуммаДокумента

    ИЗ

    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

    ГДЕ

    РеализацияТоваровУслуг.Проведен = ИСТИНА

    И РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

    УПОРЯДОЧИТЬ ПО

    Дата

    {ХАРАКТЕРИСТИКИ

    ТИП(Документ.РеализацияТоваровУслуг)

    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ

    СвойстваОбъектов.Ссылка,

    СвойстваОбъектов.Наименование,

    СвойстваОбъектов.ТипЗначения

    ИЗ

    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов

    ГДЕ

    СвойстваОбъектов.ПометкаУдаления = ЛОЖЬ)

    ПОЛЕКЛЮЧА Ссылка

    ПОЛЕИМЕНИ Наименование

    ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения

    ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ

    ЗначенияСвойствОбъектов.Объект,

    ЗначенияСвойствОбъектов.Свойство,

    ВЫРАЗИТЬ(ВЫБОР

    КОГДА ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, 0) = 0

    ТОГДА 0

    ИНАЧЕ ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, 0)

    КОНЕЦ КАК ЧИСЛО(5, 0)) КАК Значение

    ИЗ

    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов)

    ПОЛЕОБЪЕКТА Объект

    ПОЛЕВИДА Свойство

    ПОЛЕЗНАЧЕНИЯ Значение }

    В СКД по такому запросу получаю без отбора ВСЕ значения дополнительного реквизита Заполненные и Незаполненные. При наложении отбора могу получить или только незаполненные или только заполненные значения. Наложить совместный отбор не могу. Помогите пожалуйста с запросом.

    Вопрос частично снимается. в СКД в отборе указал Группу отбора «группу ИЛИ».

    Reply
  63. WaterSmith
    Наложить совместный отбор не могу.

    А почему не можете? Не знаете как?

    В отбор добавьте «Группу ИЛИ», а уже в ней оба условия, на пустое значение и на нужное вам.

    P.S. Не заметил сразу, что вы уже сами разобрались.

    Вообще в СКД подход к запросу должен быть таким, чтобы в него входил максимум возможных данных, а все отборы и прочие ограничения делать уже в настройках схемы СКД. Такой подход позволяет получить максимально гибкую схему, решающую максимум задач.

    Reply
  64. kvp

    Спасибо за статью. Оказалась очень полезной и очень вовремя.

    Reply
  65. willson

    Спасибо! Скачала, изучила, применила в отчете, плюсанула Вам. Вы сэкономили кучу моего времени!

    Reply
  66. olbu

    я долго в настройках СКД в конфигураторе искал свойства… пока не нагуглил, что свойства мона увидеть тока в режиме «Предприятия»…

    Reply
  67. DreamMaster

    Ужасная вещь эти характеристики!

    УПП, допустим в характеристиках указываем запрос, которые собирается все свойства номенклатуры.

    Есть три номенклатуры:

    Номенклатура1 Свойство1 Значение1

    Номенклатура2 Свойство1 Значение2

    Номенклатура3 Свойство1 [Свойство не заполнено]

    Если в запросе указать отбор Свойство1 <> Значение3, то СКД вернет только 2 номенклатуры. Т.е. программа возьмет только те значения, по которым есть свойства и уже в них будет проверять, что значение свойства не равно «Значение3».

    Reply
  68. pol_k

    http://1cskd.ru/2011/09/ispolzovanie-xarakteristik-v-skd/ содержимое лежит здесь в свободном доступе.

    Reply
  69. extraterrestria1

    Подскажите, пожалуйста, возможно ли и как с помощью вкладки Характеристики функционально использовать категории обьектов в случае, если необходимо отбирать по признаку НЕ УСТАНОВЛЕННОЙ категории?

    Например, есть категория обьекта СобственныйКонтрагент. К отчету на вкладке Характеристики были подключены категории.

    Необходимо отобрать всех контрагентов, у которых значение категории НЕ УСТАНОВЛЕНО.

    PS: так же интересует вопрос, каким образом подключить категории только определенного типа обьекта, например, только справочника Контрагенты. С помощью механизма, который проилюстрирован в шапке темы будут подключены свойства и категории ВСЕХ типов метаданных. Мне пришлось в поле Виды характеристик писать текст:

    ВЫБРАТЬ
    СвойстваОбъектов.Ссылка,
    СвойстваОбъектов.Наименование,
    СвойстваОбъектов.ТипЗначения
    ИЗ
    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
    ГДЕ
    СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Контрагенты)
    Reply
  70. Vix

    (71) допишите в запросе условие на пустую категорию, например, категория = ЗНАЧЕНИЕ(Справочник.КатегорииНоменклатуры.ПустаяСсылка)

    Reply
  71. extraterrestria1

    (72) Установленные Категории хранятся в регистре сведений Категории обьектов. Если у обьекта нет соответствующей категории в этом регистре будет отсутствовать запись.

    Не понял решение по поводу сравнения с пустым значением справочника.

    Reply
  72. Vix

    (73)в значении нельзя выбрать элементы? чтобы получилось пустое значение

    Reply
  73. extraterrestria1

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

    Reply
  74. Milanick

    А подскажите, можно ли использовать данный механизм , для нестандарнтых данные в характеристиках.

    Например, я хочу добавить такой функционал:

    Конфигурация УПП. Есть справочник контрагентов, есть документ событие . Когда карточка создается, создается событие «дата создания». Позволяет ли механизм характеристик связать эти данные, так чтобы в отчет , в структуре появилось поле («реквизит») и данные подтягивались из таблицы

    Пример кода:

    {ХАРАКТЕРИСТИКИ
    ТИП(Справочник.Контрагенты)
    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
    NULL КАК Ссылка,
    «(реквизит)» КАК ДопРеквизит)
    ПОЛЕКЛЮЧА ДопРеквизит
    ПОЛЕИМЕНИ ДопРеквизит
    ПОЛЕТИПАЗНАЧЕНИЯ ДопРеквизит
    ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
    вр_ДатаСоздания.Контрагент КАК Объект,
    вр_ДатаСоздания.Дата КАК Дата
    ИЗ
    (ВЫБРАТЬ
    Событие.Контрагент КАК Контрагент,
    Событие.Дата КАК Дата
    ИЗ
    Документ.Событие КАК Событие
    ГДЕ
    Событие.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыСобытий.СистемноеСобытие)
    
    СГРУППИРОВАТЬ ПО
    Событие.Контрагент,
    Событие.Дата) КАК вр_ДатаСоздания)
    ПОЛЕОБЪЕКТА Объект
    ПОЛЕВИДА Дата }
    

    Показать

    Результат во вложении

    К сожалению. все хорошо, но данные не тянуться.

    Reply
  75. max_zhilin

    Пожалуй, самое полезное знание в том, что для включения нужного свойства в настройки в режиме конфигуратора нужно сохранить настройки в режиме пользователя, а затем загрузить их в конфиругаторе.

    В пользовательском режиме отчета: Настройки — Вид: Расширенный — Стуктура — Еще — Сохранить в файл.

    В конфигураторе в СКД: Настройки — Загрузить настройки из файла.

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

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *