Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
 Аватар для Olchik
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131

Как обратиться к справочнику в регистре сведений?

02.10.2011, 09:30. Показов 4672. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, форумчане. В общем, есть регистр сведений СтоимостьВалюты, в этом регистре есть измерение Валюта (ссылка на справочник Валюта, где содержатся наименования валют) и ресурс СтоимостьВалюты. В этом регистре содержаться стоимости валют в рублях (н-р, доллар = 32 и т д). Необходимо, чтоб нельзя было сделать стоимость валюты Рубль равной чему-нибудь кроме 1 рубля (ну, это и логично, не может рубль стоить, скажем, 2 рубля). Для этого в модуле формы записи регистра при закрытии формы поставлено условие
1C
1
2
3
4
5
6
&НаКлиенте
Процедура ПриЗакрытии()
    Если Запись.Валюта=Справочники.Валюта.Рубль Тогда Запись.Стоимость=1;
    КонецЕсли;
 
КонецПроцедуры
Ругается так
Code
1
2
{РегистрСведений.СтоимостьВалюты.Форма.ФормаЗаписи.Форма(17,21)}: Переменная не определена (Справочники)
    Если Запись.Валюта=<<?>>Справочники.Валюта.Рубль Тогда Запись.Стоимость=1; (Проверка: Тонкий клиент)
p.s. работаю в 1с 8.2, реквизит Рубль в Справочнике Валюта предопределен
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2011, 09:30
Ответы с готовыми решениями:

Как обратиться к Справочнику-Владелец
Как обратиться к Справочнику-Владелец из формы не записанного (нового) элемента подчиненного справочника? (1С v7.7)

Создание записи в непериодическом регистре сведений при записи элемента справочника
Всем привет! Платформа 1С:Предприятие 8.3, конфигурация редактированная типовая, режим неуправляемый. Имеется справочник Контрагенты с...

Как задать единственность записи на период в регистре сведений?
опять про баранов:) имеется некое измекрение с некоей периодичностью, причем значение этого измерения в течении периода должно быть...

9
 Аватар для fimbulwinter
309 / 309 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
02.10.2011, 09:54
Любое обращение к данным происходит ТОЛЬКО на сервере.
Поэтому Процедура ПриЗакрытии() лучше всего расположить в модуле набора записей. Процедура так же предопределенная.
Второй вариант. На форме, при изменении валюты проставлять Стоимость = 1 без возможности редактирования этого поля + автоматическое получение курсов валют
Хотя не понимаю зачем это нужно.
1
 Аватар для Olchik
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
02.10.2011, 13:00  [ТС]
Цитата Сообщение от fimbulwinter Посмотреть сообщение
лучше всего расположить в модуле набора записей
а мы, собственно, находимся в модуле формы записи. или это не то же самое?

Цитата Сообщение от fimbulwinter Посмотреть сообщение
Второй вариант. На форме, при изменении валюты проставлять Стоимость = 1 без возможности редактирования этого поля + автоматическое получение курсов валют
Хотя не понимаю зачем это нужно.
Если так сделать, то, по идее, все валюты будут иметь стоимость 1 руб, а так быть не должно. Надо, чтоб пользователь сам мог добавить валюту и ее стоимость, а также мог добавить запись с той же валютой, но другой стоимостью (вчера доллар был 30 руб, а сегодня он уже 31).(потом в документе делаю срез последних курсов валют, и, таким образом, получаю актуальные стоимости валют на сегодняшний день). Впрочем, это неважно.Это уже сделано, работает.
Вопрос состоит в том, как сделать условие: если валюта=рубль, то ее стоимость=1 в любом случае.
p.s. извините, если чего-то не понимаю, это мой первый опыт программирования в 1с.

Добавлено через 2 часа 11 минут
Тема более неактуальна. Теперь рубль всегда равен рублю Если кому-то интересно, спрашивайте - расскажу, как решила проблему.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
02.10.2011, 16:48
Расскажи
0
 Аватар для Olchik
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
02.10.2011, 21:22  [ТС]
Решение очень извращенное, но все же работает. В общем, у меня был общий модуль РаботаСоСправочниками, туда я вставила нехитрую функцию ВалютаРубль, которая просто возвращает значение реквизита справочника.
1C
1
2
3
Функция ВалютаРубль() экспорт
        Возврат Справочники.Валюта.Рубль;
    КонецФункции
А в форме записи регистра сведений при изменении вставила то условие, какое и было, но вместо реквизита Рубль из справочника я запросила функцию из общего модуля
1C
1
2
3
4
5
6
&НаКлиенте
Процедура СтоимостьПриИзменении(Элемент)
    Если Запись.Валюта=РаботаСоСправочниками.ВалютаРубль() Тогда Запись.Стоимость=1;
    КонецЕсли;
 
КонецПроцедуры
Получается, что я сделала предопределенный реквизит Рубль глобальным, я думаю. Не очень изящно, но как иначе, я не знаю
0
31 / 31 / 0
Регистрация: 19.03.2011
Сообщений: 100
03.10.2011, 04:14
Правильно, лучше вырезать гланды автогеном через задний проход. Ведь гораздо сложнее написать:
1C
1
2
3
4
Процедура ВалютаПриИзменении(Элемент)
    Если Запись.Валюта.Наименование= "Рубль" Тогда Запись.Стоимость=1;
    КонецЕсли;
КонецПроцедуры
0
 Аватар для Olchik
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
03.10.2011, 09:57  [ТС]
Цитата Сообщение от Flamepain Посмотреть сообщение
Запись.Валюта.Наименование= "Рубль"
Собственно, вот эту строчку я и хотела увидеть, когда обращалась за помощью. Очень тяжко программировать там, где не знаешь названий.

Кстати, Ваш вариант не работает.
Ругаемся:
Code
1
2
{РегистрСведений.СтоимостьВалюты.Форма.ФормаЗаписи.Форма(6)}: Поле объекта не обнаружено (Наименование)
 Если Запись.Валюта.Наименование= "Рубль" Тогда Запись.Стоимость=1;
Думаю, это из-за того, что Запись.Валюта ссылается на соответствующий справочник. Хотя...

В общем, через задний проход иногда бывает эффективней
0
 Аватар для fimbulwinter
309 / 309 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
03.10.2011, 10:04
комрад просто любитель потролить...
это бывает у людей с огромными амбициями, маленьким членом и отсутствием интеллекта.
простите за оффтоп, накипело.
0
31 / 31 / 0
Регистрация: 19.03.2011
Сообщений: 100
03.10.2011, 11:07
Значит просто:
1C
1
Если Запись.Валюта= "Рубль" Тогда Запись.Стоимость=1;
0
 Аватар для Olchik
21 / 21 / 1
Регистрация: 31.07.2009
Сообщений: 131
03.10.2011, 23:27  [ТС]
Цитата Сообщение от Flamepain Посмотреть сообщение
Если Запись.Валюта= "Рубль" Тогда Запись.Стоимость=1;
Даже проверять сейчас не буду, потому что сначала я сделала ИМЕННО ТАК, и очень удивилась, почему оно не работает. Не ругается, но и не работает...

Добавлено через 21 минуту
Цитата Сообщение от fimbulwinter Посмотреть сообщение
это бывает у людей с огромными амбициями, маленьким членом и отсутствием интеллекта.
члена у меня нет, так что с ним все в порядке, и я совсем не обижаюсь на тех, у кого не все в порядке

шутка, разумеется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2011, 23:27
Помогаю со студенческими работами здесь

Установить период в регистре сведений
Добрый день! Есть периодический регистр сведений (в пределах месяца) подчиненный регистратору. Мне необходимо, чтобы записи попадали в...

Реализация отбора за период в регистре сведений
&amp;НаСервереБезКонтекста Процедура Команда1НаСервере() з =...

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

Заполнение документа данными из шаблона в регистре сведений
Доброго времени суток. Не могу справиться с задачей, поэтому прошу специалистов о помощи! Имеется созданный мной регистр сведений...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru