powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
11 сообщений из 11, страница 1 из 1
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37436523
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До этого немного шлепал отчеты для другой ерп, там все приходилось делать на уровне базы прямыми sql-запросами. Не могу перестроиться на 1С-овский подход.
Задача.
Документ "АктПриходаВекселей":
Табличная часть "Векселя" (Реквизиты: Вексель, Сумма).

Справочник "ЦенныеБумаги"
(Реквизиты: Наименование, Номинал).

Реквизит "Вексель" имеет тип "СправочникСсылка.ЦенныеБумаги".
1. По структуре получаются таблицы: АктПриходаВекселей (PK)--(FK)Векселя(PK)--(FK)ЦенныеБумаги?
2. После того, как пользователь заполнит поле Вексель, выбрав из справочника нужный - что произойдет? В АктПриходаВекселей.Векселя.Вексель скопируется ссылка на выбранную запись в ЦенныеБумаги?
3. Куда денется остальная информация по выбранной в справочнике строке? Мне нужно получить стоимость выбранного векселя (ЦенныеБумаги.Номинал), чтобы поместить в АктПриходаВекселей.Векселя.Сумма.
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37436720
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кантачес, для начала огласите версию платформы 1С. (и вообще, любой вопрос по 1С надо начинать с озвучивания версии плаформы)
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37436764
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZ, 8.2.
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37436827
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кантачес

Реквизит "Вексель" имеет тип "СправочникСсылка.ЦенныеБумаги".
1. По структуре получаются таблицы: АктПриходаВекселей (PK)--(FK)Векселя(PK)--(FK)ЦенныеБумаги?
2. После того, как пользователь заполнит поле Вексель, выбрав из справочника нужный - что произойдет? В АктПриходаВекселей.Векселя.Вексель скопируется ссылка на выбранную запись в ЦенныеБумаги?
3. Куда денется остальная информация по выбранной в справочнике строке? Мне нужно получить стоимость выбранного векселя (ЦенныеБумаги.Номинал), чтобы поместить в АктПриходаВекселей.Векселя.Сумма.

2 да, в реквизит ТЧ формы запишется ссылка на справочник, после записи документа будет записана и ТЧ документа
3 ни ку да не денется, будет дотсупна через точку от ссылки

Векселя[3].вексель.НекийРеквизитВекселя
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37437512
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhard, спасибо за ответы. В примере кое что пропустили - нашел методом тыка.
Код: plaintext
1.
2.
3.
4.
Процедура ВекселяВексельПриИзменении(Элемент)
	ЭлементыФормы.Векселя.ТекущаяСтрока.Сумма = 
	ЭлементыФормы.Векселя.ТекущаяСтрока.Вексель.Номинал;
КонецПроцедуры
Как эта штука программно выглядит, хотя бы приблизительно? В справке о "ТекущаяСтрока" сказано, что в ней хранится текущая строка табличного поля. Но "Номинал" относится к другой таблице, получается другому табличному полю.
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37437576
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1с вполне способен вытащить из базы и весь объект по ссылке

смотри реалиционные базы данных
первые 3 принципа нормализации
о чем вопрос был? все как у всех
первичный ключ в базе есть
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37438493
Defender77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КантачесShuhard, спасибо за ответы. В примере кое что пропустили - нашел методом тыка.
Код: plaintext
1.
2.
3.
4.
Процедура ВекселяВексельПриИзменении(Элемент)
	ЭлементыФормы.Векселя.ТекущаяСтрока.Сумма = 
	ЭлементыФормы.Векселя.ТекущаяСтрока.Вексель.Номинал;
КонецПроцедуры
Как эта штука программно выглядит, хотя бы приблизительно? В справке о "ТекущаяСтрока" сказано, что в ней хранится текущая строка табличного поля. Но "Номинал" относится к другой таблице, получается другому табличному полю.

Вот именно так и выглядит. Номинал - это реквизит справочника "Вексель".
Если расшифровать полностью, то получится примерно так:
ЭлементыФормы - форма на которой все лежит
Векселя - табличное поле
ТекущаяСтрока.Вексель - Колонка в табличном поле "Векселя"
Номинал - значение реквизита спрачоника
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37440425
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Defender77Векселя - табличное поле
ТекущаяСтрока.Вексель - Колонка в табличном поле "Векселя"
Номинал - значение реквизита спрачоника
Если после поля ссылочного типа Вексель поставить точку, то платформа своими внутренними механизмами организует доступ к связанной таблице (ЦенныеБумаги), к той записи, ссылка на которую записана в поле Вексель? Т.е. то, что, например, в Парусе7 нужно сделать вручную в where, сравнив ключи?
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37440448
Сисой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КантачесЕсли после поля ссылочного типа Вексель поставить точку, то платформа своими внутренними механизмами организует доступ к связанной таблице (ЦенныеБумаги), к той записи, ссылка на которую записана в поле Вексель? Т.е. то, что, например, в Парусе7 нужно сделать вручную в where, сравнив ключи?

Да.
Поэтому в 1С практически не имеет смысла знать, как выглядят ключи (связь по RecID).
Но есть один существенный нюанс. При использовании разыменования ("точка") 1С полностью считывает объект, указанный после точки, в кэш памяти. Со всеми его табличными частями и реквизитами. На всякий случай. Предполагая, что Вам потребуются и другие реквизиты. Для справочника с небольшим количеством реквизитов и без табличных частей использование точки оправдано.

Поэтому на курсах по 1С учат делать так. В общем случае выборка производится запросом вида "ГДЕ ЦенныеБумаги.Ссылка=АктПриходаВекселейВекселя.Вексель".

Кстати, бонус. В запросах 1С тоже можно использовать точку. 1С сама построит недостающие соединения с таблицами.

Вам бы на курсах поучиться. Или хотя бы карту дистанционного обучения купить.
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37440693
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КантачесЕсли после поля ссылочного типа Вексель поставить точку, то платформа своими внутренними механизмами организует доступ к связанной таблице (ЦенныеБумаги), к той записи, ссылка на которую записана в поле Вексель?
да
причем глубина вложенности не ограничена
используй конструктор запросов
в нем строиться дерево всех метаданных конфигурации,
что позволяет быстро лабать отчеты

использовать в коде разыменование то же можно
...
Рейтинг: 0 / 0
Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
    #37442446
Кантачес
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СисойНо есть один существенный нюанс. При использовании разыменования ("точка") 1С полностью считывает объект, указанный после точки, в кэш памяти. Со всеми его табличными частями и реквизитами. На всякий случай. Предполагая, что Вам потребуются и другие реквизиты.

Значит, когда я написал Вексель.Номинал, то 1С вытянул в память и все остальные поля записи и ЦенныеБумаги?

СисойВам бы на курсах поучиться. Или хотя бы карту дистанционного обучения купить.
[/quot]
Я пока по Радченко, по 8.2.

Shuhardиспользуй конструктор запросов

То есть можно было вместо кода создать запрос? Он так же вытянул бы всю строку, или уже только то, что нужно? Эдакая экономичная по памяти альтернатива?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Мышление от "sql-запроса к таблицам по ключам" к 1С-ному на конкретном примере.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]