1с найти документ по представлению
Классический порядок действий: открываем список документов, фильтруем по номеру или по дате. ищем нужный документ, ага. нашли. открываем. А если разного вида документы. то для каждого вида открываем список документов и т.д.
Теряем драгоценные секунды.
Данная обработка поможет сохранить эти секунды, а то и полуминуты или даже минуты.
Обработка позволяет из произвольного текста вытащить список представлений документов. Этот текст нужно скопировать в буфер (Ctrl+C) а затем с помощью кнопки "Заполнить из буфера обмена" заполняем список представлений документов.
Даже если есть необходимость программно обрабатывать БОЛЬШОЕ количество документов (их представлений) для поиска ссылок на них, то эта обработка окажет верную помощь, так как алгоритм поиска ссылок оптимизирован и выполняется с большой скоростью.
В модуле обработки содержатся две необходимые экспортные функции, в одну из которых можно запулить массив представлений и на выходе получить таблицу с колонками: Ссылка, Представление. Вот эти функции:
1. Для поиска одной ссылки:
Функция НайтиДокументПоПредставлению ( ПредставлениеДокумента ) Экспорт
2. Для поиска нескольких ссылок по массиву представлений:
Функция НайтиДокументыПоПредставлениям ( Представления ) Экспорт
Есть возможность использования кэширования, когда известно, что представления могут повторяться много раз при вызове функций поиска ссылки. Для этого нужно установить реквизит обработки КэшироватьПредставленияДокументов = Истина .
Обработка на Infostart'e, конечно, не уникальна, но история вопроса такова, что мне нужно было обрабатывать кучу представлений документов и искать по ним ссылки, и чтобы все работало быстро, и чтобы могла работать как внешняя обработка в конвертации данных.
Поискав на инфостарте, нашел работы на эту тему, но все как-то медленно работало.
Добавлена функция получения массива представлений из произвольного текста:
Функция НайтиПредставленияДокументов ( Текст , ОписанияМетаданных = Неопределено) Экспорт
Boneman - Можно вариант через подобно? У меня консоль упорно ругается когда выбираю его.
Xatori111, спасибо но парсить я и сам знаю, что можно, но хочется по грамотней.
(4) Keyblade,
примеров полный интернет тыц
обычное сравнение строк, представление - это строка, параметр - тоже строка.
В условии где ваше поле подобно $Параметр
В запрос передаем, параметр = "%"+вашассылка
По-моему, само решение писать представление ссылки в комментарий не очень грамотно. (5) AgatA, смотря что и для чего сделано.Если типовая конфа, где не хочется снимать с поддержки, то вполне нормальный вариант активно юзать поле комментария. Как правило, автоматами, внешние обработки единообразно заполняют. (7) Boneman, ну дак, не обязательно конфу полностью с поддержки снимать. Но такие решения похожи на ветряные мельницы, пардоньте, за критику.
Как частное решение прокатит, конечно. (10) AgatA,
пример.
Делаем обмен - между хрен знает какой управленческой конфой, с тучей всяких разных документов и обычной бух.
Допустим какие то управленческие документы - производят в бухне проводки, документами ручная операция по какимто счетам. Причем от заполненности управленческих документов должны подставлятся разные счета или субконто.
Вопрос: Каким образом потом искать концы если не оставлять каких то признаков в комментарии создаваемого документа в бух ? И чем нам глобально облегчит снятие бухни с поддержки ? (11) Boneman, приведенный пример не совсем отражает то, что делает автор.
Давайте не будем продолжать демагогию. Я вас услышала ) Boneman - прав. Конфу лишний раз не хочется менять. С поддержки снятя, но хочется её держать как можно более близкой к оригиналу. Меньше лишних реквизитов и т.д.
правда это если номер уникальный,
если есть периодичность, то придется с датой извращаться.
Я там, ранее, немного неправильно написал. Представление это не строка, это функция - по ней в запросе искать не получится. Поэтому искать надо наоборот в строке представления, совпадения полей документа.
З.Ы.
Честно говоря, я бы не поленился распарсил, там делов то - несколько строковых операций, получим нормальный номер документа и дату.
Обработчики событий ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления
Область применения: управляемое приложение, мобильное приложение.
1. С помощью данных обработчиков модуля менеджера объекта можно переопределить представление объекта информационной базы, которое выводится в полях форм и в списках.
Пример реализации:
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
Поля.Добавить("Наименование");
Поля.Добавить("Дата");
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
Наименование = ?(ПустаяСтрока(Данные.Наименование), НСтр("ru = 'Без описания'"), Данные.Наименование);
Дата = Формат(Данные.Дата, ?(ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"), "ДЛФ=DT", "ДЛФ=D"));
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 от %2'"), Наименование, Дата);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
2. Обработчики вызываются при любой необходимости получения представления какого-либо объекта информационной базы. Поэтому избыточные данные или неправильный выбор данных для формирования представления могут привести к существенному замедлению работы системы.
Также не следует выполнять в этих обработчиках запросы или получение объектов информационной базы (в том числе, запрещены обращения к реквизитам объектов ссылочных типов через точку, что приводит к чтению всего объекта целиком из базы данных). Также нежелательно использовать получение представления и реквизитов ссылок.
3. Обработчики могут быть также вызваны, в том числе, при записи и удалении объекта в режиме обмена данными. Представление объекта при этом запрашивается для формирования записи в журнал регистрации. Поэтому к ним предъявляются те же требования, что и к логике регистрации объектов - см. п. 1.2 Разработка планов обмена с отборами.
Эти требования также справедливы при разработке планов обмена для синхронизации с другими программами (не РИБ, по правилам конвертации) с помощью подсистемы «Обмен данными» Библиотеки стандартных подсистем.
Например, недопустимо обращаться к предопределенным элементам, которые еще могли быть не загружены в базу или, наоборот, уже удалены в ходе обмена данными:
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Данные.ВидОбразования = Справочники.ВидыОбразованияФизическихЛиц.ПослевузовскоеОбразование Тогда
Представление = НСтр("ru = 'Послевузовское образование'");
Иначе
.
4. При реализации обработчиков следует также учитывать требования о поддержке толстого клиента, управляемое приложение, клиент-сервер.
Для 8.х НайтиПоСсылкам (FindDataByRef)
Синтаксис:
НайтиПоСсылкам (< Список ссылок> )
Параметры:
<Список ссылок> Обязательный
Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:
Тип: ТаблицаЗначений. Таблица значений, состоящая из колонок с индексами: 0 - Искомая ссылка; 1 - Ссылка на объект, который содержит искомую ссылку.
Описание:
Осуществляет поиск ссылок на объекты.
Код 1C v 8.х
Функция НайтиПоСсылке имеет особенность: для корректной её работы необходимо, чтоб все объекты были доступны на чтение. Если у вас есть роли, имеющие ограничение на чтение, то вызов функции НайтиПоСсылке можно выполнять только в привилегированном модуле, иначе может возникать ошибка такого рода:
НайтиПоСсылкам(Ссылки) : Ошибка при вызове метода контекста (НайтиПоСсылкам): У пользователя недостаточно прав на исполнение операции над базой данных.
Для 7-рки - НайтиСсылки
Находит ссылки на объекты, переданные в списке значений.
Синтаксис:
НайтиСсылки(<Объекты>,<Ссылки>)
Англоязычныйсиноним:
FindReferences
Параметры:
<Объекты> Конкретное значение объекта илиобъект типа СписокЗначений, в котором данной процедуре передаются объекты, по которым надо найти ссылки.
<Ссылки> Идентификатор объекта типа ТаблицаЗначений, в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. Объект — объект, на который ссылаются; 2. Ссылка — объект, который содержит ссылку; 3. Комментарий — комментарий кссылке.
Описание:
Процедура НайтиСсылки находит ссылки на переданные в списке объекты, и помещает их в таблицу значений.
Код 1C v 7.x
Разместил: E_Migachev Версии: | 7.x | 8.x | Дата: 05.04.2010 Прочитано: 78976
Похожие FAQ
Еще в этой же категории
Полнотекстовый поиск в 1С (что это и пример использования) 22
Полнотекстовый поиск - позволит найти текстовую информацию, размещенную практически в любом месте используемой конфигурации. При этом искать нужные данные можно либо по всей конфигурации в целом, либо сузив область поиска до нескольких объектов Формат, функция форматирования значений 21
//Функция формирует удобное для чтения представление значений. // Примеры форматирования чисел ЗначФормат = Формат(123456.789, " ЧЦ=10; ЧДЦ=2" ); // ЗначФормат = " 123 456,79" ЗначФормат = Формат(123456.789, " ЧГ=0; ЧДЦ=2" ); // Знач УстановитьСсылкуНового 11
Установить ссылку нового это специальный механизм программиста, который позволяет присваивать новому объекту нужную ссылку. В основном это задача обмена, во многих типовых обменах используется синхронизация по UID объекта. Рассмотрим этот метод на к Обработчики событий при записи объектов. Зачем и что за чем? 11
Программисту, имеющего немного опыта на платформе 1С 8.2, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта, а-а-а-а-аааа. Именно такое сложное чувство непонимания МоментВремени, получение остатков до и после проведения 9
" Момент времени" - виртуальное поле, не хранится в базе данных. Содержит объект МоментВремени (который включает в себя дату и ССЫЛКУ НА ДОКУМЕНТ) В 7.7 было понятие ПозицияДокумента, а в 8.x Момент времени Для получения Остатков, Движений: М Посмотреть все в категории Встроенные Функции
Читайте также: