![]() |
![]() |
![]() |
|
Как программно поменять реквизит формы? | ☑ | ||
---|---|---|---|---|
0
Pahom
23.06.25
✎
08:56
|
1С:Розница 2.3. Справочник "Информационные карты", в форме элемента есть реквизит ФлагКодаКарты (булево). Пока он не проставлен, невозможно заполнить реквизит КодКарты ни руками, ни программно. А мне как раз надо заполнить КодКарты для нескольких тысяч штук. Есть ли возможность программно проставить этот самый ФлагКодаКарты? Насколько понимаю, он нигде не хранится, то есть иначе как на форме (то есть ручками) этого не сделать?
|
|||
1
maxab72
23.06.25
✎
08:58
|
(0) так не открывайте форму, и заполните свои коды программно.
|
|||
3
Мультук
гуру
23.06.25
✎
09:10
|
>>Пока он не проставлен, невозможно заполнить реквизит >>КодКарты ни руками, ни программно.
Показывайте ваш программный код |
|||
4
Pahom
23.06.25
✎
09:42
|
(3)
&НаСервере Процедура СделатьНаСервере() Выборка = Справочники.ИнформационныеКарты.Выбрать(); Пока Выборка.Следующий() Цикл Если НЕ Выборка.ЭтоГруппа И Выборка.КодКарты = "" Тогда Карта = Выборка.ПолучитьОбъект(); Карта.КодКарты = Карта.Наименование; Карта.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Сделать(Команда) СделатьНаСервере(); КонецПроцедуры |
|||
5
Гипервизор
23.06.25
✎
09:45
|
(4) Какой тип имеет "Выборка" и какие типы имеют метод ПолучитьОбъект()?
|
|||
6
Pahom
23.06.25
✎
09:52
|
(5) СправочникВыборка, СправочникОбъект или Неопределено. Хотя не понял сути вопроса.
|
|||
7
Гипервизор
23.06.25
✎
09:57
|
(6) 1. У типа СправочникОбъект нет метода ПолучитьОбъект(), что как бы должно быть понятно из наименования типа.
2. Если метод Включить() есть у типа Мозги, а у типа Клей такого метода нет, имеет ли смысл применять этот метод к типу Клей? |
|||
8
СвинТуз
23.06.25
✎
09:57
|
Карта.КодКарты = Карта.Наименование;
Карта.ФлагКодаКарты = Истина; Карта.Записать(); |
|||
9
Волшебник
23.06.25
✎
09:58
|
(4) Программный код выглядит вполне нормально. В чём проблема-то?
|
|||
10
Гипервизор
23.06.25
✎
10:01
|
(8) ФлагКодаКарты якобы реквизит формы. Но это не точно.
|
|||
11
Fedor-1971
23.06.25
✎
10:04
|
(4) Открываешь дерево конфигурации и смотришь у Справочники.ИнформационныеКарты есть реквизит КодКарты?
Если есть, то твой код рабочий. Только непонятно, зачем в код карты пихать её же наименование, таки, это, скорее, признак - дисконтная или какая-то ещё Если такого реквизита нет - берём отладчик и выясняем где и как заполняется реквизит формы КодКарты или ФлагКодаКарты - так-то непонятно что нужно (вполне возможно, что в ПриСозданииНаСервере как-то преобразуется, например, наименование - нам не видно) |
|||
12
СвинТуз
23.06.25
✎
10:06
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ИнформационныеКарты.Ссылка КАК Ссылка, | ИнформационныеКарты.Наименование КАК Наименование |ИЗ | Справочник.ИнформационныеКартыКАК ИнформационныеКарты |ГДЕ | НЕ ИнформационныеКарты.ЭтоГруппа | И ИнформационныеКарты.КодКарты = """""; Результат = Запрос.Выполнить(); Выборка = Результа.Выбрать(); Пока Выборка.Следующий() Цикл Карта= Выборка.Ссылка.ПолучитьОбъект(); Карта.КодКарты = Выборка.Наименование; Карта.ФлагКодаКарты = Истина; Карта.Записать(); КонецЦикла; |
|||
13
Волшебник
23.06.25
✎
10:07
|
(12) ошибка в запросе
|
|||
14
СвинТуз
23.06.25
✎
10:07
|
А так конечно надо вытянуть из конфигуратора по как работает
ФлагКарты. |
|||
15
СвинТуз
23.06.25
✎
10:08
|
(13)
Сам пусть пробелы вставляет |
|||
16
Мультук
гуру
23.06.25
✎
11:06
|
(0)
ВидКарты == Перечисления.ВидыИнформационныхКарт.Штриховая Да ведь, да ? Если да, то идём в модуль этого справочника, затем долго и печально (можно быстро и весело) смотрим в процедуру Процедура ПередЗаписью(Отказ) |
|||
17
Pahom
23.06.25
✎
11:32
|
(7) Очень смешно. Вот и примените. В строке Карта = Выборка.ПолучитьОбъект(); я получаю именно СправочникОбъект.
Применят клея и туда же - пальцы гнуть. |
|||
18
Pahom
23.06.25
✎
11:33
|
(11) > смотришь у Справочники.ИнформационныеКарты есть реквизит КодКарты? Если есть, то твой код рабочий.
Конечно есть. Я ж не гипервизор какой. > Только непонятно, зачем в код карты пихать её же наименование, таки, это, скорее, признак - дисконтная или какая-то ещё КодКарты - это просто строка, и мне надо поместить туда наименование (оно по сути номер карты). |
|||
19
Pahom
23.06.25
✎
11:26
|
(16) Спасибо, хоть один внятный ответ. Хотя и не на заданный вопрос.
|
|||
20
Гипервизор
23.06.25
✎
11:30
|
(17) Мда, вот что бывает, если невнимательно смотреть условия. Справедливо урезонили, был неправ. 👍
И что, вот на этой строке "Карта.Записать()" у вас "Карта.КодКарты" заполнен, а после записи уже нет? |
|||
21
Мультук
гуру
23.06.25
✎
11:35
|
(20)
Вероятно, у него вот так. У меня нет Розница 2.3, только древний CF-ник, но думаю "ничего не поменялось" Процедура ПередЗаписью(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если ВидКарты = Перечисления.ВидыИнформационныхКарт.Штриховая Тогда КодКарты = ""; КонецЕсли; //skipped КонецПроцедуры |
|||
22
craxx
23.06.25
✎
11:38
|
(0) в режиме загрузки записывай.
Карта.ОбменДанным.Загрузка = ИСТИНА; Карта.Записать(); |
|||
23
Волшебник
23.06.25
✎
11:46
|
(22) а после перезаписи сработает (21) и КодКарты превратится в тыкву
|
|||
24
Pahom
23.06.25
✎
11:56
|
(21) Именно так. Эту хрень я победю, но вернемся к изначальному вопросу - можно ли программно поменять реквизит формы, если он нигде не содержится? Или в каждом конкретном случае надо ковырять?
Кстати, если заполнить ручками, то всё сохраняется, вопреки Если ВидКарты = Перечисления.ВидыИнформационныхКарт.Штриховая Тогда КодКарты = ""; КонецЕсли; |
|||
25
Волшебник
23.06.25
✎
11:58
|
(24) Если реквизит формы нигде не хранится, то менять его не надо.
|
|||
26
vicof
23.06.25
✎
12:07
|
Радченко почитать уже советовали?)
|
|||
27
DrZombi
гуру
23.06.25
✎
12:16
|
(0) Странные у вас проблемы. Но предлагаю вам программно добавить любой интерфейс, через расширение и править то, что вам нужно и как нужно :)
|
|||
28
Мультук
гуру
23.06.25
✎
12:29
|
(24)
Всё можно. Нужно взять себя в руки, открыть модуль формы, нажать CTRL+F ввести ФлагКодКарты и посмотреть -- а зачем он (этот реквизит) нужен -- и почему всё именно так, и никак иначе Можно смотреть глазами, можно отладчиком. Вы хотите поломать типовые алгоритмы -- пожалуйста ломайте. >>можно ли программно поменять реквизит формы Процедура ЗаполнитьФлагиПоВидуКартыСервер() ФлагКодКарты = (Объект.ВидКарты = Перечисления.ВидыИнформационныхКарт.Магнитная) ИЛИ (Объект.ВидКарты = Перечисления.ВидыИнформационныхКарт.Смешанная); ФлагШтрихКод = (Объект.ВидКарты = Перечисления.ВидыИнформационныхКарт.Штриховая) ИЛИ (Объект.ВидКарты = Перечисления.ВидыИнформационныхКарт.Смешанная); ФлагКодКарты = Истина; //Да будет так. Pahom (c) КонецПроцедуры |
|||
29
Pahom
24.06.25
✎
01:12
|
(28) До такого я бы и сам додумался. Имелось в виду, не прибегая к изменениям конфы или расширениям. Может кто-то знает сильное колдунство, которого не знаю я.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |