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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *