|
Как сохранить табличную часть в регистре? | ☑ | ||
---|---|---|---|---|
0
Мисти
04.03.13
✎
10:37
|
2 маленьких таблички в обработке. При печати данные (там еще 40 реквизитов) сохраняются в регистр, при повторном открытии - данные обработки заполняются из регистра.
Как таблички сохранить? В 7 я писала что-то вроде встрокувнутрь, а в 8? |
|||
1
Wobland
04.03.13
✎
10:37
|
так же
|
|||
2
Мисти
04.03.13
✎
19:40
|
Говорит - "ошибка потока данных"
Почему? |
|||
3
Мисти
04.03.13
✎
20:29
|
НаборЗаписей[0].ДоговораПоставщика - это {"#",595cddf9-e61d-47fe-ad92-3cb955fb5c92} (отладчик говорит)
ЗначениеИзСтрокиВнутр(НаборЗаписей[0].ДоговораПоставщика) - а это - неопределено говорит. |
|||
4
Мисти
04.03.13
✎
20:30
|
А сохраняла так -
МенеджерЗаписи.ДоговораПоставщика = ЗначениеВСтрокуВнутр(ДоговораПоставщика) - ДоговораПоставщика Табличка их договоров. |
|||
5
Живой Ископаемый
04.03.13
✎
20:31
|
так делают только .удаки.
зачем что-то сохранять из обработки? просто кинь табличное поле у которого установи источник данных - твой регистр. Только нужно будет озаботится регистратором, но это легко. |
|||
6
Живой Ископаемый
04.03.13
✎
20:33
|
и не начинайте "я в 7 делала" - это зразу два, это сразу значит что вы точно делаете не так. и нужно по-другому.
|
|||
7
shuhard
04.03.13
✎
20:33
|
(5) ты угадал с оценкой =)
|
|||
8
Мисти
04.03.13
✎
20:36
|
Возможно! Но у меня другой фокус.
Регистр содержит 40 реквизитов, в 2 из них должны сохранится табличные части. |
|||
9
Живой Ископаемый
04.03.13
✎
21:10
|
и что?
|
|||
10
Лефмихалыч
04.03.13
✎
21:12
|
(0) откуда такие еретические мысли - хранить табличные части обработки в базе?
|
|||
11
Мисти
04.03.13
✎
21:17
|
(9) Ну, в этом смысле - нужно будет 3 регистра, нет?
(10) А почему нет? Были найдены 5 договоров, из них 2 - нужны для печати (в некотором пункте большого документа), а некоторые - нет. Нужные сохраняем для повторной печати. |
|||
12
Живой Ископаемый
04.03.13
✎
21:18
|
Не, ну чисто гипотетически это может быть например фильтр отбора в скд, но все это прекрасно хмлсериализуется
|
|||
13
kotletka
04.03.13
✎
21:19
|
(11)договоры это не табличная часть, так и скажи нужно хранить данные в регистре, а то табличную часть, табличную часть
|
|||
14
Живой Ископаемый
04.03.13
✎
21:19
|
(11) господи, да почемуже?
|
|||
15
kotletka
04.03.13
✎
21:20
|
в регистре измерение типа справочниксс...договоры контрагентов и записываешь в него свои договры
|
|||
16
Живой Ископаемый
04.03.13
✎
21:21
|
(11) ничего не понятно. У нас сомнения что в следущий раз мы найдем эти два договора?
|
|||
17
kotletka
04.03.13
✎
21:21
|
(14)да потому что это мисти,она в 1с не "взубногой", любой вопрос решает на мисте, путём взятия на слабо доверчивых 1сников
|
|||
18
Мисти
04.03.13
✎
21:47
|
(13) А что это? В обработке выглядит, как 2 табличные части.
(16) Найти-то найдем! Но их 5 нужно визуально выбрать 2 (например). В этот момент можно ошибиться при повторе. |
|||
19
Мисти
04.03.13
✎
21:48
|
(15) Так их сразу 2!
Почему нельзя - вСтрокуВнутрь? в 7 было красиво - сколько хочешь табличных частей в документе! |
|||
20
Живой Ископаемый
04.03.13
✎
22:06
|
2(19)и в8 скалько хочешь табличных частей и без значениевстрокувнутр и поэтому и говорим , что если будете с подходом "как в 7" будет непоавильно
|
|||
21
Мисти
04.03.13
✎
22:10
|
(20) ну и куда мне их деть в обработке, чтоб при открытии ее из того же начального документа я увидела все те реквизиты, что распечатались?
|
|||
22
Мисти
04.03.13
✎
22:12
|
И, главное, если это возможно технически - может, вы мне лучше подскажете - как? И почему не работает?
|
|||
23
Steel_Wheel
04.03.13
✎
22:41
|
Потому что встрокувнутр не гарантирует сохранность объекта, при изменении метаданных извлекаемого объекта может и не сработать
|
|||
24
hhhh
04.03.13
✎
22:42
|
(21) ну стандартное же есть на любой форме обработки и отчета. СохранитьЗначения и ВосстановитьЗначения. И в свойствах формы просто указываете какие поля сохранять.
|
|||
25
Мисти
04.03.13
✎
22:47
|
(24) Не пойдет! Оно сохраняет последнее значение, а мне нужна зависимость от объекта, из которого вся эта хрень вызывается.
(23) Фик с ней! Пока-то ничего не поменялось! Я готова сохранить даже просто названия договоров! Ну не рисовать же строку из табличной части вручную? А потом обратно? |
|||
26
Steel_Wheel
04.03.13
✎
23:08
|
Кстати, список настроек фиксирован? Если да, то я бы все-таки сделал собственный регистр с измерением документ и набором характеристик в ресурсах. Или через справочник.
Возможно, потребуется написать на несколько строк больше, но такое решение более стабильно и лучше поддерживается |
|||
27
hhhh
04.03.13
✎
23:12
|
(15) она сохраняетс не последнее значение, а по имени настройки, чтоб вы знали. И это вам подходит идеально.
|
|||
28
Мисти
04.03.13
✎
23:15
|
Откуда я знаю имя настройки? У меня их, может, штук 200!
Где я их искать буду? И почему не в регистр-то?? (26) Именно так я и сделала! Только 2 табличные части там не сохраняются, и еще одна мелкая заминка. |
|||
29
Мисти
04.03.13
✎
23:23
|
Еще одна проблема:
При пером запоонении формы формируется список адресов, из них выбирается нужный и сохраняется в регистре. При открытии он должен попасть в тот же реквизит! АдресПредметаЛизинга=НаборЗаписей[0].АдресПредметаЛизинга; ЭлементыФормы.Адреса.Значение= АдресПредметаЛизинга; Адреса - определен как "неопределенный" со списком выбора. |
|||
30
Мисти
04.03.13
✎
23:27
|
АдресПредметаЛизинга=НаборЗаписей[0].АдресПредметаЛизинга;
СписокАдр = Новый СписокЗначений; СписокАдр.Добавить(АдресПредметаЛизинга); ЭлементыФормы.Адреса.СписокВыбора.ВыбратьЭлемент(АдресПредметаЛизинга); как его туда засунуть-то?? Чтоб уже не выбирать из списка выбора, а уже выбран? |
|||
31
Мисти
04.03.13
✎
23:45
|
АдресПредметаЛизинга=НаборЗаписей[0].АдресПредметаЛизинга;
СписокАдр = Новый СписокЗначений; СписокАдр.Добавить(АдресПредметаЛизинга); ЭлементыФормы.Адреса.СписокВыбора= СписокАдр; ЭлементыФормы.Адреса.СписокВыбора.НайтиПоЗначению(АдресПредметаЛизинга); При этом фокусе формируется нужный список выбора, только мне нужно, чтоб он уже был выбран!! |
|||
32
Мисти
04.03.13
✎
23:54
|
ЭлементыФормы.Адреса.СписокВыбора.ВыбратьЭлемент(СписокАдр.НайтиПоЗначению(АдресПредметаЛизинга));
О! А вот так - она мне аж интерактивно предлагает выбрать адрес! Ну уж это - слишком! |
|||
33
Мисти
05.03.13
✎
00:07
|
ау?
|
|||
34
Живой Ископаемый
05.03.13
✎
00:12
|
У психологов должна быть специалиазация- лечение 1сников от клюшечных привычек
|
|||
35
Мисти
05.03.13
✎
00:21
|
ЭлементыФормы.Адреса.СписокВыбора.НайтиПоЗначению(АдресПредметаЛизинга);
ЭлементыФормы.Адреса.Значение = АдресПредметаЛизинга; Что-то из этого сработало. |
|||
36
Мисти
05.03.13
✎
00:33
|
(34) Понятно, что дело не в психологии, а в том, что 8-рочных приемов я не знаю, но в данном случае, мне кажется, что выбран оптимальный вариант.
Только не работает! |
|||
37
Steel_Wheel
05.03.13
✎
01:06
|
1) Есть такое понятие Document-View model. Если интересно -- нужно гуглить.
Смысл в том, что DOcument -- это данные (объект), View -- это их вид (форма). ЭлементыФормы -- это обращение к View с просьбой поменять model. Гораздо лучше обращаться сразу к Model, тем более, что View сразу актуализирует данные. Форма -- это не сами данные, а то, как их видит пользователь. 2) (29) >>Адреса - определен как "неопределенный" со списком выбора. Для неопределенного типа нужно сначала принудительно тип установить. В вашем случае луше использовать составной тип, и просто написать ДокументОбъект.Адреса = СписокАдр.Найти(...) система сама определит тип и осуществит присвоение 3) Да, восьмерка требует более глубоких знаний в области программирования, чем 7-ка. Но мне, когда я работал с 1с, она нравилась намного больше, т.к. если знаешь, то сделать можно почти что угодно. И интерфейс намного дружественнее, к пользователю, чем в 7-ке. В принципе, интерфейс -- это слабая сторона 7-ки. |
|||
38
Мисти
05.03.13
✎
07:50
|
(37) Прекрасный ответ, но не по делу! С адресами я разобралась, а с табличными частями - нет ответа!
|
|||
39
mzelensky
05.03.13
✎
08:11
|
(0) не совсем понимаю проблему!? Есть обработка. НА ней есть какой-то общий реквизит + 2 ТЧ. Нужно сохранить куда-то.
Делаешь РС - сохраняй туда не всю ТЧ целиком, а построчно. Получается У тебя в измерениях будет общий реквизит + строкаТЧ1, потом общий реквизит и строкаТЧ2 и так далее... А потом обратно так же считываешь... Или я что-то не догоняю?! |
|||
40
Мисти
05.03.13
✎
08:25
|
(39) Ну уж нет, это дикость какая-то! У меня 40 реквизитов, часть из которых - строка неопределенной длины, зачем мне это дублировать??, тем более, что ТЧ - 2, а может завтра их 3 будет!
Если "без проблем", то я могу сама свернуть тч в строку и потом развернуть, но существует же метод! Он обычно работает, почему у меня - вдруг нет? |
|||
41
Мисти
05.03.13
✎
08:43
|
МенеджерЗаписи.ДоговораПоручительства = ЗначениеВСтрокуВнутр(ДоговораПоручительства);
ТекДоговораПоручительства= ЗначениеИзСтрокиВнутр(МенеджерЗаписи.ДоговораПоручительства); Туда сохранилось - нечто похожее, обратно - неопределено. |
|||
42
Мисти
05.03.13
✎
08:46
|
А вот как работало в 7:
Документы = ЗначениеВСтроку(ТДокументы); КонецПроцедуры // ПриЗаписи() Если ПустоеЗначение(Документы) = 0 тогда ТаблицаДок = ЗначениеИзСтроки(Документы); Если ТаблицаДок.КоличествоКолонок() <> 0 тогда ТаблицаДок.ВыбратьСтроки(); Пока ТаблицаДок.ПолучитьСтроку() = 1 ЦИКЛ ТДокументы.НоваяСтрока(); ТДокументы.Документ = ТаблицаДок.Документ; КонецЦикла; Иначе ТДокументы.Загрузить(ТаблицаДок); КонецЕсли; КонецЕсли; КонецПроцедуры // ПриОткрытии() |
|||
43
kosts
05.03.13
✎
08:49
|
(40) Сохранять в строку ссылочные типы и хранить в базе строку - это совсем плохо.
То что 40 реквизитов это ничего страшного, 1С может и больше сохранить. А вообще переделай обработку в справочник и создай там табличные части. Опиши задачу полно. Может подскажут чего еще. |
|||
44
Мисти
05.03.13
✎
08:52
|
Я могу сохранять номера документов. Так лучше?
|
|||
45
kosts
05.03.13
✎
09:09
|
(44) Каждый решает сам, что, в конце концов, ему лучше.
Мы только подсказываем направление. |
|||
46
КонецЕсли
05.03.13
✎
11:52
|
(0) Рассмотри вариант ещё в справочнике хранить. Там можно табличные части сделать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |