Кашафутдинов Тимур | Разработчик | ООО еСолюшнс

«Логирование в приложениях»

Что такое логирование Какие потребности в информации о работе приложений возникают у отделов поддержки, тестирования, разработки Какие трудности возникают при сборе информации, в том числе из разрозненных систем Стандартные инструменты платформы 1С:Предприятие, их возможности и ограничения Самописные подсистемы логирования на базе 1С:Предприятия, их возможности и ограничения Общие требования к системе логирования: что должна уметь идеальная система? Краткий обзор возможностей специализированных систем логирования Внедрение и результаты Стоимость, преимущества и недостатки выбранной системы, перспективы Особенности реализации и использования библиотек логирования, на которые стоит обратить внимание Роль механизма расширений в конфигурировании и быстродействии подсистемы логирования

Как записать НЕ основной реквизит формы справочника

1. MrFlanker 142 05.01.17 13:12 Сейчас в теме
Имеем форму справочника на которой помимо основного реквизита "Объект" есть не основной реквизит "КартаОбъект" (Спарвочники.ИнформационныеКарты).

В форме редактируются поля:
- основного реквизита "Объект"
- не основного реквизита "КартаОбъект"

"Объект" записывается штатно при закрытии формы

Строковые реквизиты "КартаОбъект.РеквизитСтрока1" тоже записывается при нажатии стандартной кнопки "Запись", ссылочные же рекизиты не записываются "КартаОбъект.РеквизитСсылка1".

Попытка записать:
	
     РеквизитФормыВЗначение("КартаОбъект").Записать();

производит запись, но при следующих вызовах дает ошибку:

Текс ошибки
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Ответы
Сортировка: Древо
3. spacecraft 05.01.17 13:25 Сейчас в теме
(1)
Карта = РеквизитФормыВЗначение("КартаОбъект");
Карта.Записать();
ЭтаФорма.Объект.Владелец = ЭтаФорма.КартаОбъект.Ссылка;
ЗначениеВРеквизитФормы(Карта, "КартаОбъект");

Но большие сомнения в правильности выбранного решения.
4. MrFlanker 142 05.01.17 13:33 Сейчас в теме
(3)
Но большие сомнения в правильности выбранного решения.

По типовым не знаю примеров, гугл тоже молчит.

В принципе получаем объект, производим изменения... возвращаем в форму.. почему нет)
5. spacecraft 05.01.17 13:43 Сейчас в теме
(4) обычно связь карты со справочником Клиент (Владелец карты) делают через регистр сведений.
Обычно у владельца карты может быть несколько карт. В данном решении может быть только одна карта. А если клиент потерял карту, произведена замена карты?
Далее, не лучший вариант делать/редактировать карту в форме справочника владельца карты. Если уж надо привязывать карту напрямую к справочнику Клиенты, то делать карты подчиненным справочником. И в реквизитах хранить ссылку на основную карту.
Иначе по карте не известен владелец. Вот сосканировали штрихкод карты. Нашли карту. Как по ней получить владельца? Только поиском по справочнику Клиенты. А тогда теряется весь смысл отдельного справочника Карты.
6. MrFlanker 142 05.01.17 13:59 Сейчас в теме
(5)
(4) обычно связь карты со справочником Клиент (Владелец карты) делают через регистр сведений.
Обычно у владельца карты может быть несколько карт. В данном решении может быть только одна карта


КлиентскаБаза это произвольный справочник который является расширением типового справочника "Информационныекарты", в котором добавлены различные поля и т.п.

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

Пользователя как бы забывают про справочник "Информационные карты" и вместо него работают в с правочнике "Клиентская база".... и получаются все плюшки от управляемых форм в УправленииТорговлей 10.3 и реализуем всю что нужно не меняя типовую.
17. zoomzd1234 23.01.17 20:47 Сейчас в теме
(1)Расширение управляемой формы для объектов (Managed form extension for objects)
Записать (Write)
Синтаксис:

Записать(<ПараметрыЗаписи>)
Параметры:

<ПараметрыЗаписи> (необязательный)

Тип: Структура. Структура параметров записи, которые могут быть обработаны в обработчиках событий записи. Состав параметров произвольный.
Возвращаемое значение:

Тип: Булево. Истина - успешно записан; Ложь - в противном случае.
Описание:

Записывает объект.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.
2. MrFlanker 142 05.01.17 13:23 Сейчас в теме
Нашел решение:

&НаСервере
Процедура Команда1НаСервере()
   	// Запишем карту, обновим владельца
	ИК_Объект=РеквизитФормыВЗначение("КартаОбъект");
	ИК_Объект.Записать();
	ЗначениеВРеквизитФормы(ИК_Объект,"КартаОбъект");
	
	ЭтаФорма.Объект.Владелец = ЭтаФорма.КартаОбъект.Ссылка;
КонецПроцедуры
Показать
7. ice-net 10 05.01.17 14:11 Сейчас в теме
Сомнительное решение.. Зачем вы привязываете именно объект к форме?

Что будет, если Вы откроете элемент справочника "КлиентскаяБаза", а кто-нибудь в это время откроет и изменит конкретно этот объект информационной карты через типовую форму?
8. MrFlanker 142 05.01.17 14:26 Сейчас в теме
(7)
Сомнительное решение.. Зачем вы привязываете именно объект к форме

Что вы имеете ввиду?


(7)
Что будет, если Вы откроете элемент справочника "КлиентскаяБаза", а кто-нибудь в это время откроет и изменит конкретно этот объект информационной карты через типовую форму?

Будет ошибка несоответствия версии или отсутствия записи базы данных

Можно обработать и вывести окно "Объект изменен в другой форме / другим пользователем и т.п.". Либо установить блокировку....

Если работать в формах "Клиентской базы", сработает штатная блокировка.
Прикрепленные файлы:
9. ice-net 10 05.01.17 14:40 Сейчас в теме
(8)
Будет ошибка несоответствия версии или отсутствия записи базы данных

Т.е. Человек зашел в Элемент клиентской базы, сидит там правит что-нибудь.. минут 5 потратил, жмет записать - а ему выскакивает ошибка несоответствия версии или отсутствия записи базы данных.. и все его изменения не запишутся(если попытку на запись информационной карты не добавлять), и придется ему закрывать без сохранения, открывать заново и заново все вносить....
Вот я и спрашиваю, в чем смысл? Почему в реквизитах Объект, а не Ссылка на информационную карту? При записи вы можете просто получить объект, изменить что надо и записать... действия те же + блокировка не будет висеть, пока форма клиентской базы открыта..
10. MrFlanker 142 05.01.17 14:56 Сейчас в теме
(9)
Т.е. Человек зашел в Элемент клиентской базы, сидит там правит что-нибудь.. минут 5 потратил, жмет записать - а ему выскакивает ошибка несоответствия версии или отсутствия записи базы

При попытке изменения заблокируется объект.... кто первый начал править тот и успел..

второму человеку при попытке править....вылезет сообщение об ошибке
1) Объект заблокирован - (если второй правит)
2) Несоответсвие версии (если второй уже записал и снял блокировку)

В принципе откройте любую типовую конфу... и поработайте с двумя пользователями с любым справочником..
11. ice-net 10 05.01.17 15:02 Сейчас в теме
(10)
В принципе откройте любую типовую конфу... и поработайте с двумя пользователями с любым справочником..

Речь ведь не про один справочник... Вы открываете элемент А, а блокируете А и Б..

Я хочу понять, для блокировки второго элемента при открытии первого есть какая-то необходимость(ведь можно обойтись спокойно без лишней блокировки)?
12. MrFlanker 142 05.01.17 15:20 Сейчас в теме
Б является дополнением А... то есть фактически мы имеем один справочник А+Б.

Поскольку на форме поля справочников А и Б.... нужно блокировать их оба.

К тому же не предполагается использование форм справочника "А"...в этом нет смысла...это противоречат целям создания справочника Б.
14. ice-net 10 05.01.17 16:17 Сейчас в теме
(12)
Б является дополнением А... то есть фактически мы имеем один справочник А+Б.

фактически это 2 абсолютно разных справочника.

К тому же не предполагается использование форм справочника "А"...в этом нет смысла...это противоречат целям создания справочника Б.


В Вашем случае для изменения, например, только имени и отчества в элементе клиенткой базы надо блокировать текущий элемент + Элемент информационной карты (согласитесь, является, мягко говоря, лишним действием..).
А для того, что бы изменить,например, только номер информационной карты, Вы опять заблокируете оба элемента.. что опять же не является необходимостью..

Ни в одной типовой конфигурации я не встречал подобных решений блокировки подчиненных справочнику элементов при открытии..

Не хочу разводить холивар и флуд и ни сколько не хочу критиковать Ваше решение делать именно так, просто хочу узнать для себя:
в чем выражена острая необходимость привязывать именно объект другого элемента, а не его ссылку, к элементу другого справочника?
На это есть какие-то объективные причины, с точки зрения получения в дальнейшем возможных ошибок или еще чего-нибудь.. или это просто Ваше решение, т.к. Вам так хочется/удобно/нужно?
15. MrFlanker 142 05.01.17 17:03 Сейчас в теме
(14)
В Вашем случае для изменения, например, только имени и отчества в элементе клиенткой базы надо блокировать текущий элемент + Элемент информационной карты (согласитесь, является, мягко говоря, лишним действием..).

Данные двух справочников имеет смысл редактировать только вместе.
Меняется ФИО, меняется и наименование=Ф+И+О....


(14)
А для того, что бы изменить,например, только номер информационной карты, Вы опять заблокируете оба элемента.. что опять же не является необходимостью..

Номер в большинстве случаев вообще лежит в регистре сведений.

(14)
в чем выражена острая необходимость привязывать именно объект другого элемента, а не его ссылку, к элементу другого справочника?

Привязывается ссылка, объект насколько мне известно привязать невозможно (нет такого типа данных).

(14)
Ни в одной типовой конфигурации я не встречал подобных решений блокировки подчиненных справочнику элементов при открытии..

Я ничего и не блокирую ... это делает 1С автоматически (просто на форме два объекта) и блокируются оба.


Логика работы в форме справочника "Клиентская база"... полностью копирует логику типовой работы из типовой формы "ИнформационныеКарты".

Все это нужно чтобы расширить функционал не меняя типовую конфу!!!
И все работает, блокируется штатно.....

....некоторые ньюансы блокировки могут возникнуть только при одновременной работе в обычной и управляемой форме. Я вообще управляемую форму элемента написал....интереса ради...есть обычная форма....но скорее всего выберу управляемую....просто душа лежит.

А вот форму списка пришлось писать из-за отсутствия динамических списков в обычных формах.

ПРИЛОЖИЛ СКРИНШОТ (в обычных формах блокировка работает идеально)
Прикрепленные файлы:
13. MrFlanker 142 05.01.17 15:43 Сейчас в теме
есть некоторые проблемы с блокировкой данных в простых и управляемых формах одновременно.

вот здесь Максим Радченко немного комментирует это
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566963

нас такой вариант устраивает. И разработчиков 1С вполне можно понять
16. MrFlanker 142 05.01.17 17:58 Сейчас в теме
Кстати нашел решение для блокировки (работает между УФ и обычные формы) http://www.forum.mista.ru/topic.php?id=634871

в коде выглядит вот так
// Блокирруем данные	
ЗаблокироватьДанныеДляРедактирования(ЭтаФорма.КартаОбъект.Ссылка,ЭтаФорма.КартаОбъект.ВерсияДанных,ЭтаФорма.УникальныйИдентификатор);


// Разбликируем данные
РазблокироватьДанныеДляРедактирования(ЭтаФорма.КартаОбъект.Ссылка,ЭтаФорма.УникальныйИдентификатор);


хорошо отрабатывает при всех возможных комбинациях...открытия форм обычных или УФ и начала редактирования в любой из форм. Все как с обычными формами теперь.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.
Все разделы

Вакансии


Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Преподаватель 1С
Санкт-Петербург
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 150 000 руб.
Полный день