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

Статус в 1С

Автор wtfgod, 19 апр 2013, 15:01

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

wtfgod

Добрый день,товарищи!

Есть документ ДвижениеПоезда, где фиксируется номер поезда,груз и ,собственно, сам статус. Но статус приходится менять вручную.
Нужно ,чтобы статус менялся автоматически при проведении документов.
Допустим провели документ ОтправлениеПоезда, где указан номер поезда, груз, количество и т.д.
Автоматически создается документ ДвижениеПоезда, где статус поезда В пути.
Поезд приехал на станцию. Проводится документ Прибытие. В Документе ДвижениеПоезда статус меняется с В пути на Прибыл

Создал Регистр сведений - СостояниеПоезда.
Периодический(по позиции регистратора),подчиненный регистратору
Данные: Измерение - Поезд (СправочникСсылка.Поезда), Ресурсы - Состояние (ПеречеслениеСсылка.СтатусПоезда)
Регистраторы: Документы - Отправление поезда, Прибытие поезда.

Что делать дальше,чтобы статус стал меняться автоматически?

Besart

воспользуйтесь вводом на основании, то есть на основании документа Движение поезда создавайте ОтправлениеПоезда и Прибытие, в модулях объекта этих докумнетов в процедуре обработки заполнения Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ДвижениеПоезда") Тогда
Данные = ДанныеЗаполнения.Получитьобъект();
Данные.Статус = ВПути;// для документа ОтправлениеПоезда и = Прибыл для Прибытие
Данные.Записать();
....................................
........

wtfgod

Besart, спасибо за помощь!
Написал в Модуле объекта Документа Отправление:
Процедура ОбработкаЗаполнения (ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ДвижениеПоезда") Тогда
        Данные = ДанныеЗаполнения.Получитьобъект();
        Данные.Статус = ВПути;// для документа ОтправлениеПоезда и = Прибыл для Прибытие
        Данные.Записать();
КонецЕсли;
КонецПроцедуры;


Выводит ошибку
Цитировать{Документ.Отправление.МодульОбъекта(4,25)}: Переменная не определена (ВПути)
        Данные.Статус = <<?>>ВПути;// для документа ОтправлениеПоезда и = Прибыл для Прибытие (Проверка: Сервер)

Почему не видит переменную? В Перечислениях задано же.

Я новичок в 1С, если что:nhsrm:

Besart

в документах ОтправлениеПоезда и Прибытие    Ввод на основании -> Вводится на сосновании добавьте документДвижениеПоезда, затем на той же закладке заполните Конструктором ввода на основании процедуру ОбработкаЗаполнения, по завершении Конструктора ввода на основании у вас откроется процедура ОбработкаЗаполнения в эту процедуру вставьте код Процедура ОбработкаЗаполнения (ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ДвижениеПоезда") Тогда
//вставьте вот это начиная отсюда
        Данные = ДанныеЗаполнения.Получитьобъект();
        Данные.Статус = ВПути;// для документа ОтправлениеПоезда и = Прибыл для Прибытие
        Данные.Записать();
// до сюда, остальное не трогайте
    КонецЕсли;
КонецПроцедуры;
в документе ДвижениеПоезда появится кнопка Создать на основании, через нее и создавайте документы ОтправлениеПоезда и Прибытие 

wtfgod

Что-то не работает((
Прикрепляю скриншоты. Что как делал.

В Конструкторе ввода на основании нажал Заполнить Выражения.
Потом в сформировавшийся код вставил Ваш

Besart

а у вас какие статусы предусмотрены и каким образом они выбираются? скрин формы Движение поезда покажите

wtfgod

Вот скриншот формы ДвижениеПоезда.
Там статусы поездов. Они выставляются вручную.
А хотелось бы,чтобы статус выставлялся автоматически, при проведении нужного документа.
Если это возможно,конечно)

Besart

какой тип у реквизита статус? если у вас статус хранится в перечислениях тогда Данные.Статус = ПредопределенноеЗначение("Перечисление.Статус.ВПути");
или Данные.Статус = Перечисления.Статус.ВПути(

wtfgod

ПеречислениеСсылка.СтатусПоезда

Статусы делал в объекте  Перечисления
Добавлено: 19 апр 2013, 19:31


Код запустился, но статус не меняется(

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ДвижениеПоезда") Тогда
// Заполнение шапки
Данные = ДанныеЗаполнения.Получитьобъект();
Данные.Статус = ПредопределенноеЗначение("Перечисление.Статус.ВПути");

             Данные.Записать();
Груз = ДанныеЗаполнения.Груз;
Поезд = ДанныеЗаполнения.Поезд;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры


Можно ли реализовать алгоритм, чтобы документы Отправление, Прибытие, ДвижениеПоезда сравнивались по номерам, чтобы знать кому что относится? И при проведении документов Отправение, Прибытие менялся статус


Добавлено: 19 апр 2013, 19:40


Код запустился, но статус не меняется(

Код: [Выделить]

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ДвижениеПоезда") Тогда
        // Заполнение шапки
        Данные = ДанныеЗаполнения.Получитьобъект();
        Данные.Статус = ПредопределенноеЗначение("Перечисление.Статус.ВПути");

             Данные.Записать();
        Груз = ДанныеЗаполнения.Груз;
        Поезд = ДанныеЗаполнения.Поезд;
    КонецЕсли;
    //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры


Можно ли реализовать алгоритм, чтобы документы Отправление, Прибытие, ДвижениеПоезда сравнивались по номерам, чтобы знать кому что относится? И при проведении документов Отправение, Прибытие менялся статус

Besart

попробуй перечитать данные формы ДвижениеПоезда

Теги:

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

Рейтинг@Mail.ru

Поиск