Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 3
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Чтение дополнительно реквизита в обработчике "Перед Обработкой"          
Hunterok Подменю пользователя
сообщение 17.02.14, 0:02
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 38
Спасибо сказали: 4 раз
Рейтинг: 0

Конфигурация БП 1.2

Создал для документа дополнительный реквизит, тип "Булево". В обработчике "Перед Обработкой" правила регистрации документа вставил такой код

КодСвойства = "001";
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду(КодСвойства);
Фильтр = новый Структура("Объект,Свойство",Источник.Ссылка,Свойство);
ЗначениеНеВыгружать = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(Фильтр);
Если ЗначениеНеВыгружать = Истина Тогда
   Отказ = Истина;
КонецЕсли;


В итоге независимо от значения дополнительного реквизита документы не регистрируются для обмена. Подскажите что не так в коде. При этом для проверки я просто вставил практически такой же код (Источник.Ссылка-->ЭтотОбъект.Ссылка) в модуль формы документа с выводом сообщения в котором показывается значение доп. реквизита - все работает нормально.

logist Подменю пользователя
сообщение 17.02.14, 9:10
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2540 раз
Рейтинг: 0

Откройте синтаксис помощник, и посмотрите, что возвращает Получить() у Регистрасведений. Думаю, откроете для себя что-то новое wink.gif

p.s. и про отладчик почитайте wink.gif


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Hunterok,

Hunterok Подменю пользователя
сообщение 17.02.14, 10:52
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 38
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(logist @ 17.02.14, 9:10) *
Откройте синтаксис помощник, и посмотрите, что возвращает Получить() у Регистрасведений. Думаю, откроете для себя что-то новое wink.gif

p.s. и про отладчик почитайте wink.gif

Программированием 1С я начал интересоваться только недавно. Меня друг попросил на одной фирме помочь ему с этим. Что такое отладчик - я знаю, но я не знаю как пользоваться отладчиком для правил регистрации. Синтаксис помощник я смотрел, но по Региструсведений ничего интересного для себя не нашел, может не там искал.
Знаете, не хочу здесь описывать свои проблемы и нехватку времени на изучение всего сразу, но хочу сказать вот что: если это форум для обсуждения и помощи, то хотелось бы получить именно ПОМОЩЬ. Я не зашел сюда и не сказал "Дайте мне готовый код". Я потратил кучу времени что бы разобраться, перегуглил кучу информации и не смог своими силами разобраться. Да, я знаю, что лезть туда, перед чем нужно выучить более простые вещи - это не совсем правильно, но я согласился помочь и не хочу отступать. Потому, если у вас есть что сказать по делу - так напишите по делу. А показать какой вы умный, а кто-то глупый - это дело не сложное, хотя в уровне ваших знаний я не сомневаюсь.

Vofka Подменю пользователя
сообщение 17.02.14, 11:08
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14061
Из: Киев
Спасибо сказали: 4626 раз
Рейтинг: 3765.1

Може как-то так:

КодСвойства = "001";
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду(КодСвойства);
Фильтр = новый Структура("Объект,Свойство",Источник.Ссылка,Свойство);
Данные = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(Фильтр);
Если Данные.ЗначениеНеВыгружать = Истина Тогда
   Отказ = Истина;
КонецЕсли;

Спасибо сказали: Hunterok,

logist Подменю пользователя
сообщение 17.02.14, 11:15
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2540 раз
Рейтинг: 0

Цитата(Hunterok @ 17.02.14, 10:52) *
а кто-то глупый

Я не пытаюсь показывать, что кто-то глупый, если я кого-то отправляю, что-то почитать, то преследую лишь одну цель - научить человека получать информацию там где она есть сразу и под рукой, а не тратить время на писанину на форумах, и ожидание ответов. Другое дело если кто-то не понимает того, что там написано, это можно разъяснить, но когда человек пишет - искал искал, ничего не нашел, это уже вызывает подозрение - "а искал ли", я же не знаю наверняка, я лишь действую по предположениям. Вы же каким-то образом поняли, что надо написать "Получить()"? И если бы почитали синтаксис-помощник по этому методу:
Цитата
Возвращаемое значение:
Тип: Структура.
Структура, содержащая значения ресурсов.

Что такое тип Структура и Тип Булево думаю объяснять не надо. У вас идет сравнение не совместимых типов, поскольку структура не Истина, то в условии всегда будет Ложь.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Hunterok,

Hunterok Подменю пользователя
сообщение 17.02.14, 11:43
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 38
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(logist @ 17.02.14, 11:15) *
Что такое тип Структура и Тип Булево думаю объяснять не надо. У вас идет сравнение не совместимых типов, поскольку структура не Истина, то в условии всегда будет Ложь.

Спасибо за более конструктивный ответ. Я просматривал куски кода на разных форумах и таким вот методом сложил этот. Но почему данный код нормально работает в модуле формы документа Приходный кассовый ордер? Для проверки, в процедуру я добавил вот такой код:
Процедура ПриОткрытии()
    КодСвойства = "001";
    СвойствоВыгружать = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду(КодСвойства);
    Фильтр = новый Структура("Объект,Свойство",ЭтотОбъект.Ссылка,СвойствоВыгружать);
    Результат = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(Фильтр);
    Сообщить(Результат.Значение);

В итоге при открытии документа, в котором на доп реквизите стоит галочка, я получаю сообщение "Да", на котором не стоит, соответственно, ничего не получаю.

Vofka, Все равно не работает. Мне кажется, что кроме возможных прочих ошибок проблема может быть в Источник.Ссылка. Я не уверен, что это правильная ссылка для получения значения из РегистраСведений.

logist Подменю пользователя
сообщение 17.02.14, 11:45
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2540 раз
Рейтинг: 0

Цитата(Hunterok @ 17.02.14, 11:36) *
Для проверки, в процедуру я добавил вот такой код:

Ну так, это правильный код, выше же писали совсем другой.
Разница, видите:
Цитата(Hunterok @ 17.02.14, 0:02) *
Если ЗначениеНеВыгружать = Истина Тогда

Цитата(Hunterok @ 17.02.14, 11:36) *
Результат.Значение



Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Hunterok,

Ardi Подменю пользователя
сообщение 17.02.14, 12:09
Сообщение #8

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(Hunterok @ 17.02.14, 11:43) *
на котором не стоит, соответственно, ничего не получаю.

Потому что автоматом запись в базе не создаётся.
Она создаётся если мы вносим значение Истина\Ложь.
Соответственно будет 3 варианта - истина, ложь, нет записи.

Я тут подумал - подозреваю что регистрация нового объекта будет происходить всегда. Так как новый объект будет записываться до того как появится запись в регистре сведений.
(Но нужно проверять)

Сообщение отредактировал Ardi - 17.02.14, 12:09


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Hunterok Подменю пользователя
сообщение 17.02.14, 12:11
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 38
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(logist @ 17.02.14, 11:45) *
Ну так, это правильный код, выше же писали совсем другой.
Разница, видите:

Все, я понял, спасибо. Переписал в обработчике код, теперь работает отлично.
КодСвойства = "001";
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду(КодСвойства);
Фильтр = новый Структура("Объект,Свойство",Объект.Ссылка,Свойство);
Результат = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(Фильтр);
Если Результат.Значение = Истина Тогда
   Отказ = Истина;
КонецЕсли;


Все-таки правильно Объект.Ссылка а не Источник.Ссылка

Всем огромное спасибо за помощь! Дали почувствовать, что не зря потратил столько времени.

logist Подменю пользователя
сообщение 17.02.14, 12:55
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2540 раз
Рейтинг: 0

Цитата(Hunterok @ 17.02.14, 12:11) *
Все-таки правильно Объект.Ссылка а не Источник.Ссылка

это зависит от того, где вызывается код.

// В порядке занудства, не люблю когда много текста
//Если Результат.Значение = Истина Тогда
//   Отказ = Истина;
//КонецЕсли;
Отказ = Результат.Значение;


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 17.02.14, 13:40
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14061
Из: Киев
Спасибо сказали: 4626 раз
Рейтинг: 3765.1

Цитата(logist @ 17.02.14, 12:55) *
// В порядке занудства, не люблю когда много текста
//Если Результат.Значение = Истина Тогда
//   Отказ = Истина;
//КонецЕсли;
Отказ = Результат.Значение;

Потенциально опасный код, который может вываливаться с ошибкой. См. пост 8.

И я в порядке занудства добавлю, что лицензии на буквы в алфавите - предоставляются бесплатно smile.gif .

logist Подменю пользователя
сообщение 17.02.14, 13:42
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2540 раз
Рейтинг: 0

Цитата(Vofka @ 17.02.14, 13:40) *
Потенциально опасный код

Точно smile.gif


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 22.08.25, 3:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!