Как в 1с связать два реквизита
Добавил пользователь Alex Обновлено: 05.10.2024
Понятие "тип реквизита" отличается от понятия "тип значения"
Конкретное значение не может быть составного типа. Одно конкретное значение может быть только одного типа данных.
Реквизит может быть как одного типа, так и составного типа. В последнем случае его тип описывается объектом "ОписаниеТипов", т.е. список возможных типов, значения которых могут храниться в этой колонке. Например, СправочникСсылка.М1, СправочникСсылка.М2, Строка, Число, ДокументСсылка.Д1.
В каждой строке (элементе, записи) содержится какое-то свое значение, но каждое из них - одного типа. Например, "СправочникСсылка.М1". Если же в ячейке колонки, имеющей составной тип, даже не выбран (не назначен) тип значения, то оно содержит значение "Неопределено" (это значение и одновременно тип). Если же тип выбран (кнопкой Т или установлен программно), то ячейка содержит пустое значение этого типа, например, пустую ссылку на элемент справочника (см. v8: Пустые ссылки), пустую строку "" или 0.
Чтобы реквизиту составного типа установить конкретный тип, достаточно присвоить ему пустое значение этого типа.
Вопрос:
Какие существуют особенности работы с составными типами данных.
Ответ
Этот вопрос имеет два стороны:
1) Сторона элемента формы.
Для элемента формы мы можем установить только ограничение на типы которые можно выбрать.
Т.е. с помощью кода:
Мы ограничиваем возможный типы только одним "СправочникСсылка.Контрагенты".
НО это не действует на значение которое хранится в источнике данных.
Поэтому если реквизит который связан с "ПолеВвода1" имеет "составной" тип, например Любая ссылка,
он будет неопределенного типа даже после "ЭлементыФормы.ПолеВвода1.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);"
2) Сторона источника данных.
Здесь ограничение на тип накладывается либо в конфигураторе, либо в момент создания этого элемента из языка.
Но если у реквизита установлен "составной" тип значение реквизита будет неопределенно до тех пор, пока ему не будет присвоено значение конкретного типа.
Присвоить конкретное значение можно либо из языка, либо выбрав это значение в форме.
Из выше описанного можно сделать вывод:
Если у реквизита установлен "Составной" тип данных, то даже при ограничении возможных типов у элемента формы до одного возможного, у пользователя будет запрошен тип который нужно будет присвоить реквизиту.
Если мы хотим оградить пользователя от лишних движений, т.е. выбора единственно возможного типа, нам нужно предварительно установить тип реквизита.
Сделать это можно следующим образом:
Добавление от ezh (особенности при работе с элементами в табличном поле):
1.
Вместо этого:
Доброго времени суток, не так много занимаюсь изучением 1С. У меня возник вопрос. Создал конфигурацию и хочу сделать одну автоматизацию в справочнике.
Попытаюсь достаточно понятно объяснить:
У меня есть справочник Автомобили. В табличной части которого есть реквизиты (Марка, Модель и др.). Реквизит Марка является ссылкой на другой справочник (Марки), где просто идет перечисление марок, посредством названия реквизитов (audi, bmw и так далее). Я хочу сделать, чтобы при выборе определенной марки, в следующем реквизите "Модель" был определенный выбор список моделей, в зависимости от выбранной марки. Например, если мы выбираем bmw, то в моделях должен быть выбор (x6, i8), если audi (q7, tt). Для этого я создал справочник Модели с табличными частями bmw, audi, реквизитами которых являются названия моделей (x6, i8 - это для табличной части bmw).
Вопрос в следующем, как связать выбор реквизита, в зависимости от выбора предыдущего реквизита? Я думал, что мне нужно в модуле формы справочника Автомобили установить связь одного реквизита с другим. Но после многочисленных попыток я немного сдался :) Прошу вашей помощи.
Добрый день. Учусь на примерах Радченко создавать свою подсистему.
Как при выборе в табличной части дисциплины информатика автоматически заполнилось поле ВидОценивания? КАк реализовать через код. можете набрасать как примерно можно с комментариями, что бы разобраться. (я сама пробовала, но выводятся ошибки помогите пожалуйста)
Как соединить два реквизита на форме
Есть такая форма (картинка 1) при нажаты на кнопки(картинка 1 стрелка) и после выбора Родителя.
Заполнение реквизита табличной части, исходя из значения реквизита документа
Есть справочник с табличной частью. У неё есть 3 реквизита: документ, приход, расход. Есть 2.
Соединить два символа в 1
Здравствуйте! Требуется объединить два символа в 1. Например тип String с по элемента объединить.
Соединить два списка
Склеить два списка Создать два списка, создать третий, в котором склеим первый и второй
Приветствую знатоков 1С.
Оговорюсь сразу - только начал изучать и ещё в самом начале. Буду очень благодарен за содержательные советы.
Суть проблемы: есть справочник, содержащий название блюда, массу мяса и массу масла. Нужно при вводе через форму объекта документа выбрать из справочника название блюда (это я сделал - через ссылочный тип) а вот два оставшихся поля должны автоматически заполниться соответствующими значениями граммовки из той же записи справочника.
Можно хотя бы пример кода который бы выбирал данные из других полей данных записи справочника, на которую (запись) указывает выбор пользователя из ссылочного списка.
Как сделать, чтобы в одном поле формы списка отражались данные двух реквизитов справочника
Привет! Подскажите пожалуйста как сделать, чтобы в одном поле формы списка отражались данные двух.
Заполнение реквизитов строки ТЧ документа заченями реквизитов выбранного элемента
Здравствуйте. Запнулся вроде бы на простой задаче - забыл как делается. Суть задачи: есть в.
Поиск соответствия реквизитов справочника
Доброго дня, у меня такая проблема разрабатываю примитивную (информационную систему аэропорта).
Если нужно заполнить реквизиты документа, тогда создаётся событие поля блюда ПриИзменении на клиенте и на сервере, и заполняется примерно так:
Но это дублирование информации, и не считается хорошим тоном. Объясняю.
В документе хранят исходную информацию и результирующую информацию.
Промежуточную информацию, которую можно получить из имеющихся объектов, нужно хранить только если она меняется со временем, но тогда она должна находиться не в справочнике, а в периодическом регистре сведений.
Это нужно для того, чтобы, с одной стороны, при перепроведении документа без изменения документа содержимое регистров не менялось, но, с другой, можно было бы пересчитать результирующую информацию без открывания интерфейса документа. Например, в Вашем случае, при исправлении ошибки в ТТК.
Здравствуйте. Спасибо большое за ответ. Видимо не набрал ещё нужного уровня знаний, чтобы понять ответ. Я как раз только дошёл до того, что любое приложение на "1С" это взаимодействие клиента, сервера и БД.
Эти методы, что вы написали в примере - они стандартные?
Вот что мне нужно. Есть соответствуйющий справочник - "МенюПервогоКорпуса" - там разумеется два стандартных реквизита, код и наименование (в нём хранится название блюд) и два реквизита созданных: МассаМяса, МассаМасла (В них соответственно граммовка).
Чтобы максимально на это корректно ответить, нужна дополнительно информация.
1. Куда Вы это делаете:
- Для себя;
- По заданию, для обучения;
- Для реальной конфигурации;
2. Форма объекта чего? Документ, Обработка, другой справочник?
3. Что должен делать этот объект?
4. Версия платформы, Режим запуска конфигурации: Управляемое или обычное приложение.
Привет.
1. Делаю это для жены для её работы очень пригодится. И конечно для того чтобы получить опыт.
2. Это форма документа, которая будет давать возможность выбрать блюда завтрака, обеда и заодно заполнить соответствующие поля граммовки из заполненного справочника. Через эту же форму добавлю поле и соответствующий атрибут в документе для кол-ва поевших в завтрак и обед.
3. Версия учебная 8.3. Про режим запуска пока затрудняюсь ответить. И клиентская, серверная часть и БД все на локальном диске. Если вопрос был об этом.
1.Какие-нибудь наработки есть уже? Интересно посмотреть. Действительно интересно.
Даже если всё неправильно, это даст другую полезную информацию
2.Мясо с маслом - это хорошо, но ведь могут быть другие ингредиенты?
3.Учитывать ли % потерь при готовке?
1) ДА - я могу выгрузить конфигурацию, что сделал - но там пока мало совсем. Плюс я пока пишу это для одного корпуса школы, а их два. В каждом корпусе есть своё меню - названия одинаковые, а вот граммовка разная.
2) ДА - других ингридиентов много, но все они считаются довольно быстро. Основная проблема у жены - она тратит на это час-полтора на подсчёт именно мяса и масла. Эти два ингредиента входят во всякие блюда, граммовка которых как раз должна браться из соответствующих справочников. А иногда, когда блюда нестандартной граммовки, нужно будет расчитать массу по пропорции, но это уже потом. Мне бы сначала обычные вещи огорить. Явпринципе дошёл до главы "Прикладные типы" - и там потихоньку начинает проясняться пути как работать с БД. Но помощь не будет лишней.
3) Нет потери при готовке не учитываются. Это грубо говоря, как в Access - есть запись в таблице - в ней поля записи: "НАзвание блюда", "Вес мяса", "Вес масла" - для каждого блюда в каждом корпусе соответствие однозначное. И вроде программа с точки зрения программирования не сложная - на Си++ я бы её уже написал, но я изучать начал "1С" и пока "сражаюсь" с банальным вводом-выводом.
Да, мало, но общую тенденцию можно увидеть.
Значит комментарии:
- Если есть масло и мясо, значит надо сразу предполагать, что будет неизвестное количество других ингредиентов. Поэтому нельзя для них выделять отдельные поля, а надо запихать их в табличную часть.
- Если граммовка различается для разных корпусов, и можно предположить, что она будет различаться по времени (например, директор может сказать, что первому корпусу с ноября по апрель больше класть крупы, потом вернуть обратно), то логично её организовать в виде документа. Назовём его ТТК (Технико-технологическая карта), и искать на момент расчёта последнюю, но не позднее этого момента, чтобы можно было заранее предусматривать изменения на будущее.
- ТТК составляется обязательно с указанием выхода готового продукта в граммах. Некоторые продукты во время готовки сильно теряют в весе (вода), а некоторые вообще потом изымаются (кости для бульона).
- Сразу нужно предусмотреть, что в состав блюда могут входить уже составные элементы (Заготовки), тогда при расчете они тоже должны разбираться, причём с учётом выхода блюда, выхода заготовки и количества заготовки в блюде. Выходит, рекурсия.
Теперь по наваяному:
Справочники.
- Корпус. Ну, тут понятно.
- Номенклатура. В нём и блюда, и заготовки, и ингредиенты. Справочник иерархический, так что одно от третьего отделить можно. Есть реквизит ЭтоБлюдо. Ставится вручную, или при проведении евоного ТТК с указанием количества порций в выходе. В документ Меню попадают только блюда с этим признаком.
Документы.
- ТТК.
Дата. С какого момента начинает действовать. И до момента следующей ТТК. ТТК можно задавать заранее, передним числом.
Корпус. Можно не указывать. Тогда действует на все корпуса.
Номенклатура. Какое собсно блюдо или заготовку делаем.
Выход. Обязательно. Масса готового блюда из всех указанных ингредиентов.
Порций. Только для блюд. Не для заготовок. На сколько порций делится указанный выход.
- Меню.
По реквизитам понятно. Считает общую граммовку на указанное количество порций всех указанных блюд. Результат не хранит, т.к. к следующему расчету граммовки могут измениться.
Всё проверил. Граммовки рассчитал вручную, вроде совпадает.
Порядок действий: Заводим ингредиенты, заготовки, блюда. Заводим ТТК для заготовок и блюд с учётом даты документа. Заводим меню по аналогии. Жмём кнопку Рассчитать. Поминаем меня незлым тихим словом.
Предупреждаю. Оптимизацию кода и запросов не делал. Есть смертные грехи вроде запроса в цикле. На взаимовложенность заготовок не проверяю (если заготовка А вложена в заготовку Б, а та в заготовку А, то зациклится). Но работает, и уже надоело возиться.
Спасибо огромное ))
Не отвечал долговато, потому как для меня пока сложно всё это воспринимать. Вы конечно сделали сверх меры.
Но как я уже сказал - для меня цель сделать самому и разобраться - сама программа уже дело второе.
Я по своему самоучителю только-только дошёл до темы "события". НЕмного там упоминается как вообще обращаться к СУБД.
Повторюсь - вы проделали огромную работу, не могли бы вы сказать в общих чертах какое событие происходит в приложении, когда мы вызываем форму документа. Как и где его отследить. Т.е. мне нужно:
1) Получить из справочника значение грамм мяса и масла именно того блюда, который выбрал пользователь.
2) Установить это значение в поле формы документа. Т.е. просто сделать вывод значения в соответствующее поле, после выбора соседнего(основного поля).
Вот - всего лишь что я хотел понять. Просто пока я до этого дойду в книге - много времени пройдёт. Мне даже не нужен конкретный код - просто скажите - то происходит событие такое-то. Его надо отлавливать таким-то методом, такого-то объекта. Спасибо большое за ваш труд )
Как связать реквизит табличной части (справочник "Договоры") с
реквизитом шапки (справочник "Контрагенты"), чтобы после выбора
контрагента оставались только его договоры.
закладка Дополнительно "Связан с" укзываешь реквизит(справочник "контрагенты")
Читают тему:
Мероприятия
- Где купить СОФТ
- Вакансии фирм-партнеров "1С"
- Центры Сертифицированного Обучения
- Интернет курсы обучения "1С"
- Самоучители
- Учебный центр № 1
- Учебный центр № 3
- Сертификация по "1С:Профессионал"
- Организация обучения под заказ
- Книги по 1С:Предприятию
При использовании материалов активная прямая гиперссылка на перепечатанный материал обязательна.
Редакция БУХ.1С не несет ответственности за мнения и информацию, опубликованную в комментариях к материалам.
Редакция уважает мнение авторов, но не всегда разделяет его.
Дизайн сайта
Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу, а также дать вам возможность делиться информацией в социальных сетях. Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.
Читайте также: