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

Статус в 1С

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

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

wtfgod

Цитата: Besart от 19 апр 2013, 20:33
попробуй перечитать данные формы ДвижениеПоезда
В смысле "перечитать"?

Besart

кнопка на форме ДвижениеПоезда Все действия ->перечитать, статус доджен измениться, просто записанные данные не отображаются так как они считываются в момент открытия формы с сервера, а так как форма уже открыта она не знает что данные изменились
Добавлено: 19 апр 2013, 21:00


Цитата: wtfgod от 19 апр 2013, 18:44Можно ли реализовать алгоритм, чтобы документы Отправление, Прибытие, ДвижениеПоезда сравнивались по номерам, чтобы знать кому что относится? И при проведении документов Отправение, Прибытие менялся статус
можно немного по другому, создать в документах ОтправлениеПоезда и Прибытие реквизит с типом ДвижениеПоезда и выбирать конкретный документ при создании ОтправлениеПоезда и Прибытие соответственно, при записи документа менять статус в соответсвующем документе ДвижениеПоезда

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


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

wtfgod

Цитироватькнопка на форме ДвижениеПоезда Все действия ->перечитать, статус доджен измениться, просто записанные данные не отображаются так как они считываются в момент открытия формы с сервера, а так как форма уже открыта она не знает что данные изменились

Не помогло. Удалил все документы. По новой создал документ ДвижениеПоезда со статусом Погрузка. Создал документ Отправление, провел, но в ДвиженииПоезда статус на В пути не поменялся(

Цитироватьа ваш поезд как записывается? номером, можно запросом выбрать документ ДвижениеПоезда с тем же номером что и в текущем документе Отправление или Прибытие, и менять статус у документа ДвижениеПоезда
Просто Поезд №1, Поезд №2

Besart

Вставьте этот код в Процедуру ОбработкаПрведения в модуле объекта документа Отправление и Прибытие, при проведении этих документов в случае если поезд указан неправильно будет выскакивать ошибка "Такого поезда не существует" и документ не будет проводиться, еще для реквизита Поезд во всех документах - ДвижениеПоезда Отправление Прибытие необходимо выставить Проверка заполнения -> Выдавать ошибкуПроцедура ОбработкаПроведения(Отказ, РежимПроведения)
   
        Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ДвижениеПоезда.Ссылка КАК Ссылка
      |      ИЗ
| Документ.Расходная КАК Расходная
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДвижениеПоезда КАК ДвижениеПоезда
| ПО Отправление.Поезд = ДвижениеПоезда.Поезд
//Для документа Прибытие замените строку "ПО Отправление.Поезд = ДвижениеПоезда.Поезд" на "ПО Прибытие.Поезд = ДвижениеПоезда.Поезд
|ГДЕ
| Расходная.Ссылка = &Ссылка"
                |УПОРЯДОЧИТЬ ПО
| ДвижениеПоезда.Дата УБЫВ";
//Упорядочит по дате и выбрать первые сделано дял того чтобы выибрался последний документ ДвижениеПоезда в случае совпадения номеров поездов

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

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Попытка
Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Объект.Статус= Перечисления.СтатусПоезда.ВПути;
//Для документа Прибытие замените строку "Объект.Статус= Перечисления.СтатусПоезда.ВПути;" на "Объект.Статус= Перечисления.СтатусПоезда.Приыбыл;"
Объект.Записать();
Исключение
Сообщить("Такого поезда не существует");
                Отказ = Истина;
КонецПопытки;
КонецЦикла;

wtfgod

 В реквизитах проверку заполнения выставил.
Код вставил, но не пойму, куда КонецПроцедуры вписывать. Ошибку выдает

Besart

Цитата: wtfgod от 20 апр 2013, 12:16В реквизитах проверку заполнения выставил.
Код вставил, но не пойму, куда КонецПроцедуры вписывать. Ошибку выдает
да вам похоже нужно еще грызть и грызть гранит науки, если вы элементарных вещей не знаете, любая процедура должна заканчиваться словом КонецПроцедуры, то есть в самомо конце кода пишите эту строку. И из  скрина не видно в какой документ вы вставили код, должно быть в модуле объекта документа Отправление.
Если очень нужно, то скидывайте базу в яндекс-диск, я сделаю и отправлю обратно


wtfgod

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

Так все равно не работает, в том-то и дело

Цитировать{Документ.Отправление.МодульОбъекта(15,17)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
                <<?>>|УПОРЯДОЧИТЬ ПО (Проверка: Сервер)
{Документ.Отправление.МодульОбъекта(19,41)}: Ошибка в выражении
        РезультатЗапроса = Запрос.Выполнить(<<?>>); (Проверка: Сервер)
{Документ.Отправление.МодульОбъекта(33,16)}: Обнаружено логическое завершение исходного текста модуля
    КонецЦикла;<<?>> (Проверка: Сервер)

Besart

см

Теги:

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

Рейтинг@Mail.ru

Поиск