Несколько одноходовок

Несколько небольших, но чрезвычайно полезных утилит. Пишутся за несколько минут, используются часто.
Преобразование объекта ссылочного типа в строку "внутр" и обратно.
Преобразование уид объекта ссылочного типа в объект и обратно.
Сторно программно в несколько строк.
Очищение сохраненного значения пары "пользователь — переменная".

Перечень одноходовок

1. Внутр (ЗначениеВСтрокуВнутр и обратно)

2. СсылкаУИД (Получение текстовой ссылки на объект и обратно).

3. Сторно (Сторнируем любой документ программно корректировкой записей регистров)

4. Очистить значение (Очищаем значение переменной, сохраненное через СохранитьЗначение)


Детальное описание

1. Внутр

Внутр

Вставляем в верхнее поле строковое значение, полученное из преобразования объекта ссылочного типа оператором «ЗначениеИзСтрокиВнутр», нажимаем кнопку вниз, получаем во втором поле сам объект.

Или, вставляем в нижнее поле объект ссылочного типа, нажимаем кнопку вверх, получаем его представление после преобразования оператором «ЗначениеВСтрокуВнутр».

В обработке не содержится абсолютно никаких фишек, просто два оператора и красивая форма со стрелками.

Область применения:

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

 

2. «СсылкаУИД».

СсылкаУИД

Вставляем в верхнее поле строковое значение уникального идентификатора объекта, выбираем в нижнем поле тип метаданного для поиска, нажимаем кнопку вниз, получаем во втором поле сам объект.

Или, вставляем в нижнее поле объект ссылочного типа, нажимаем кнопку вверх, получаем его уникальный идентификатор.

А здесь кроме красивой формы со стрелками одна фишка таки есть, работа с метаданными и конструктором уникального идентификатора по строке:

Если Метаданные.Справочники.Содержит(ЗначениеПоСтроке.Метаданные()) И НЕ Отказ Тогда
ЗначениеПоСтроке = Справочники[ЗначениеПоСтроке.Метаданные().Имя].ПолучитьСсылку(Новый УникальныйИдентификатор(СтроковоеЗначение));
КонецЕсли;

Область применения: те же обмены данными, надо найти объект по УИД, содержащийся в xml-файле выгрузки. Тип объекта известен, но больше нет никаких других опознавательных признаков, вроде наименования и т.д.

 

3. Сторно

Сторно

На самом деле строк тут несколько:

    КЗР = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
КЗР.Дата = ДокументДляСторно.Дата;
КЗР.ИспользоватьЗаполнениеДвижений = Истина;
КЗР_ЗД = КЗР.ЗаполнениеДвижений.Добавить();
КЗР_ЗД.Действие = "Сторно движений документа";
КЗР_ЗД.Документ = ДокументДляСторно;
ФормаКЗР = КЗР.ПолучитьФорму();
ФормаКЗР.ВыполнитьДействияДокумента();
КЗР.Записать();
Сообщить("Записан документ сторно " + Строка(КЗР));

Но фишка одна. Экспортная процедура формы документа при правильном заполнении формы заполняет объект документа.

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

 

4. ОчиститьЗначение

ОчиститьЗначение

Здесь всё совсем просто. Имеется сохраненная переменная под определенным пользователем, в ней — битое значение (например, «Объект не найден», получившийся после свертки дублей).

Чистка кэша в случае sql-ной базы не помогает. Чистим программно:

    СохранитьЗначение(ИмяПеременной, Неопределено);

Найти бы еще способ прочитать все переменные, сохраненные под данным пользователем… Ну да ладно.

P.S. Можно скачать, можно написать, как душе угодно.

P.P.S. Еще пара простых утилит:

Простое сравнение двух документов или элементов справочников

Анализ изменений документа по журналу регистрации

4 Comments

  1. varovinm

    Сенсэй, приветствую! А еще с помощью этих функций можно организовать Хранение в константе таблицы значений.

    Reply
  2. cargobird

    (1) varovinm, приветствую, Миша!

    Да, я тоже часто использую эти функции «внутр» для хранения и передачи в строковых значениях структур и таблиц значений. Только просмотр содержимого таких строковых значений уже не совсем простая задача. Но есть над чем подумать, спасибо)

    Reply
  3. WKBAPKA

    да, это круто!

    Reply
  4. cargobird

    [update 2015-10-13]: добавлено две новых одноходовки.

    Reply

Leave a Comment

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