0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
|
|
1 | |
Задание условий для движений документа по регистрам31.05.2010, 20:45. Показов 25266. Ответов 18
Метки нет Все метки)
(
Друзья, помогите плиз!
Имеется документ с двумя реквизитами, пусть будет РЕК1 и РЕК2 оба реквизита со значением БУЛЕВО, документ имеет движения в двух регистрах (РЕГ1 и РЕГ2). Что необходимо прописать в модуле (не считая стандартной записи формирования движений по регистрам) для того чтобы приналичии значения ИСТИНА по РЕК1 документ попадал в первый регистр (РЕГ1), если по двум реквизитам значение ИСТИНА документ попадал только во второй регистр (РЕГ2). Помогите, пожалуйста.
0
|
|
31.05.2010, 20:45 | |
Ответы с готовыми решениями:
18
Проведение документа «Оказание услуги» по двум регистрам Ошибки при записи движений документа в регистр накопления |
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
31.05.2010, 22:56 | 2 |
Код ( (Unknown Language)):
Синтаксис: Если <Логическое выражение> Тогда // Операторы [ИначеЕсли <Логическое выражение> Тогда] // Операторы [Иначе] // Операторы КонецЕсли; Англоязычный синтаксис: If <Логическое выражение> Then // Операторы [ElsIf <Логическое выражение> Then] // Операторы [Else ] // Операторы EndIf; Параметры: <Логическое выражение> Логическое выражение. Тогда Операторы, следующие за Тогда выполняются, если результатом логического выражения является значение Истина. // Операторы Исполняемый оператор или последовательность таких операторов. ИначеЕсли Логическое выражение, следующее за ключевым словом ИначеЕсли, вычисляется только тогда, когда условия в Если и всех предшествующих ИначеЕсли оказались равны Ложь. Операторы, следующие за конструкцией ИначеЕсли — Тогда, выполняются, если результат логического выражения в данном ИначеЕсли равен Истина. Иначе Операторы, следующие за ключевым словом Иначе, выполняются, если результаты логических выражений в конструкции Если и всех предшествующих конструкцях ИначеЕсли оказались равны Ложь. КонецЕсли Ключевое слово, которое завершает структуру оператора условного выполнения. Описание: Оператор Если управляет выполнением программы, основываясь на результате одного или более логических выражений. Оператор может содержать любое количество групп операторов, возглавляемых конструкциями ИначеЕсли — Тогда.
0
|
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
|
|
31.05.2010, 23:17 | 3 |
я делаю следующюу процедуру проведения
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Для Каждого ТекСтрокаСостав Из Состав Цикл // регистр ЗаявкаСогласовано Приход Движение = Движения.ЗаявкаСогласовано.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Согласовано = Согласовано; Движение.Сумма = ТекСтрокаСостав.Сумма; КонецЦикла; Если Документы.Заявка.Согласовано = Истина Тогда Для Каждого ТекСтрокаСостав Из Состав Цикл // регистр ЗаявкаУтверждено Приход Движение = Движения.ЗаявкаУтверждено.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Утверждено = Утверждено; Движение.Сумма = ТекСтрокаСостав.Сумма; КонецЦикла; КонецЕсли //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры Понимаю что это не правильно но как задать условие для реквизита документа я не знаю. Можно было бы поля "Согласовано" и "утверждено" перенести в табличную часть документа- при таком повороте расписать отдельное движение по регистрам вроде бы не проблема. но как сделать условие именно на реквизит документа с типом БУЛЕВО, помогите плиз?
0
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
31.05.2010, 23:31 | 4 |
Код ( (Unknown Language)):
Если Согласовано Тогда
0
|
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
|
|
31.05.2010, 23:43 | 5 |
получается следлующая процедура
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Для Каждого ТекСтрокаСостав Из Состав Цикл // регистр ЗаявкаСогласовано Приход Движение = Движения.ЗаявкаСогласовано.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Согласовано = Согласовано; Движение.Сумма = ТекСтрокаСостав.Сумма; КонецЦикла; Если Согласовано = Истина Тогда Для Каждого ТекСтрокаСостав Из Состав Цикл // регистр ЗаявкаУтверждено Приход Движение = Движения.ЗаявкаУтверждено.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Утверждено = Утверждено; Движение.Сумма = ТекСтрокаСостав.Сумма; КонецЦикла; КонецЕсли //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры но опять документы попадают в оба регисра ((( Добавлено: unknown181538 громадное спасибо до перло вот правильная процедура Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Для Каждого ТекСтрокаСостав Из Состав Цикл // регистр ЗаявкаСогласовано Приход Движение = Движения.ЗаявкаСогласовано.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Согласовано = Согласовано; Движение.Сумма = ТекСтрокаСостав.Сумма; КонецЦикла; Если Согласовано = Истина Тогда Если Утверждено = Истина Тогда Для Каждого ТекСтрокаСостав Из Состав Цикл // регистр ЗаявкаУтверждено Приход Движение = Движения.ЗаявкаУтверждено.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Утверждено = Утверждено; Движение.Сумма = ТекСтрокаСостав.Сумма; КонецЦикла; КонецЕсли КонецЕсли //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры Один вопрос только остался: то есть если в процедуре проведения указать наименование реквизита (согласовано, утверждено) прграмма сама чтоль понимает что это реквизит именно этого документа ?
0
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
01.06.2010, 00:07 | 6 |
![]() Точно так же и в модуле формы.
0
|
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
|
|
01.06.2010, 07:19 | 7 |
Огромное спасибо! Выручили :ya_lamo:
0
|
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
|
|
01.06.2010, 11:06 | 8 |
Маленькое "НО", не надо проверять булевый тип на конкретное значение.
![]() 2) не красиво читать, закрадываются сомнения о типе переменной unknown181538 правильно ответил вам, с точки зрения оптимальности производительности платформы.
0
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
01.06.2010, 20:34 | 9 |
![]()
0
|
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
|
|
01.06.2010, 22:07 | 10 |
![]()
0
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
01.06.2010, 22:09 | 11 |
В условия подставляются выражения возвращающие булево.
Если Реквизит1 Тогда
0
|
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
|
|
01.06.2010, 22:25 | 12 |
То есть для реквизита( поля табличной части) с типом булево не обязательно прописывать его значение (истина или ложь) - программа сама понимает что Если Рек1 Тогда // произойдет призначении истина// Иначе // это произойдет для значения ложь//
Так я понял?
0
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
01.06.2010, 22:35 | 13 |
Точно
;)
0
|
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
|
|
01.06.2010, 22:38 | 14 |
![]() для типа "Строка" - Код ( (Unknown Language)): ПустаяСтрока(Строка) для всех остальных, кроме даты и мутабельных типов - Код ( (Unknown Language)): ЗначениеЗаполнено(Переменная) дата проверяется, к сожалению, так Код ( (Unknown Language)): Переменная = Дата(00010101)
0
|
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
|
|
01.06.2010, 22:38 | 15 |
unknown181538- спасибо за разъяснение )
Darlock- спасибо очень простые полезные вещицы- учту
0
|
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
|
|
01.06.2010, 23:24 | 16 |
Darlock , а разве с помощью ЗначениеЗаполнено() строка и дата не проверяются?
Или ;) ?
0
|
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
|
|
01.06.2010, 23:34 | 17 |
![]()
0
|
0 / 0 / 0
Регистрация: 15.02.2008
Сообщений: 173
|
|
01.06.2010, 23:51 | 18 |
не в любом. если реквизит формы с присоединенным полем ввода - то ЗначениеЗаполнено() работает правильно. а вот если из базы - тогда всегда истина.
0
|
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
|
|
02.06.2010, 00:55 | 19 |
![]()
0
|
02.06.2010, 00:55 | |
Помогаю со студенческими работами здесь
19
Как получить актуальные остатки по регистру накопления в обработке провед документа с учетом его движений
Задание граничных условий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |