Опять всем привет!
Я понял, в чем была причина сбоя…. дошло на конец. Вот действительно какая глупость… как сам не догнал а … вернее догнал но мельком … и в том и дело что была такая мысль в голове … пару раз мелькнула… так что догнал но не до конца.
Короче все правильно… цикл уходит в вечность… так и есть .. естественно … ведь событие перед записью это уже и есть запись. А если в это событие поместить команду записи и тем более еще с ЦЫКЛОМ то система просто охреневает от этой дури и понять не может что за чушь .. и конечно резко вырубается. Так что среда разработки тут не причем. Напрасно я усомнился.
Да уж прямо …вынужден признать … нашелся «умник» … над созданием этой среды разработки работали супер грамотные и первоклассные профессионалы и они «допустили» бы баг? Тем более такой примитивный? Нет, это очень мало вероятно. Так что, каюсь … каюсь…
И в самом начале темы просто меня не до конца поняли, а то думаю тут же сказали бы причину.
И самое смешное еще это то, что в начале темы говорил еще о логике … надо же … рассуждал…. разглагольствовал … и при этом совсем не заметил, что сам вопрос темы алогичный…. «цирк». ))))
Помещать в событие перед записью команду записи, да еще и с циклом.. надо же … как это «логично». Это просто грубейшая ошибка )))) и самое смешное что именно логическая. )))) Простить себе не могу …. такую чушь.
Вот что бывает, когда слишком много задач ставится за один раз. Которыми голова просто забита … И настолько, что просто идет кругом… и уже даже в простых вещах с трудом соображаешь.
А по поводу решения поставленной задачи, и вопроса о том, если путем события перед записью не правильно то, как ее решить? Дело в том, что как сам убедился, разработчики об этом уже позаботились. И в самом деле… что это я прицепился к событию перед записью. Ведь платформа предлагает еще и другие события. На пример такие как «ОбработкаПроверкиЗаполнения».
Поэтому уже теперь все выглядит так:Перем РеквСсылкаЗначПрежнее,РеквСсылкаЗначТекущее;
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ЗначениеПеременных();
//Сообщить("Прежняя ссылка: "+РеквСсылкаЗначПрежнее+Символы.ПС+"Текущая ссылка: "+РеквСсылкаЗначТекущее);
//=======================================
Если РеквСсылкаЗначПрежнее=РеквСсылкаЗначТекущее Тогда Возврат КонецЕсли; //Это условие для того что бы лишний раз не запускать запрос проверки. А только тогда когда это нужно.
ТекСпр_РеквСсылкиЗначДубля_Очистить(ЭтотОбъект.Ссылка,РеквСсылкаЗначПрежнее,РеквСсылкаЗначТекущее);
//=======================================
СпрСвязи_РеквСсылкиЗначДубля_ОчиститьПрисвоить(ЭтотОбъект.Ссылка,РеквСсылкаЗначПрежнее,РеквСсылкаЗначТекущее);
КонецПроцедуры
Процедура ТекСпр_РеквСсылкиЗначДубля_Очистить(ОбъектСсылка,РеквСсылкаЗначПрежнее,РеквСсылкаЗначТекущее)
//Если ОбъектСсылка.Ссылка.Пустая() Тогда Возврат КонецЕсли;
//=======================================
Запроса = Новый Запрос(
"ВЫБРАТЬ
|Ссылка,
|СсылкаСвязи
|ИЗ
|Справочник.УникальнаяСвязь1_Серв КАК УникальнаяСвязь1_Серв");
//=======================================
Выгрузка = Запроса.Выполнить().Выбрать();
//=======================================
Количество=0;
Пока Выгрузка.Следующий() Цикл
//---------------------------------------
Если Не Выгрузка.Ссылка=ОбъектСсылка и
Не Выгрузка.Ссылка.СсылкаСвязи.Пустая() и
((РеквСсылкаЗначПрежнее.Пустая()=Ложь и Выгрузка.СсылкаСвязи=РеквСсылкаЗначПрежнее) или
(РеквСсылкаЗначТекущее.Пустая()=Ложь и Выгрузка.СсылкаСвязи=РеквСсылкаЗначТекущее))Тогда
ЗнСсылкиДубля=Выгрузка.Ссылка;
ОбъектЗаписи = ЗнСсылкиДубля.ПолучитьОбъект();
ОбъектЗаписи.СпособЗадачи=0;
ОбъектЗаписи.СсылкаСвязи="";
ОбъектЗаписи.Записать();
КонецЕсли;
//---------------------------------------
КонецЦикла;
//=======================================
КонецПроцедуры
Процедура СпрСвязи_РеквСсылкиЗначДубля_ОчиститьПрисвоить(ОбъектСсылка,РеквСсылкаЗначПрежнее,РеквСсылкаЗначТекущее)
//Сообщить(Строка(ОбъектСсылка)+" - "+Строка(РеквСсылкаЗначПрежнее)+" - "+РеквСсылкаЗначТекущее);
Если РеквСсылкаЗначПрежнее<>Неопределено Тогда
Если РеквСсылкаЗначПрежнее.Пустая()=Ложь Тогда
ОбъектЗаписи = РеквСсылкаЗначПрежнее.ПолучитьОбъект();
ОбъектЗаписи.СсылкаСвязи="";
ОбъектЗаписи.Записать();
КонецЕсли;
КонецЕсли;
Если РеквСсылкаЗначТекущее<>Неопределено Тогда
Если РеквСсылкаЗначТекущее.Пустая()=Ложь Тогда
ОбъектЗаписи = РеквСсылкаЗначТекущее.ПолучитьОбъект();
ОбъектЗаписи.СсылкаСвязи=ОбъектСсылка;
ОбъектЗаписи.Записать();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Поэтому вместо того, что бы болтать о логике, нужно было посмотреть. И на самом деле через это событие задача решается … правда только если объект сохранен.
[необходимо зарегистрироваться для просмотра ссылки]
И задачу решил… вроде бы нормально работает в итоги. Сам проверял. Правда пришлось написать процедуры и функции.
И тут не в обиду… ибо опять не могу без критики, которая вполне логична…
И пять и тут становиться уместным повторить то, что часто говорил до этого.
Всем хорошая платформа.. .. удобная функциональная, но просто нуждается в доработке. То, что есть событие: «ОбработкаПроверкиЗаполнения» это хорошо, но было бы еще круче если та задача, которую решил и суть которой будет понятна в экземпляре, если ее можно было решить совсем просто…имею ввиду ОПЦИОНАЛЬНО .. а не процедурно. Ну сами подумайте … ведь все таки пришлось писать функции .. процедуры…. целые строки… А все это не нужно было бы делать, если в платформе была бы такая опция как на пример уникальное значение реквизита. Ну на пример у любого реквизита была бы такая галочка. Отметив которую этот реквизит приобретал бы свойства реквизита измерения. А еще лучше, если бы работал бы, так как сделано в экземпляре. Вот что было бы совсем круто. Это существенно решение тй задачи которая представлена в экземпляре. Просто назначил галочкой любой реквизит и все дела. Без этого гемма с функциями и процедурами которые нужно самому писать.
Ведь важно не только то, что удобно пользователю, но еще и то, что удобно саму программисту. Т.е. что бы не только пользователю, но и программисту было легче работать.
Вот собственно и все.
Опять много букв, но просто решил поделиться. Так что опять не обессудьте.
Ладно! Всем еще раз спасибо!
Пока!