helpf.pro
Регистрация

v8: Движения

ulka5659
12.10.2015 08:06Прочитано: 3179

Доброго дня. Вопрос такой.

Есть форма на которой есть галочка необходимо создать движение в регистре (проверить есть ли галочка и если "да", то в движениях записать состояние "Неисправен"). В обработке проведения уже есть движения, надо туда добавить код обработки проведения. Как?

Код 1C v 8.х
 Процедура ОбработкаПроведения(Отказ, Режим)
Движения.СведенияКартриджа.Записывать = Истина;
Движения.СведенияПринтера.Записывать = Истина;

// Регистр СведенияКартриджа

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

Если ЗначениеЗаполнено(УстанавливаемыйКартридж) Тогда // Есть что ставить в принтер
Движение = Движения.СведенияКартриджа.Добавить();
Движение.Период = Дата;
Движение.Картридж = УстанавливаемыйКартридж;
Движение.Место = Принтер;
Движение.Статус = СтатусКартриджаВПринтере;

ДвижениеПринтера=Движения.СведенияПринтера.Добавить();
ДвижениеПринтера.Период = Дата;
ДвижениеПринтера.Принтер = Принтер;
ДвижениеПринтера.Картридж = УстанавливаемыйКартридж;
ДвижениеПринтера.Статус = Перечисления.СтатусыПринтера.СКартриджем;
Иначе
ДвижениеПринтера=Движения.СведенияПринтера.Добавить();
ДвижениеПринтера.Период = Дата;
ДвижениеПринтера.Принтер = Принтер;
ДвижениеПринтера.Картридж = Справочники.Картриджи.ПустаяСсылка();
ДвижениеПринтера.Статус = Перечисления.СтатусыПринтера.БезКартриджа;

КонецЕсли;

    Если ЭтаФорма.ЭлементыФормы.Неисправен = Истина Тогда //-------------- это конечно не верно
Движения.СведенияКартриджа.Записывать = Истина;
Движение = Движения.СведенияКартриджа.Добавить();
        Движение.Статус = Перечисления.СтатусыКартриджа.Неисправен;
КонецЕсли;


КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
IBReiter
12.10.2015 09:04Ответ № 1

В модуле формы нужно ПередЗаписью в структуру ДополнительныеСвойства.Вставить("Состояние", Состояние)

Потом в обработке проведения анализировать ДополнительныеСвойства, если свойство состояние есть у структуры, тогда в зависимости от того, какое значение это свойство имеет, присвоить Движение.состояние нужное значение

Эту проверку поместите в ветку Если ЗначениеЗаполнено(СменяемыйКартридж) Тогда // Есть что снимать из принтера или Если ЗначениеЗаполнено(СменяемыйКартридж), это уже поразмыслите, как вам нужно, , т.к. у вас там движение по регистру СведенияКатриджа формируется

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

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

И еще, в модуле объекта форма недоступна

ulka5659
12.10.2015 12:00Ответ № 2

Вот так? я вас правильно понимаю?

Код 1C v 8.х
 Процедура ОбработкаПроведения(Отказ, Режим)
Движения.СведенияКартриджа.Записывать = Истина;
Движения.СведенияПринтера.Записывать = Истина;

// Регистр СведенияКартриджа

Если ЗначениеЗаполнено(СменяемыйКартридж) Тогда // Есть что снимать из принтера
Движение = Движения.СведенияКартриджа.Добавить();
Движение.Период = Дата;
Движение.Картридж = СменяемыйКартридж;
Движение.Место = МестоКартриджаКоробкаДляПустых;
Движение.Статус = СтатусКартриджаПустойНаСкладе;

Если ДополнительныеСвойства=неисправен Тогда
Движение.Место = МестоКартриджаКоробкаДляНеисправных;
Движение.Статус = СтатусКартриджаНеисправен;
КонецЕсли;

КонецЕсли;


ulka5659
12.10.2015 12:00Ответ № 3

И в ПередЗаписью

Код 1C v 8.х
 Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ДополнительныеСвойства.Вставить("Неисправен", Неисправен)
КонецПроцедуры


ulka5659
12.10.2015 12:02Ответ № 4

Но ведь на форме есть галочка "Неисправен" нужно еще же дописать что ее значение положить в ДополнительныеСвойства?

ulka5659
12.10.2015 12:04Ответ № 5

ulka5659
12.10.2015 12:08Ответ № 6

И еще пробую проверить отладчиком в обработке проведения ставлю точку на 

Если ДополнительныеСвойства = Неисправен Тогда

показывает что Неисправен - истна....

почему тогда условие не выпоняется

IBReiter
12.10.2015 12:09Ответ № 7

ПередЗаписью в модуле формы, а не в модуле объекта нужно доп свойство записать

ulka5659
12.10.2015 12:15Ответ № 8

Добавить так в ПередЗаписью? Но не срабатывает условие все равно(

Код 1C v 8.х
 Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Неисправен = ЭлементыФормы.Неисправен;
ДополнительныеСвойства.Вставить("Неисправен", Неисправен)
КонецПроцедуры


ulka5659
12.10.2015 12:18Ответ № 9

Соврала теперь "Неисправен" ложь. Надо отладчиком вылавливать?

IBReiter
12.10.2015 12:21Ответ № 10

Условие должно быть Дополнительныесвойства.Неисправен - это же структура

ulka5659
12.10.2015 12:54Ответ № 11

ПередЗаписью я в модуле формы создаю. Исправила, но до проверки дело не доходит, точку ставлю не срабатывает

Код 1C v 8.х
 Процедура ОбработкаПроведения(Отказ, Режим)
Движения.СведенияКартриджа.Записывать = Истина;
Движения.СведенияПринтера.Записывать = Истина;

// Регистр СведенияКартриджа

Если ЗначениеЗаполнено(СменяемыйКартридж) Тогда
Движение = Движения.СведенияКартриджа.Добавить();
Если ДополнительныеСвойства.Неисправен Тогда
    Движение.Место = МестоКартриджаКоробкаДляНеисправных;
    Движение.Статус = СтатусКартриджаНеисправен
   Иначе  
    // Есть что снимать из принтера
Движение.Период = Дата;
Движение.Картридж = СменяемыйКартридж;
Движение.Место = МестоКартриджаКоробкаДляПустых;
Движение.Статус = СтатусКартриджаПустойНаСкладе;
КонецЕсли;
    КонецЕсли;


IBReiter
12.10.2015 13:21Ответ № 12

Элемент попадает в дополнительные свойства? Точку пораньше поставьте, в начале обр проведения

ulka5659
13.10.2015 09:29Ответ № 13

Сделала немного по другому

В модуле обычного приложения доб глобальные переменные

Перем СтатусКартриджаСписанный Экспорт;

и

Перем МестоКартриджаКоробкаДляНеисправных Экспорт;

Которые объявляются в процедуре "ПриНачалеРаботыСистемы"

СтатусКартриджаНеисправен= Перечисления.СтатусыКартриджа.Неисправен;

и

МестоКартриджаКоробкаДляНеисправных = Справочники.Принтеры.КоробкаДляНеисправных;

В Обработке проведения, след код, где "Неисправен" - Данные формы -булево

Код 1C v 8.х
 Если ЗначениеЗаполнено(СменяемыйКартридж) Тогда
Движение = Движения.СведенияКартриджа.Добавить();
// Если сменяемый картридж неисправен
Если Неисправен Тогда
Движение.Период = Дата;
   Движение.Картридж = СменяемыйКартридж;
Движение.Место = МестоКартриджаКоробкаДляНеисправных;
   Движение.Статус = СтатусКартриджаНеисправен
Иначе .....  


IBReiter
13.10.2015 09:39Ответ № 14

Вы же и так можете к этим данным обратиться, зачем глобальные переменные?

В итоге получилось?

ulka5659
13.10.2015 11:32Ответ № 15

Да тут до меня разрабатывалось, пока разобралась. В итоге да, получилось. Спасибо.

ulka5659
13.10.2015 13:15Ответ № 16
Вопрос закрыт!
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.