Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 21:43

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

Автор helgе, 07 авг 2018, 21:32

0 Пользователей и 1 гость просматривают эту тему.

helgе

Недавно стал учить 1с и решил практиковаться. Задания придумываю сам себе и вот решил сделать такую вещь: есть справочник "Сотрудники" в котором есть реквизит "Работающий", тип "Булево", также есть регистр сведений "ЗанятостьДолжностей" с измерением "Должность" тип "СправочникСсылка.Должности", и ресурсом "Сотрудник" тип  "СправочникСсылка.Сотрудники". Так вот, я хочу сделать так, чтобы когда в регистр сведений вносится новая запись, то у ресурса "сотрудник" читался признак "работающий" и если он имеет значение "ложь" в справочнике, то происходил бы отказ записи. Я пробовал и в общем модуле прописать функцию, которая бы возвращала признак "работающий", а потом в форме записи регистра я бы обращался к этой функции также пробовал в форме записи регистра сначала делал процедуру "наСервереБезКонтекста" пользовался сначала методом "НайтиПоРеквезиту", а потом использовал метод "ПолучитьОбъект" , а потом на клиенте создал событие "передЗаписью", и там обращался к внеконтекстной процедуре, однако всё безрезультатно. Отказ=Истина ставил, но не в этом дело, не знаю как сделать так, чтобы регситр сведений увидел значение реквизита  своего ресурса с типом "СправочникСсылка.<...>". Кажется, что задание простое, но я нуб пока что. Может быть попробовать запрос?Буду рад любым советам.

Golickoff

Если НЕ Сотрудник.Работающий Тогда
    Отказ = Истина;
КонецЕсли;

В чём тут проблема?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

helgе

Цитата: Golickoff от 08 авг 2018, 08:09
Если НЕ Сотрудник.Работающий Тогда
    Отказ = Истина;
КонецЕсли;

В чём тут проблема?
Не в этом дело, дело в реквизите "работающий" это здесь не при чём.

bsn-chita

Может так?

//Модуль набора записей регистра сведений.
Процедура ПередЗаписью(Отказ, Замещение)
Если НЕ Замещение Тогда
Для Каждого Запись Из ЭтотОбъект Цикл
Если НЕ Запись.Сотрудник.Работающий Тогда
Отказ = Истина;
КонецЕсли; 
КонецЦикла;
КонецЕсли;
КонецПроцедуры

helgе

Цитата: bsn-chita от 08 авг 2018, 09:15
Может так?

//Модуль набора записей регистра сведений.
Процедура ПередЗаписью(Отказ, Замещение)
Если НЕ Замещение Тогда
Для Каждого Запись Из ЭтотОбъект Цикл
Если НЕ Запись.Сотрудник.Работающий Тогда
Отказ = Истина;
КонецЕсли; 
КонецЦикла;
КонецЕсли;
КонецПроцедуры

Не не помогает и у меня второй параметр почему-то не "Замещение", а "ПараметрыЗаписи". Пробовал прописать вручную параметр "Замещение", но не помогло. Как получить событие с параметром "Замещение"? Я использовал уже модули всех форм. В общем не сработало.

bsn-chita

Цитировать
Не не помогает и у меня второй параметр почему-то не "Замещение", а "ПараметрыЗаписи". Пробовал прописать вручную параметр "Замещение", но не помогло. Как получить событие с параметром "Замещение"? Я использовал уже модули всех форм. В общем не сработало.
В комментарии же написано что это не в модуле формы, а в модуле набора записей(Регистр сведения - вкладка Прочее - кнопку Модуль набора записей).

helgе

Цитата: bsn-chita от 09 авг 2018, 01:00
Цитировать
Не не помогает и у меня второй параметр почему-то не "Замещение", а "ПараметрыЗаписи". Пробовал прописать вручную параметр "Замещение", но не помогло. Как получить событие с параметром "Замещение"? Я использовал уже модули всех форм. В общем не сработало.
В комментарии же написано что это не в модуле формы, а в модуле набора записей(Регистр сведения - вкладка Прочее - кнопку Модуль набора записей).
Перепутал модуль формы набора записей с просто модулем набора записей :D всё получилось. Спасибо за помощь, а можете ещё простыми словами объяснить за что отвечает параметр "замещение", в синтаксис-помощнике читал:
Режим записи набора.
Истина - запись осуществляется с заменой существующих в базе данных записей набора.
Ложь - запись осуществляется с "дописыванием" текущего набора записей.

но что-то не понял сути...

bsn-chita

Цитировать
когда в регистр сведений вносится новая запись
Когда Замещение = Истина это значит что запись есть и данные нужно обновить заменив их новыми, если же Замещение = Ложь значит это новая запись.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск