![]() |
![]() |
![]() |
|
Как вставить в список значений ссылку на документ? | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
22.04.11
✎
08:20
|
Подскажите пожалуйста, хочу при проведении документа делать на него ссылку в справочнике. В справочнике создал реквизит "Строка", в документе при обработке проведения прописал процедуру, которая добавляет строчку ТекущийДокумент() в реквизит справочника, но добавляется видимо именно строчка, и в справочнике, когда я из реквизита делаю список, этот док не открывается.
|
|||
1
1Сергей
22.04.11
✎
08:21
|
(0) а ты создай реквизит с типом документ
|
|||
2
Guk
22.04.11
✎
08:22
|
(0) т.е. ты создал реквизит типа "Строка", а сохранять хочешь ссылку?...
|
|||
3
miki
22.04.11
✎
08:24
|
ну разве только какой-нить внутренний идентификатор туда (в строку) пихать...
|
|||
4
1Сергей
22.04.11
✎
08:24
|
да, и как это ты "из реквизита делаешь список"?
|
|||
5
miki
22.04.11
✎
08:25
|
(4)и такое можно тоже...
|
|||
6
1Сергей
22.04.11
✎
08:27
|
(5) я знаю, что можно, если правильно заносить в этот реквизит документы. Но меня интересует как это делает Zhuravlik
|
|||
7
Одиночка
22.04.11
✎
08:30
|
(0) значениевстрокувнутр(), значениеизстрокивнутр()... ток никчему это ты затеял
|
|||
8
ДенисЧ
22.04.11
✎
08:36
|
Специалиста позови...
|
|||
9
andrewks
22.04.11
✎
08:53
|
В справочнике создал реквизит "Строка"... но добавляется видимо именно строчка...
феерично |
|||
10
Skom
22.04.11
✎
08:59
|
(0) а чего именно хочешь добиться то?
|
|||
11
KUBIK
22.04.11
✎
09:05
|
(0) "...хочу при проведении документа делать на него ссылку в справочнике" = еще надо подумать а что должно быть при отмене проведения дока
|
|||
12
Skom
22.04.11
✎
09:06
|
(11) да нафига это
|
|||
13
Zhuravlik
22.04.11
✎
09:13
|
(1) Зачем мне реквизит, который может хранить только одно значение? Доков может быть несколько.
(4) При открытии загружаю строку реквизита в список значений на форме. (7) К чему) Попросили сделать систему аналитики по дегустации (когда контрам "дарят" изделие с целью добиться его последующих покупок). Контрагент может быть новым (его нет в справочнике, но возможно будет), может быть существующим. я сделал справочник "Карточка дегустации", в документе реализации сделал на нее ссылку. До всего этого дегустация учитывалась только по контру "Дегустатор" из справочника контрагентов. Я делаю ссылку на справочник "Карточка дегустации", где меня попросили отображать список документов, по которым была отгрузка этому контру. Спасибо за совет, сейчас попробую. (11) Уже реализовал и проведение и отмену оперируя ВстрокуСразделителями и ИзСтрокиСРазделителями. |
|||
14
Guk
22.04.11
✎
09:15
|
(13) делай подчиненный документ или используй справочник. через строку, в данной ситуации, это очень плохая реализация...
|
|||
15
Zhuravlik
22.04.11
✎
09:16
|
(9) гдупо выразился) просто при проведении дока я заношу туда строчку вида "Реализация(№)(Дата)", и при открытии справочника выгружаю в список значений на форме. Я думал, что список значений сохранит ссылку на документ, но ИзСтрокиСРазделителями на выходе дает строчку.
|
|||
16
Zhuravlik
22.04.11
✎
09:17
|
(14) почему?
|
|||
17
Guk
22.04.11
✎
09:18
|
(16) потому что очень велика вероятность потери ссылки на документ при таком хранениии...
|
|||
18
KUBIK
22.04.11
✎
09:19
|
(13) Регистр (оборотный) предлагать?
|
|||
19
Zhuravlik
22.04.11
✎
09:20
|
(17) ее сейчас и нет, все в строках
(18) Зачем? |
|||
20
KUBIK
22.04.11
✎
09:21
|
(19) Для дегустации :)))
|
|||
21
andrewks
22.04.11
✎
09:22
|
(18) +18
|
|||
22
Guk
22.04.11
✎
09:22
|
(19) у тебя, например, при удалении документа прописано, чтобы во всех текстовых реквизитах, где этот документ прописан через строковое внутреннее представление, он бы тоже удалялся?...
|
|||
23
Zhuravlik
22.04.11
✎
09:27
|
(19) Да.
У меня основная проблема в новом контрагенте. Если продукцию дают кому-нибудь на пробу - его еще нет в справочнике, но если начнут заводить, надо как-то связывать существующую карточку с этим контром. При этом сам справочник контрагентов старый программист сказал не трогать, т.е. не менять ничего в конфе. При том, что дегустации всего процентов 10 от общей массы контров, сообщение-напоминалку при вводе нового контра тоже не хочется делать. Сейчас для этого связь только по наименованию нового контра в карточке дегустации и наименованию его в справочнике контрагентов. Может можно как-нибудь поумнее? |
|||
24
Zhuravlik
22.04.11
✎
09:28
|
+ в смысле не (19) да, а (22) =)
|
|||
25
Zhuravlik
22.04.11
✎
09:46
|
(6) Вот так:
//Обработка проведения Если ПустоеЗначение(КонтДегустатор) = 0 Тогда СпрКД = СоздатьОбъект("Справочник.КарточкаДегустации"); Если (СпрКд.НайтиЭлемент(КонтДегустатор) = 1) Тогда Сп = СоздатьОбъект("СписокЗначений"); сп.ДобавитьЗначение(ТекущийДокумент()); СпрКд.СписокДокументов = СпрКд.СписокДокументов + Сп.ВСтрокуСРазделителями() + ", "; СпрКд.Записать(); КонецЕсли; КонецЕсли //Обработка удаления проведения Если ПустоеЗначение(КонтДегустатор) = 0 Тогда СпрКД = СоздатьОбъект("Справочник.КарточкаДегустации"); Если (СпрКд.НайтиЭлемент(КонтДегустатор) = 1) Тогда Сп = СоздатьОбъект("СписокЗначений"); Сп.ДобавитьЗначение(ТекущийДокумент()); СтрТек = Сп.ВСтрокуСРазделителями() + ", "; СтрКД = СпрКд.СписокДокументов; СтрИтог = СтрЗаменить(СтрКд, СтрТек, ""); СпрКД.СписокДокументов = СтрИтог; СпрКд.Записать(); КонецЕсли; КонецЕсли //Справочник, форма при открытии Если ПустоеЗначение(СписокДокументов) = 0 Тогда Стр = Сред(СписокДокументов, 1, СтрДлина(СписокДокументов) - 2); СписокДок.ИзСтрокиСРазделителями(Стр); КонецЕсли; |
|||
26
Zhuravlik
22.04.11
✎
09:48
|
+
// а потом открываю Процедура ПриВыбореДокумента() ТекДок = СписокДок.ПолучитьЗначение(СписокДок.ТекущаяСтрока()); ДлинаНомера = СтрДлина(ТекДок) - 22; Номер = Сред(ТекДок, 12,ДлинаНомера); ДатаДок = Дата(Сред(ТекДок, 20, 28)); Если Док.НайтиПоНомеру(Номер, ДатаДок) = 1 Тогда ОткрытьФорму(Док.ТекущийДокумент()); КонецЕсли; КонецПроцедуры // ПриВыбореДокумента |
|||
27
Zhuravlik
22.04.11
✎
09:58
|
Нашел ошибку, номер может менять длину, значит позиция вхождения даты - тоже
Процедура ПриВыбореДокумента() ТекДок = СписокДок.ПолучитьЗначение(СписокДок.ТекущаяСтрока()); ДлинаНомера = СтрДлина(ТекДок) - 22; ПозВхожденияДаты = 14 + ДлинаНомера; Номер = Сред(ТекДок, 12,ДлинаНомера); ДатаДок = Дата(Сред(ТекДок, ПозВхожденияДаты, 8)); Если Док.НайтиПоНомеру(Номер, ДатаДок) = 1 Тогда ОткрытьФорму(Док.ТекущийДокумент()); КонецЕсли; КонецПроцедуры // ПриВыбореДокумента |
|||
28
1Сергей
22.04.11
✎
10:01
|
(25) фигня какая-то
Почему бы не использовать (7)? |
|||
29
Zhuravlik
22.04.11
✎
10:04
|
(28) я еще не сделал, попробую но позже. А почему фигня? Что именно здесь фигового? Формат названия документа не изменится никогда, изменение длины номера я учел, что не так?
|
|||
30
1Сергей
22.04.11
✎
10:13
|
(29) дело твоё. но я бы не хранил в справочниках такую информацию
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |