Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/131: Рейтинг темы: голосов - 131, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26

Задание условий для движений документа по регистрам

31.05.2010, 20:45. Показов 27455. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, помогите плиз!

Имеется документ с двумя реквизитами, пусть будет РЕК1 и РЕК2 оба реквизита со значением БУЛЕВО, документ имеет движения в двух регистрах (РЕГ1 и РЕГ2). Что необходимо прописать в модуле (не считая стандартной записи формирования движений по регистрам) для того чтобы приналичии значения ИСТИНА по РЕК1 документ попадал в первый регистр (РЕГ1), если по двум реквизитам значение ИСТИНА документ попадал только во второй регистр (РЕГ2). Помогите, пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2010, 20:45
Ответы с готовыми решениями:

Розница 2.2 РИБ Нет движений по регистрам для документа перемещение в подчиненном узле
Добрый день уважаемые форумчане !!! Прошу помощи у гуру ... может кто нибудь сталкивался ... РИБ Розница 2.2 информативные остатки...

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

Проведение документа «Оказание услуги» по двум регистрам
Указав стоимость материала и в файле оказание услуги и проведя его выводится странная стоимость в регистре Стоимость материалов. Подскажите...

18
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
31.05.2010, 22:56
Код ( (Unknown Language)):
Синтаксис:
Если <Логическое выражение> Тогда
// Операторы
[ИначеЕсли <Логическое выражение> Тогда]
// Операторы
[Иначе]
// Операторы
КонецЕсли;

Англоязычный синтаксис:
If <Логическое выражение> Then
// Операторы
[ElsIf <Логическое выражение> Then]
// Операторы
[Else ]
// Операторы
EndIf;

Параметры:
<Логическое выражение>
Логическое выражение.

Тогда
Операторы, следующие за Тогда выполняются, если результатом логического выражения является значение Истина.

// Операторы
Исполняемый оператор или последовательность таких операторов.

ИначеЕсли
Логическое выражение, следующее за ключевым словом ИначеЕсли, вычисляется только тогда, когда условия в Если и всех предшествующих ИначеЕсли оказались равны Ложь.
Операторы, следующие за конструкцией ИначеЕсли — Тогда, выполняются, если результат логического выражения в данном ИначеЕсли равен Истина.

Иначе
Операторы, следующие за ключевым словом Иначе, выполняются, если результаты логических выражений в конструкции Если и всех предшествующих конструкцях ИначеЕсли оказались равны Ложь.

КонецЕсли
Ключевое слово, которое завершает структуру оператора условного выполнения.

Описание:
Оператор Если управляет выполнением программы, основываясь на результате одного или более логических выражений. Оператор может содержать любое количество групп операторов, возглавляемых конструкциями ИначеЕсли — Тогда.
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
31.05.2010, 23:17
я делаю следующюу процедуру проведения


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


Понимаю что это не правильно но как задать условие для реквизита документа я не знаю. Можно было бы поля "Согласовано" и "утверждено" перенести в табличную часть документа- при таком повороте расписать отдельное движение по регистрам вроде бы не проблема. но как сделать условие именно на реквизит документа с типом БУЛЕВО, помогите плиз?
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
31.05.2010, 23:31
Код ( (Unknown Language)):
Если Согласовано Тогда
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
31.05.2010, 23:43
получается следлующая процедура

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


но опять документы попадают в оба регисра (((

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


Один вопрос только остался: то есть если в процедуре проведения указать наименование реквизита (согласовано, утверждено) прграмма сама чтоль понимает что это реквизит именно этого документа ?
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
01.06.2010, 00:07
Цитата Сообщение от Neft
Один вопрос только остался: то есть если в процедуре проведения указать наименование реквизита (согласовано, утверждено) прграмма сама чтоль понимает что это реквизит именно этого документа
Да.
Точно так же и в модуле формы.
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
01.06.2010, 07:19
Огромное спасибо! Выручили :ya_lamo:
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
01.06.2010, 11:06
Маленькое "НО", не надо проверять булевый тип на конкретное значение.



Цитата Сообщение от Neft
Если Согласовано = Истина Тогда
1) атавизм из 7.7
2) не красиво читать, закрадываются сомнения о типе переменной

unknown181538 правильно ответил вам, с точки зрения оптимальности производительности платформы.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
01.06.2010, 20:34
Цитата Сообщение от Darlock
1) атавизм из 7.7
Всегда это раздражало в 7.7. Читабельность условий ухудшается.
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
01.06.2010, 22:07
Цитата Сообщение от Darlock
Маленькое "НО", не надо проверять булевый тип на конкретное значение.
а как без проверки тогда задать условие на наличие отметки в поле?
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
01.06.2010, 22:09
В условия подставляются выражения возвращающие булево.
Если Реквизит1 Тогда
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
01.06.2010, 22:25
То есть для реквизита( поля табличной части) с типом булево не обязательно прописывать его значение (истина или ложь) - программа сама понимает что Если Рек1 Тогда // произойдет призначении истина// Иначе // это произойдет для значения ложь//

Так я понял?
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
01.06.2010, 22:35
Точно
;)
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
01.06.2010, 22:38
Цитата Сообщение от Neft
То есть для реквизита( поля табличной части) с типом булево не обязательно прописывать его значение (истина или ложь) - программа сама понимает что Если Рек1 Тогда // произойдет призначении истина// Иначе // это произойдет для значения ложь//

Так я понял?
Все верно. Также можно проверять заполненность полей других типов, с помощью соответствующих функций:

для типа "Строка" -

Код ( (Unknown Language)):
ПустаяСтрока(Строка)
для всех остальных, кроме даты и мутабельных типов -

Код ( (Unknown Language)):
ЗначениеЗаполнено(Переменная)
дата проверяется, к сожалению, так

Код ( (Unknown Language)):
Переменная = Дата(00010101)
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 26
01.06.2010, 22:38
unknown181538- спасибо за разъяснение )

Darlock- спасибо очень простые полезные вещицы- учту
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
01.06.2010, 23:24
Darlock , а разве с помощью ЗначениеЗаполнено() строка и дата не проверяются?
Или ;) ?
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
01.06.2010, 23:34
Цитата Сообщение от unknown181538
Darlock , а разве с помощью ЗначениеЗаполнено() строка и дата не проверяются?
Или ;) ?
Строку можно проверить, а вот с датой - нихт. Прикол платформы пустая дата (в клиентской части все данные это представление данных) - она же заполненая дата только 01.01.0001 и в любом случае будет истина.
0
0 / 0 / 0
Регистрация: 15.02.2008
Сообщений: 173
01.06.2010, 23:51
не в любом. если реквизит формы с присоединенным полем ввода - то ЗначениеЗаполнено() работает правильно. а вот если из базы - тогда всегда истина.
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
02.06.2010, 00:55
Цитата Сообщение от evgenyatam
не в любом. если реквизит формы с присоединенным полем ввода - то ЗначениеЗаполнено() работает правильно. а вот если из базы - тогда всегда истина.
Если окончательно вдаваться в подробности, то "ЗначениеЗаполнено" появилась только в 8.1. В 8.0 такой функции не было и каждый разработчик проверял по своему. В типовых была глобальная функция"ЗначениеНеЗаполнено()". С выходом 8.1 было информ. письмо в котором говорилось, что используйте "ЗначениеЗаполнено" т.к. работает быстрее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2010, 00:55
Помогаю со студенческими работами здесь

Ошибки при записи движений документа в регистр накопления
Здравствуйте. Есть собственная конфигурация 1С 8.3 по планированию и учету проектов. В Конфигурации есть документ...

Как получить актуальные остатки по регистру накопления в обработке провед документа с учетом его движений
Народ, подскажите как при проведении документа через ОбработкуПроведения (процедура проведения в общем модуле самописная) получить...

Задание нескольких условий
Здравствуйте! Подскажите, пожалуйста какой комбинацией клавиш или в меню можно задать такое условие, как в файле?

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

Задание граничных условий
как запрограммировать в C# x=0 T(x)=100 x=a T(x)=0 ? всё задаю в теле основной программы


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru