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

Не записывается признак у элемента справочника

Автор Yamuna, 05 июн 2019, 07:47

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

Yamuna

Добрый день Уважаемые коллеги! Конфигурация самописная. Не записывается признак булево "Активирован" у элемента справочника. У других элементов записывает,а у этого нет, хотя в отладчике показывает что все нормально и запись должна произойти. Это должно происходить во время проведения документа.

Процедура ПроверяемКоличествоКлиентов()

  КоличествоПодчиненых = КоличествоКлиентов(Рефер);

Если КоличествоПодчиненых = 5 Тогда

//Записываем в справочник "Активирован"
СсылкаОбъекта = Справочники.КабинетНачинающихКлиентов.НайтиПоНаименованию(Рефер).ПолучитьОбъект();
Если Не СсылкаОбъекта.Активирован Тогда
СсылкаОбъекта.Активирован = Истина;
Попытка
СсылкаОбъекта.Записать();
Исключение
Сообщить("Не удалось записать объект """ + СсылкаОбъекта + """!
|" + ОписаниеОшибки(), 60);
КонецПопытки;
КонецЕсли;

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

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Строка(Рефер)+" получил статус Активирован ";
Сообщение.Сообщить();

КонецЕсли;

Если Клиент.Пустая() Тогда
КоличествоЛюдей = 0;
Иначе
КоличествоЛюдей = КоличествоПодчиненых;
КонецЕсли;

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Строка(Рефер)+" имеет подчиненных - "+КоличествоЛюдей+" человек.";
Сообщение.Сообщить();

КонецПроцедуры

если кто то сможет посмотреть вот выгрузка https://yadi.sk/d/oCfPDtV82i1ZcQ

MuI_I_Ika

СсылкаОбъекта = Справочники.КабинетНачинающихКлиентов.НайтиПоНаименованию(Рефер).ПолучитьОбъект(); - не пишите так никогда, это плохой пример программирования.

Нельзя искать по наименованию в коде.

Чего в сообщении об ошибке пишет?

Z.spb

Цитата: MuI_I_Ika от 05 июн 2019, 10:10СсылкаОбъекта = Справочники.КабинетНачинающихКлиентов.НайтиПоНаименованию(Рефер).ПолучитьОбъект(); - не пишите так никогда, это плохой пример программирования.

Нельзя искать по наименованию в коде.

Почему ? :xfbnsdfb:


bsn-chita

Рефер это изначально ссылка и нет необходимости использовать НайтиПоНаименованию. Меня больше интересует как работает отмена проведения в данном случае. Если провести 5 документов то у справочника записывается Активирован(Истина), если же провести еще 6 документ и отменить любой из ранее проведенных, то этот самый Активирован сбивается.

alex0402

Цитата: bsn-chita от 05 июн 2019, 11:08Меня больше интересует как работает отмена проведения в данном случае

Я бы в данном случае использовал РС, подчиненный регистратору. И в случае отмены проведения все будет происходить автоматом.
Спасибо за Сказать спасибо

Yamuna

Цитата: MuI_I_Ika от 05 июн 2019, 10:10

Чего в сообщении об ошибке пишет?

вообще ничего не пишет просто отрабатывает и все и галочка не ставится

LexaK

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

MuI_I_Ika

Может этот элемент после этой обработки еще где-то меняется?

Yamuna

Цитата: LexaK от 05 июн 2019, 15:10
хм, ваша программа наверно даже и не заходит туда, где эта галочка ставится.
а вы отладчиком пользоваться умеете? вообще знаете что это такое?
поставьте точку остановки и запустите программу, запишите документ, пройдите свой код по шагам! Сразу все станет ясно.
ну да я же писал выше что проверяю все нормально в отладке все показывает все есть, но запись не происходит ... странно как то сам не пойму поэтому и написал там выгрузка есть можно проверить..

Добавлено: 05 июн 2019, 15:46


Цитата: MuI_I_Ika от 05 июн 2019, 15:42
Может этот элемент после этой обработки еще где-то меняется?
если бы это происходило то при отладке это было бы видно?
Добавлено: 05 июн 2019, 16:03


для того чтобы запись произошла в РС я записываю ее и потом вызываю процедуру которая проверяет эти записи это правильно так? вот код
Процедура ОбработкаПроведения(Отказ, Режим)

Записать();

Движения.УчастникиОбороты.Записывать=Истина;
Движение = Движения.УчастникиОбороты.Добавить();
Движение.Период = Дата;
Движение.Рефер = Рефер;
Движение.Клиент = Клиент;
Если Клиент.Пустая() Тогда
Движение.Количество = 0;
иначе
Движение.Количество = 1;
КонецЕсли;
Движения.УчастникиОбороты.Записать();

ПроверяемКоличествоКлиентов();
//ПроверкаАктивированных();
КонецПроцедуры

LexaK

проверил, реквизит Активирован из Ложь в Истина изменяется и сохраняется
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск