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

Ввод на основании документа "док1" другого документа.

Автор GalaGajka, 22 мая 2010, 13:53

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

GalaGajka

Ребят, помогите новичку пожалуйста. задача - "на основании одного конкретного документа 1 можно создать только один документ 2. При попытке второй раз использовать в качестве основания документ 1 должно выдаваться сообщение, что документ уже использовался. Сделать сказали без использования флажков, следовательно возник вопрос. В каком атрибуте д1 хранится инфа о его использовании в кач-ве основания или может быть о наличии документа, введенного на основании д1? :trhregerhg:

Slin

Пусть Д1 - документ-основание, а Д2 - документ, вводимый на основании
у Д2 создаем реквизит "Основание" типа ДокументСсылка.Д1 - в нем будет храниться ссылка на документ-основание
При вводе на основании в модуле объекта Д2 вызывается обработчик "ОбработкаЗаполнения" с параметром "Основание", которые и есть ссылка на документ-основание.

// ищем документы, введенные на основании.

Запрос = Новый Запрос;

Запрос.Текст =
"ВЫБРАТЬ
| Д2.Ссылка
|ИЗ
| Документ.Д2 КАК Д2
|ГДЕ
| Д2.Основание = &Основание";

Запрос.УстановитьПараметр("Основание", Основание);

Если Не Запрос.Выполнить().Пустой() Тогда
   Предупреждение("Документ уже вводился на основании");
   Возврат;
КонецЕсли;

// если нет таких документов, присваиваем реквизиту значение.


ЭтотОбъект.Основание = Основание;

// заполняем остальные реквизиты


упс... написал для 8  :nhsrm:

GalaGajka

Привет, спасибо тебе) я только не поняла. у меня приобретениеОс и ВводВЭксплуатациюОС. там где "д2.Ссылка" будет "ввод.приобретение"? а обработчик "ОбработкаЗаполнения" будет "Процедура "ОбработкаЗаполнения(Основание)"? а Документ.Д2 будет "Документ.Ввод"? а ЭтотОбъект - это так и есть "ЭтотОбъект"? а у ВводВЭксплуатацию реквизит в шапке будет? Извини что вопросами достала :nhsrm:

GalaGajka


Slin

У семерки принцип будет такой же, но конкретный код конечно другим
К сожалению, я не настолько знаю семерку, чтобы расписать тебе

Tatitutu

Используй это:
ВыбратьПодчиненныеДокументы(<?>,,)
Синтаксис:
ВыбратьПодчиненныеДокументы(<Дата1>,<Дата2>,<Докум>)
Назначение:
Открыть выборку документов, подчиненных заданному, в интервале дат.
Возвращает:
1 - если действие выполнено и в выборке есть хотя бы один документ;
0 - если действие не выполнено или в выборке нет ни одного документа.
Параметры:
<Дата1> - дата, документ или позиция начала выборки документов. Если данный параметр опущен, то выборка начинается с самого первого существующего в системе документа.
<Дата2> - дата, документ или позиция конца выборки документов. Если данный параметр опущен, то выборка заканчивается самым последним существующим в системе документом.
<Докум> - документ, подчиненные которому будут включаться в выборку.
Замечание:
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.

т.е. выбираешь документ и проверяешь, если у него уже есть подчиненные документы - тогда вводить на основание его уже нельзя иначе вводим новый докумет. Как то так.

*  MAGAZKA - лучшая программа для розничного магазина (с) *

Теги:

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

Рейтинг@Mail.ru

Поиск