Имя: Пароль:
1C
 
Переименование названия поля и изменение его расположения в очередности полей
0 NIGHTHUNTER
 
08.06.22
12:20
Есть документ. У него две табличных части (те которые касаются данной задачи). Состав полей этих табличных частей такой http://joxi.ru/12MyVQligxaZv2 .
Интересуют поля ДатаСклад. КоличествоСклад .
Их нужно переименовать в ДатаСклада -> Дата отгрузки . КоличествоСклад -> Количество отгружено .
И перенести поле Количество склад после поля Дата отгрузки .

Этот документ добавлен в расширение. Я пробую менять у этих полей синоним в основной конфигурации. Но так как он добавлен в расширение, в предприятии синоним поля не меняется.
Причем, и в основной конфигурации и в расширении, визуально на форме все названо и расположено как нужно.

Так же есть код из расширения, в котором что то формируется программно.  http://joxi.ru/D2PN6BGHw4KpBr

Я вижу 2 возможных решения. Взять переименовать поля в основной конфигурации. Не отразится ли это на существующих данных? Я же не тип меняю. И изменить их положение в конфигураторе.

Или это нужно как то менять в коде что я показываю. когда это формируется программно?  http://joxi.ru/D2PN6BGHw4KpBr

Понимания причины расхождения, и что где изменять пока нет.
1 Масянька
 
08.06.22
12:24
Кто с ним рядом - вырубите инет.
2 vicof
 
08.06.22
12:26
"Этот документ добавлен в расширение. Я пробую менять у этих полей синоним в основной конфигурации. Но так как он добавлен в расширение, в предприятии синоним поля не меняется."
Поменять в расширении не предлагать?)
3 1Сергей
 
08.06.22
12:26
тут не инет, тут надо от компа отганять ссаными тряпками
4 vicof
 
08.06.22
12:27
(3) Бесполезно
5 NIGHTHUNTER
 
08.06.22
12:34
(2) Ну или в самом расширении менять названия полей?
Дело в том что в расширении и в основной конфигурации в названиях полей и их расположении все нормально.
А в предприятии нет. И то в разных местах, то да то нет. Мне не явен пока этот момент.
Я вот и думаю что делать. Переименовать то не долго. Но обычно переименовывают синонимы. А тут получается все нужно.
Почему тогда в конфигураторе на формах правильно? А в предприятии в некоторых местах нет.
И показали вот этот код. Что это за код? В нем не нужно ничего на лету отлавливать?

Если я переименую идентификаторы полей не слетят имеющиеся данные?
6 NIGHTHUNTER
 
08.06.22
12:38
Я в расширении поменяю, а сам оригинал будет с другим именем поля? Я не могу это все уловить.

(1)(3) Задача реально сложная и не понятная. С чего такие высказывания ?

Я стал когда ее смотреть на прошлой неделе. то ничего не понял, в конфигураторе на формах все было нормально.
Видно что сами реквизиты называются так, как нужно их исправить, и их расположение не то.

Но от чего это не понял.
7 NIGHTHUNTER
 
08.06.22
12:39
(2) На эти поля завязаны отчеты. Если я их поменяю то не будет работать выборки. нужно будет менять не известно в каких ещё местах.
8 Масянька
 
08.06.22
12:42
(6) А у тебя были не сложные и понятные задачи?
9 vicof
 
08.06.22
12:43
(8) тадададам
10 NIGHTHUNTER
 
08.06.22
12:48
везде изменены только синонимы, но в моем случае, изменение синонима не помогло, я и бумаю что делать, что бы не манять имя
11 NIGHTHUNTER
 
08.06.22
12:50
в расширении синоним не изменить (
12 VoditelKobyly
 
08.06.22
13:08
Если в конфигураторе вид нормальный, а в предприятии не так и только у некоторых пользователей, то может в настройки формы в предприятии заглянуть?
13 АгентБезопасной Нацио
 
08.06.22
13:10
(8) аплодирую!
14 NIGHTHUNTER
 
08.06.22
13:36
(13) Это где, Ещё -> Изменить форму?

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

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

А форма эта только в расширении. И там все в порядке ((((. Но в предприятии опять же в одном месте нет.

то есть я вижу как вариант (13) совет.

Или же в коде, вот тут
Или это нужно как то менять в коде что я показываю. когда это формируется программно?  http://joxi.ru/D2PN6BGHw4KpBr . Отлавливать поле, пытаться задать ему нужный синоним. И расположение.
нужно ли это делать?
15 NIGHTHUNTER
 
08.06.22
13:37
(14) Не туда.

(12) Я вам писал. (14) -> (12) .
16 VoditelKobyly
 
08.06.22
13:44
в коде, который ты показал
17 VoditelKobyly
 
08.06.22
13:46
Метаданные_НарядЗадание.ТабличныеЧасти что за коллекция? Можно при ее заполнении.
18 NIGHTHUNTER
 
08.06.22
13:53
(16) Если менять через Еще, то это нужно делать у каждого пользователя? А их больше 10. И эти настройки могут слетать ((.
Получается это нужно делать программно, в отрезке кода который я показал.
Раньше я такого не знал. Что нужно менять синоним и расположение колонки в коде.
Потому что что я не поправил в конфигураторе, ничего не обновилось в предприятии.
19 VoditelKobyly
 
08.06.22
13:56
(18) Я просто сразу не понял поток твоих мыслей.
20 DrZombi
 
гуру
08.06.22
13:58
(0) >>> И перенести поле Количество склад после поля Дата отгрузки .

Это глупо и ненужно, в расширении порядок чисто - "ваша прихоть", и на работу никак не влияет :)



>>> Я пробую менять у этих полей синоним в основной конфигурации

Зачем вам расширение?
А так, после игр с основной конфигурацией, начинайте переписывать диалоги расширений.
Поигравшись пару лет с расширением, мы пришли к выводу, что создавать элементы, в диалогах расширений, это самый лучший способ :)
Код писать лучше в отдельном общем модуле, диалоги в расширении, частенько убиваются, и что бы 1000- срок не писать каждый раз все что можем, перемещаем в общие модуля расширения :)
21 VoditelKobyly
 
08.06.22
13:58
Скорее всего лучше найти где коллекция заполняется и менять при заполнении (может это еще где-то используется, но нужно знать задачу целиком)
22 DrZombi
 
гуру
08.06.22
13:59
(20) >>> создавать элементы, в диалогах расширений

Создавать программной, элементы в диалога... Поспешил я :)
23 NIGHTHUNTER
 
08.06.22
14:47
(20) Так что вы подсказываете по решению?
Я как понимаю решение (13) хорошее. но может слететь?! И делать это нужно большому количеству пользователей если, то не сильно как то.

А програмно делать? Я ещё не знаю как. но нужно подбираться будет. А что вы посоветуете7

(22) То есть все делать в коде? Где я показал? http://joxi.ru/D2PN6BGHw4KpBr

Мне это не совсем знакомо. но буду делать.
24 NIGHTHUNTER
 
15.06.22
07:24
Подскажите пожалуйста далее по теме, заголовок у поля я постарался изменить.
Как сейчас в этом случае менять расположение полей?

            Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
                НовыйЭлемент = Элементы.Добавить("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1", Тип("ПолеФормы"), Элемент);
                НовыйЭлемент.ПутьКДанным = "ХХХ_" + ТабличнаяЧасть.Имя + "." + Реквизит.Имя;
                Если Реквизит.Имя = "ДатаСклада" Тогда
                    НовыйЭлемент.Заголовок = "Дата отгрузки";                    
                ИначеЕсли Реквизит.Имя = "КоличествоСклад" Тогда
                    НовыйЭлемент.Заголовок = "Количество отгружено";                                        
                Иначе    
                    НовыйЭлемент.Заголовок = Реквизит.Синоним;
                КонецЕсли;
                Если Реквизит.Тип.СодержитТип(Тип("Булево")) Тогда
                    НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
                Иначе
                    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
                КонецЕсли;
                НовыйЭлемент.УстановитьДействие("ПриИзменении", "ПриИзмененииПолейНарядЗадания");
            КонецЦикла;

Необходимо, перенести поле «Количество отгружено» после поля «Дата отгрузки».
25 NIGHTHUNTER
 
15.06.22
07:27
ТабличнаяЧасть.Реквизиты это КоллекцияОбъектовметаданных

http://joxi.ru/bmoyBOniOW43xA
26 NIGHTHUNTER
 
15.06.22
08:23
Где думаю, менять очередность этих полей. И где задается ее последовательность.

Отловил открытие формы в процедуре

&НаКлиенте
Процедура Закупки_ПриОткрытииПеред(Отказ)
они не понятно там в какой последовательности, но вроде рядом

http://joxi.ru/Y2L18qBCxg5q1A
27 hhhh
 
15.06.22
08:24
(24) создайте группу элементов ГруппаОтгружено, и в нее поместите требуемые элементы в нужном вам порядке.
28 NIGHTHUNTER
 
15.06.22
08:26
(27) Это же поля табличной части, или частей. В двух, идут не вверном порядке.
29 NIGHTHUNTER
 
15.06.22
08:31
Можно ли как то тут устанавливать очередность полей?

            Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
                НовыйЭлемент = Элементы.Добавить("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1", Тип("ПолеФормы"), Элемент);
                НовыйЭлемент.ПутьКДанным = "ХХХ_" + ТабличнаяЧасть.Имя + "." + Реквизит.Имя;
30 Kigo_Kigo
 
15.06.22
08:33
ТС так отладчик не освоил, я так понимаю?
31 NIGHTHUNTER
 
15.06.22
08:44
(30) Я сейчас в нем просматриваю все. Я сути не пойму, где мне менять очередность колонок этих (((( Сижу, и что смотреть не знаю.
Перебираю разные свойства. Бестолку.
32 NIGHTHUNTER
 
15.06.22
08:49
как программно задать расположение вот этих полей ?

http://joxi.ru/nAyleXoi95zNe2

на форме они рядом, но в предприятии нет. Где задать их правильное расположение и как?
33 hhhh
 
15.06.22
08:57
(32) ну, поменяй их местами. тут же у тебя на этой картинке есть кнопки передвинуть вверх и вниз. Такие стрелочки синего цвета.
34 NIGHTHUNTER
 
15.06.22
09:46
(33) Так я их и так уже сдвинул как нужно. Но в предприятии не так как нужно.

В этом проблема. Что форма есть одна, потом ещё какая то создается ещё и программно, вот менять местоположение нужно там.

http://joxi.ru/V2V0GeEUBeo63r

Как я понял это нужно так же как и с заголовком полей, делать где то программно. но где не понял ещё.
35 NIGHTHUNTER
 
15.06.22
09:50
Если я сделал вот эту доработку на изменение заголовков http://joxi.ru/1A5ER9vU4WjgnA .
Где сейчас и как мне можно сделать изменение следования этих полей?
Пересмотрел все свойства формы. и особо ничего не понял. Запутался только.
Там ещё видно в этом коде. что к названию табличной части добавляют 1 .
36 Мимохожий Однако
 
15.06.22
09:53
По мере добавления полей на форму определяется порядок следования. Если сможешь изменить порядок следования реквизитов в процессе перебора, то и сможешь получить нужный порядок.
37 NIGHTHUNTER
 
15.06.22
10:01
(38) В конфигураторе у них на форме нужный порядок .
В предприятии другой.
Я пока не нашел места где я могу влиять на это. Переместить нужно только одно поле. Где я могу его переместить что бы увидеть что это работает?
38 Ёпрст
 
15.06.22
10:01
(35) ёпт, да подвинь ты уже свой реквизит в самой табличной части ( не в реквизитах формы, а в дереве метаданных, в табличной части). Если не можешь кодом это родить.
39 NIGHTHUNTER
 
15.06.22
10:13
(38) Вот поменял в основной конфигурации  http://joxi.ru/eAO854GCvb5plr

в предприятии ничего не изменилось !!!! Там какая то таблица с единицей создается, она есть только на форме кажется. Вот ее как мне поменять?

http://joxi.ru/V2V0GeEUBe5KEr
40 NIGHTHUNTER
 
15.06.22
10:17
поменял везде в расширении http://joxi.ru/52aWJQEuln7gor
41 NIGHTHUNTER
 
15.06.22
10:22
В режиме предприятия как было поле не перенесенным так и остается ((((.

Как и где его перенести, что бы увидеть что оно меняет свое местоположение , я не знаю.
42 NIGHTHUNTER
 
15.06.22
10:22
43 Ёпрст
 
15.06.22
10:25
(41) кеш очисти
44 NIGHTHUNTER
 
15.06.22
10:29
(43) Такое наблюдается в разных базах. Табличная часть эта, делается программно. И менять как то ее нужно программно.
45 Ёпрст
 
15.06.22
10:35
(44) см (36)

у тебя всего лишь цикл по метаданным для получения реквизитов таб части и создание элементов формы в этом цикле. если нужен другой порядок, то или поменять порядок в самих метаданных (что ты ужо сделал) или, поместить сперва в табличку значений, например, там отсортировать/подвигать строки как надо и потом уже создать атрибуты формы.
46 Ёпрст
 
15.06.22
10:39
Ну или запоминать первый нужный добавленный реквизит в переменной и потом, заместо Добавить, использовать метод Вставить для второго нужного реквизита, в котором указывать реквизит из переменной, перед которым нужно вставить.
47 hhhh
 
15.06.22
12:07
(44) Вставить (Insert)
Синтаксис:
Вставить(<Имя>, <ТипЭлемента>, <Родитель>, <Элемент>)
Параметры:
<Имя> (обязательный)
Тип: Строка.
Уникальное имя добавляемого элемента.
<ТипЭлемента> (обязательный)
Тип: Тип.
Тип добавляемого элемента.
<Родитель> (необязательный)
Тип: ГруппаФормы, ТаблицаФормы, ФормаКлиентскогоПриложения.
Родитель для добавляемого элемента.
Если не указан, то вставляется на верхний уровень.
<Элемент> (необязательный)
Тип: ДекорацияФормы, ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы.
Элемент, перед которым должен быть вставлен новый элемент. Если не указан, то элемент будет вставлен в конец.
Возвращаемое значение:
Тип: ДекорацияФормы, ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы.
Описание:
Вставляет элемент в коллекцию элементов.
48 NIGHTHUNTER
 
15.06.22
12:55
(45) - (47) Понятно чт оесть всякие методы, вставить, сдвинуть и тд. Где это и с чем делать то?
49 Ёпрст
 
15.06.22
15:45
(48) у тебя есть всего 1 цикл в коде, в котором ты сам поменял имя колонки, вот в нем, по условию и вставляй, а не добавляй. Или запоминай и вставляй после цикла..фирш ейн?
50 hhhh
 
15.06.22
15:45
(48) ну где ты добавляешь элемент. там и указывай куда его вставить.
51 Масянька
 
15.06.22
15:50
(49) Нихт фирштейн!
52 vicof
 
15.06.22
16:02
Йайа, зер гуд. Дастиш фантастиш.
53 Масянька
 
15.06.22
17:22
(52) А Вас, Штирлиц, я попрошу остаться. (С)
54 Ёпрст
 
15.06.22
17:29
(53) дарю,©

или Alt+0169
55 NIGHTHUNTER
 
16.06.22
02:34
(49) И как будет правильно ?

            Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
                НовыйЭлемент = Элементы.Добавить("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1", Тип("ПолеФормы"), Элемент);
                НовыйЭлемент.ПутьКДанным = "ХХХ_" + ТабличнаяЧасть.Имя + "." + Реквизит.Имя;
                // 2022_06_15 ->
                Если Реквизит.Имя = "ДатаСклада" Тогда
                    НовыйЭлемент.Заголовок = "Дата отгрузки";                    
                ИначеЕсли Реквизит.Имя = "КоличествоСклад" Тогда
                    НовыйЭлемент.Заголовок = "Количество отгружено";                                        
                Иначе    
                    НовыйЭлемент.Заголовок = Реквизит.Синоним;
                КонецЕсли;
                // <-
                Если Реквизит.Тип.СодержитТип(Тип("Булево")) Тогда
                    НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
                Иначе
                    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
                КонецЕсли;
                НовыйЭлемент.УстановитьДействие("ПриИзменении", "ПриИзмененииПолейНарядЗадания");
            КонецЦикла;
56 NIGHTHUNTER
 
16.06.22
02:39
(47) Что то до меня это не дойдет. В моем случае Элемент это таблица значений, а не поле.

НовыйЭлемент = Элементы.Добавить("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1", Тип("ПолеФормы"), Элемент);

Тут Элемент это ТаблицаФормы .
57 NIGHTHUNTER
 
16.06.22
02:40
(47) Почему нет метода сдвинуть ?
58 NIGHTHUNTER
 
16.06.22
02:56
Как я ему тогда заголовок поменяю е6сли я его втавляю?
59 NIGHTHUNTER
 
16.06.22
02:58
(46) Я меняю заголовок у добавляемого, а у вставленного как я поменяю заголовок ?
60 NIGHTHUNTER
 
16.06.22
03:54
Сделал, я вот так. И на сколько я вижу, поле вставляется до нужного мне поля, а не после.
Понимаю, что дальше придется крутить, что бы вставить его после.

            // 2022_06_16 ->
            ЭлементДатаСклада = Неопределено;
            // <-
            Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
                // 2022_06_16 ->
                Если Реквизит.Имя = "КоличествоСклад" Тогда
                    Элементы.Вставить("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1", Тип("ПолеФормы"), Элемент, ЭлементДатаСклада);
                    НовыйЭлемент = Элементы.Найти("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1");
                    // <-
                Иначе
                    НовыйЭлемент = Элементы.Добавить("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1", Тип("ПолеФормы"), Элемент);
                КонецЕсли;
                НовыйЭлемент.ПутьКДанным = "ХХХ_" + ТабличнаяЧасть.Имя + "." + Реквизит.Имя;
                // 2022_06_15 ->
                Если Реквизит.Имя = "ДатаСклада" Тогда
                    НовыйЭлемент.Заголовок = "Дата отгрузки";                    
                    ЭлементДатаСклада = НовыйЭлемент;
                ИначеЕсли Реквизит.Имя = "КоличествоСклад" Тогда
                    НовыйЭлемент.Заголовок = "Количество отгружено";                                        
                Иначе    
                    НовыйЭлемент.Заголовок = Реквизит.Синоним;
                КонецЕсли;
                // <-
                Если Реквизит.Тип.СодержитТип(Тип("Булево")) Тогда
                    НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
                Иначе
                    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
                КонецЕсли;
                НовыйЭлемент.УстановитьДействие("ПриИзменении", "ПриИзмененииПолейНарядЗадания");
            КонецЦикла;
61 NIGHTHUNTER
 
16.06.22
03:56
Как сейчас мне рассчитать, получить поле перед которым нужно вставить нужное?
62 NIGHTHUNTER
 
16.06.22
04:09
Визуально нашел перед которыми полями нужно вставить, сейчас буду делать.
63 Масянька
 
16.06.22
09:03
(54) Спасибо ©
64 hhhh
 
16.06.22
09:15
(59) также
65 hhhh
 
16.06.22
09:20
(60) всё-таки ты юморист

пиши

НовыйЭлемент = Элементы.Вставить("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1", Тип("ПолеФормы"), Элемент, ЭлементДатаСклада);

а

                 НовыйЭлемент = Элементы.Найти("ХХХ_" + ТабличнаяЧасть.Имя + Реквизит.Имя + "1");
  
выкинь.
66 Ёпрст
 
16.06.22
10:33
(60) Не, это не излечимо
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший