партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Универсальная галерея - модуль для битрикс
Это форум по решению для битрикс «Модуль Классификатор адресов.WEB (архив)».
Страницы: 1 2 След.
Ответить
RSS
Пример реализации
 
Добрый день.
Есть где посмортеть применение данного модуля(ссылка на сайт, где можно попробовать, как вводятся и выбираются адреса из КЛАДР и какой в итоге получается результат).
Интересует, также есть ли возможность указывать адрес, который по каким-то причинам отсутствует или не соответствет данным находящихся в КЛАДР?
 
Алексей, здравствуйте! А где конкретно Вам нужно вводить адрес: в админке - в инфоблоке, в профиле пользователя, в оформлении заказа, еще где-то?
 
Как в профиле пользователя, так на созданых страницах своего сайта, не в стандартных компонентах.
Интересует насколько Ваш компонент удовлетворяет наши требованиям:
  1. У нас есть в различных формах текстовое поле "Адрес", значение которого мы хотели что бы заполнялось результатом работы Вашего компонента. Получим ли мы результатом текстовую строку типа (Индекс, Страна, Область/регион, район, город, населенный пункт, улица, дом, корпус, квартира)?
  2. Возможно ли указания данных не из КЛАДР (возникает в случаях, когда в КЛАДР не содержится актуального адреса), т.е. указание всех данных путем ручного ввода в поля (Регион, город, улица и т.п.), так что бы на выходи имели тот же формат, если бы выбирали данные из КЛАДР(Индекс, Страна, Область/регион, район, город, населенный пункт, улица, дом, корпус, квартира)?
 
  1. Стандартное свойство инфоблока "Адрес КЛАДР" работает не так, оно записывает в бд только код кладр, преобразование происходит при выводе. Но это можно исправить небольшой доработкой шаблона компонента "gkladr.ajax.selectzip". Если речь о свойствах инфоблока или главного модуля, то можно скопировать шаблон в шаблон сайта ".default".
  2. Решается аналогично, небольшой доработкой шаблона компонента.
А вот информации "дом, корпус, квартира" в кладре нет. Там есть только пустые таблицы, предназначенные для заполнения местными организациями. Так что эту информацию придется в любом случае заполнять вручную.
 
Схожие вопросы:
1)Можно ли реализовать фильтрацию по кладр при использовании CIblockElement::GetList()? Или хотя бы быстро получить массив со всеми кодами объектов дочерних указанному.
2) Если да и модуль может нам подойти то где можно ограничить уровень в компоненте selectzip т.к. образом что-бы выбор региона был зафиксирован в коде страницы, а максимальная глубина оканчивалась улицей(без вывода набора домов), для уточнения фильтра будет достаточно улицы.
 
Цитата
Гость пишет:
1)Можно ли реализовать фильтрацию по кладр при использовании CIblockElement::GetList()?
Да. При этом учитывайте, что адрес хранится в базе в виде сериализованного массива из двух элементов: кода кладр (ключ CODE) и поля FINISHED (Y или N).

Цитата
Гость пишет:
Или хотя бы быстро получить массив со всеми кодами объектов дочерних указанному.
Не совсем понял вопрос, уточните пожалуйста. Описание api смотрели?

Цитата
Гость пишет:
где можно ограничить уровень в компоненте selectzip т.к. образом что-бы выбор региона был зафиксирован в коде страницы, а максимальная глубина оканчивалась улицей(без вывода набора домов), для уточнения фильтра будет достаточно улицы.
Можно отключить опцию "Разрешать сохранение только при завершении поиска". Тогда можно будет сохранять на любом шаге выбора адреса. Если нужно останавливаться именно на улице, то можно скопировать шаблон этого компонента и там заложить условие. Если скопировать шаблон компонента в шаблон сайта по умолчанию (/bitrix/templates/.default), то это будет действовать и для админки в том числе. Если я правильно понял задачу :)
 
а разве это не будет фильтрация по точному вхождению?
Например у меня есть в инфоблоках магазин с указанным до упора адресом(FINISHED=Y).
Далее на сайте мне надо вывести по фильтру список магазинов удовлетворяющих условию.
Например выбрал человек Москву - все магазины в москве, выбрал район, улицу и тд вывести удовлетворяющие магазины. Т.е. выводить элементы у которых совпадает начало полного адреса по кладр. надо фильтровать по началу кода кладр?

Апи смотрел. SkladrEntry::GetList(); По короткому коду региона корректно выдает список следующего уровня, по коду любого из этих элементов уже не получаю дочерних, как по полному - возвращаемому на предыдущей итерации(выдает список регионов) так и по короткому (не выдает ничего).

По поводу третьего вопроса, необходимо не отображать в публичной части последний уровень. Т.к. магазинов в 5ти домах не много, максимум 1-2 на улице. Не нашел в шаблоне компонента никаких указаний на уровень, поищу еще.
 
Цитата
Гость пишет:
а разве это не будет фильтрация по точному вхождению?
Например у меня есть в инфоблоках магазин с указанным до упора адресом(FINISHED=Y).
Далее на сайте мне надо вывести по фильтру список магазинов удовлетворяющих условию.
Например выбрал человек Москву - все магазины в москве, выбрал район, улицу и тд вывести удовлетворяющие магазины. Т.е. выводить элементы у которых совпадает начало полного адреса по кладр. надо фильтровать по началу кода кладр?
Можно составить запрос таким образом, поиск шел именно по началу кода кладр. Например, в сериализованном массиве в любом случае значение начинается с кавычек. Вот можно и учитывать эти кавычки.

http://dev.1c-bitrix.ru/api_help/iblock/filters/string.php

Цитата
Гость пишет:
Апи смотрел. SkladrEntry::GetList(); По короткому коду региона корректно выдает список следующего уровня, по коду любого из этих элементов уже не получаю дочерних, как по полному - возвращаемому на предыдущей итерации(выдает список регионов) так и по короткому (не выдает ничего).
Попробуйте SKladrEntry::SearchZip. Это функция более высокого уровня. Если она чем-то не устраивает, можете ее скопировать и доработать.
 
А можно ли принудительно пропустить районы? Получить через SKladrEntry::SearchZip например по коду области напрямую населенные пункты, вначале города а потом поселки и тд?
 
Цитата
Гость пишет:
например по коду области напрямую населенные пункты, вначале города а потом поселки и тд?
Структура базы данных КЛАДР, к сожалению, не так однозначна, там 6 уровней, и города, например, могут находится на любом уровне со 2-го по 4-й, кажется. Города федерального значения, Москва и Питер, например, вообще на первом уровне и сами являются регионами. Но если включить соответствующую опцию в настройках компонента или в самой функции SKladrEntry::SearchZip параметр one_list_levels равен true, то будут выведены уровни 2-4 в одном списке, за исключением тех, которые являются подуровнями других.
 
А можно пример, как осущестрвить фильтрацию, например, по коду кладр 38? Не очень понимаю как именно массив хранится в свойстве, текстом?
'PROPERTY_KLADR'=>'Array("CODE"=>"38%' ?
 
$arFilter['PROPERTY_KLADR']='a:2:{s:4:"CODE";s:%:"38%";s:8:"FINISHED";s:1:"_";';
так не срабатывает
 
А если так попробовать?

Код

$arFilter['PROPERTY_KLADR']='"38%';


или так

Код

$arFilter['PROPERTY_KLADR']='\\"38%';


Как-то должно сработать :)
Может проблема в экранировании кавычек.
 
Кстати, а модификаторы вы пробовали использовать, например знак %?

Например, так:

Код

$arFilter['%PROPERTY_KLADR']='"38%';


Или так может быть:

Код

$arFilter['%PROPERTY_KLADR']='"38';


http://dev.1c-bitrix.ru/api_help/iblock/filters/string.php
 
Гость,  удалось решить проблему?
 
Удалось, теперь другая, купили модуль а как ему сообщить что он куплен не знаю:) Есть код, вводил его в поле для купонов, приняло но ничего не изменилось.
 
Цитата
Гость пишет:
как ему сообщить что он куплен не знаю:) Есть код, вводил его в поле для купонов, приняло но ничего не изменилось.
Там еще должна теперь появиться кнопка "Зарегистрировать" на первой вкладке на той же странице где активировали купон. Кажется там :)

Цитата
Гость пишет:
Удалось
А как именно удалось решить, расскажите пожалуйста, а то любопытство ведь мучает :)
 
$arFilter['PROPERTY_KLADR']='a:2:{s:4:"CODE";s:%:"'.IntVal($kladr).'%';

Кнопок не видать...
 
Нашлась кнопка, в разделе "обновления решений"
 
а в каком формате передать данные в CIblockElement::Update? и массивом пробывал и serialize() строкой не сохраняет=(
Страницы: 1 2 След.
Ответить
Читают тему
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы