[РЕШЕНО] Обход элементов справочника (Имитация двойного клика)

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем banditxx, 18 июн 2015.

  1. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!!!

    Подскажите пожалуйста:

    Я настроил обработку элемента справочника по автоматическому заполнению.

    То есть я захожу в справочник, делаю двойной клик либо Enter и элемент сам обрабатывается стандартными обработками так как нужно. Я (пользователь) даже не видит форму элемента она сама закрывается.

    Но проклацать 5 000 элементов это не вариант конечно.

    Как можно сымитировать обход справочника по двойному клику, чтоб отрабатывали все функции стандартные при открытии элемента?

    Давно интересует этот вопрос, но вот сейчас особенно нужно.
  2. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Сделать обработку, чтобы пробежалась по всему справочнику и сделала что вам надо.
  3. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Это понятно.....

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

    Объет.Записать() есть команда.

    То есть стандартные обработки через выборку или запрос не цепляют данные.


    Вот и спрашиваю как сымитировать на элементе двойной клик?

    Может есть такая команда? )))
  4. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    В модуле справочника есть процедуры обработчики, вам нужно смотреть на "ОбработкаЗаполнения", "ПроверкаЗаполнения"
  5. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    В МодулеОбъекта есть только проверка Характеристик ПередЗаписью. Все действия вынес в МодульФормы перед записью. Своего кода нет, просто скомпоновал стандартные обработки.

    По двойному клику из справочника все отрабатывает. Как запустить эту цепочку обработок программно?
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Неее, ОбработкаЗаполнения() предназначена для заполнения на основании, ПроверкаЗаполнения() служит для корректировки реквизитов, которые обязательны для заполнения(ну например, удалить какие-то, или наоборот, добавить).
    ТС, вы вообще что хотите ? Обработать определенным образом определенный справочник ? Есть несколько путей. Воспользоваться групповой обработкой справочников и доков (это такая обработка) или написать свою. Делаете выборку из справочника. В цикле обрабатываете каждый объект. Вот и все.
    --- Объединение сообщений, 18 июн 2015 ---
    В модуле формы никогда ничего не пишите, если планируете программно что-то обрабатывать. В модуле формы обычно заполняются реквизиты формы и иногда реквизиты объекта (но это считаю не корректным)
    Вы на каком уровне в кодинге на 1С ?
  7. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    По задачи да. Мне в Характеристиках надо поменять наименование на то, которое стандартно предлагает 1С.

    Посмотрев код .просто очень неохота было это все самому реализовывать и прописывать под свою обработку.

    Поэтому просто скомпоновал все в модуле формы. Чтоб система не задавала лишних вопросов, сама ставила стандартное значение и закрывала форму.


    Все работает. но надо обойти 5 000 элементов......


    Руками - каменный век.

    Через выборку или запрос стандартные процедуры не отрабатывают ((((((
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Значит ваш запрос не работает. Создайте сначала корректный запрос с выводом характеристик, там уже проще будет :)
  9. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Запрос точно работает. Ибо в запросе просто запрашиваю все Элементы из справочника без каких-либо доп. условий ))))

    Возможно действия над объектом не выполняются это да возможно.....


    Но ошибок то не выдает программа.


    Команда ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект() имеется )))


    то есть по идее при передачи объекта из запроса в стандартные модули все должно отрабатывать?


    А такой еще вопрос: Без запроса работает команда ЭтотОбъект.Записать(); а с запросом Объект.Записать();


    Мне кажется тут собака порылась ))))
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вы не слышите. Напишите запрос, где вы выводите ссылку элемента и его характеристики. Скрин результата выложите.
    Про какие модули идет речь ? Модуль формы :))))) ?
  11. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Извиняюсь за терминологию. Стандартные процедуры. А весь код зашит да. В модуле Формы
  12. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ни в коем случае не хочу вас обидеть. Я разговариваю с техническим специалистом, который обслуживает 1С ?
    --- Объединение сообщений, 18 июн 2015 ---
    Код, работающий в модуле формы доступен только тогда, когда вы открываете эту форму. При программном изменении, процедуры формы не работают:)))))
    --- Объединение сообщений, 18 июн 2015 ---
    Я же писал уже про это :)
  13. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Нашел вроде нужное место:

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ХарактеристикиНоменклатуры.Ссылка,
    | ХарактеристикиНоменклатуры.ВерсияДанных,
    | ХарактеристикиНоменклатуры.ПометкаУдаления,
    | ХарактеристикиНоменклатуры.Предопределенный,
    | ХарактеристикиНоменклатуры.Владелец,
    | ХарактеристикиНоменклатуры.Наименование,
    | ХарактеристикиНоменклатуры.Б_Идентификатор,
    | ХарактеристикиНоменклатуры.Б_НомерВерсии,
    | ХарактеристикиНоменклатуры.Представление
    |ИЗ
    | Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры";
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    ЭтотОбъект = Объект;



    Как в ЭтотОбъект передать значение из запроса? )))

    Все стандартные процедуры работают с ЭтотОбъект. Значения в процедурах не меняются
    --- Объединение сообщений, 18 июн 2015 ---

    Ничего страшного, не обидите......

    Почти..... Я Администратор 1С, но по "несложным" задачам выполняю функции программиста)))


    Я понял, что код модуля формы работает только при открытии формы.


    тогда резонный следующий вопрос, при обходе через запрос можно у каждого объекта открывать форму соответственно с запуском всех стандартных процедур? )))
  14. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Где вообще зашита в стандарте команда открытия формы по двойному клику в стандартной конфигурации?

    Чтоб я мог сам разобраться как ими пользоваться......
  15. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вам нужно связать справочник характеристик и другой справочник, потом уже кодом, через ПолучитьОбъект()(получать объект нужно именно справочника характеристик) меняете характиристики
    --- Объединение сообщений, 18 июн 2015 ---
    Ни где. Это вам не С++, где можно переопределять процедуры и функции. Это на уровне платформы. У формы есть другие обработчики, но они работают при открытой форме.
  16. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Не нужен вам объект, если вы все свои действия в модуль формы перетащили.

    Какой справочник обрабатываете? ХарактеристикиНоменклатуры?
    Сделайте внешнюю обработку, процедуру, в процедуре напишите так:
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ХарактеристикиНоменклатуры.Ссылка,
    |ИЗ
    | Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры";
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Форма = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьФорму();
    Форма.ЗаписатьВФорме();
    КонецЦикла;
    
    Если я правильно понял что вам надо. Так будет проще всего.
  17. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Спасибо за подсказку.

    Но к сожалению все таки не отрабатывает код в форме.

    Не меняет наименование........
  18. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Вы куда вставляли свой код в форму, в какую процедуру?
    --- Объединение сообщений, 22 июн 2015 ---
    Если в ПриОткрытии() Тогда написать так:
    Форма = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьФорму();
    Форма.Открыть();
    Форма.ЗаписатьВФорме();
    Форма.Закрыть();
  19. TopicStarter Overlay
    banditxx
    Offline

    banditxx

    Регистрация:
    31 окт 2014
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Процедура ПередОткрытием

    Вот теперь спасибо Огромное Точно!!!!


    Все отработало как хотел.

    т.е. ответ на мой вопрос (имитация клика): Это метод ПолучитьФорму и ОткрытьФорму.

    Вот до этого я сам и не допер. Спасибо за помощь!!!! ))))

    Куда Пиво заказывать? )))
  20. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    В данном случае да.

    Да не за что. Не пью я в последнее время. )

Поделиться этой страницей