|
v7: ЗначениеВСтрокуВнутр. Глюк? | ☑ | ||
---|---|---|---|---|
0
МаксимБел
06.10.14
✎
16:35
|
Использую функцию ЗначениеВСтрокуВнутр(), для получения уникального кода объекта. Заметил такую штуку:
Получение уникального кода Вариант 1: Выборка.ВыбратьДокументы(НачПериода,КонПериода); ТекДок = Выборка.ТекущийДокумент(); ТекСтраница.Cells(НомерСтроки,НомерСтолбца).Value = ЗначениеВСтрокуВнутр(ТекДок); Получение уникального кода Вариант 2: ЗначениеСубконто = ОперацияБух.Субконто(ИндексСубконто + 1); ТекСтраница.Cells(НомерСтроки,НомерСтолбца).Value = ЗначениеВСтрокуВнутр(ЗначениеСубконто); И в первом и во втором варианте речь идет об одном и том же документе. Вот только функция ЗначениеВСтрокуВнутр() возвращает немного разного формата результат: Вариант 1: {"O","0","0","16152","0","0"," 963394 "} Вариант 2: {"O","0","0","0","0","0"," 16152 963394 "} С чем это связано? Каким образом через обычную выборку (не касаясь субконто) получить оба варианта? |
|||
1
Defender aka LINN
06.10.14
✎
16:36
|
(0) ТекущийДокумент() в 7.7 же объект, ЕМНИП. А значение субконто - ссылка.
|
|||
2
lavalit
06.10.14
✎
16:38
|
Вотпрям одно и тоже в обоих вариантах?
|
|||
3
lavalit
06.10.14
✎
16:40
|
ЗначениеСубконто.ТекущийДокумент() или сделай НайтиДокумент(ЗначениеСубконто)
|
|||
4
Ёпрст
06.10.14
✎
16:43
|
(1) вообще-то это ссылка
|
|||
5
Ёпрст
06.10.14
✎
16:45
|
а у автора, в одном случае - документ определенного вида и
субконто с типом "неопределенно" или "документ" без вида поди - вот и разные значения в строку внутр - там вид и тип добавлен , только и всего лишь |
|||
6
Злопчинский
06.10.14
✎
16:46
|
Потому что гладиолус.
я бы на всякий случай вместо . Выборка.ВыбратьДокументы(НачПериода,КонПериода); ТекДок = Выборка.ТекущийДокумент(); . заделал бы . Выборка.ВыбратьДокументы(НачПериода,КонПериода); //ЗДЕСЬ Д,Б, ОПЕРАТОР ПОЗИЦИОНИРОВАНИЯ НА КОНКРЕТНОМ ОБЪЕКТЕ ВЫБОРКИ ТекДок = Выборка.ТекущийДокумент(); |
|||
7
Ёпрст
06.10.14
✎
16:46
|
(6) лишнее
|
|||
8
Злопчинский
06.10.14
✎
16:49
|
(7) обоснуй.
|
|||
9
Ёпрст
06.10.14
✎
16:51
|
(8)
Выборка.ВыбратьДокументы(НачПериода,КонПериода); ТекДок = Выборка.ТекущийДокумент();//тут ужо и так позиционирование на первом документе из выборки по-умолчанию |
|||
10
Злопчинский
06.10.14
✎
16:54
|
(9) ээээ, это хорошо если в выборке есть доки... а если нет - уйдет куда-то в обмен/на..этотуда пустая ссылка... и случится облом где-нить на приеме данных... так чтоя предпочитаю "проверять" и если нет вывборке - то формировать "пустой" обмен, а не обмен с пустой ссылкой...
|
|||
11
КонецЦикла
06.10.14
✎
16:56
|
(0) Юзай 1C++
Всяко удобнее ЗначениеВСтрокуБД() Есть и длинные значения (с видом и типом) |
|||
12
Ёпрст
06.10.14
✎
17:01
|
(10) ВыбратьДокументы имеет флаг возврата
|
|||
13
МаксимБел
06.10.14
✎
17:05
|
(2) Однозначно одно и то же. Это даже по результату видно. Просто формат результата меняется.
|
|||
14
Ёпрст
06.10.14
✎
17:05
|
(13) см.(5)
|
|||
15
МаксимБел
06.10.14
✎
17:07
|
(11) Не вариант. Править тысячи строк кода и перегружать проводки за три квартала... В общем, не подходит.
|
|||
16
МаксимБел
06.10.14
✎
17:09
|
(14) Хм.. Ну ладно. С этим понятно. Вопрос в том, как через выборку (Вариант 1) получить оба варианта формата ЗначениеВСтрокуВнутр()???
|
|||
17
КонецЦикла
06.10.14
✎
17:09
|
Куда перегружать?
Так удобно и напрямую грузить, ведь это родные ID 1С, в 36-ном представлении, а не в десятичном. А по ID есть и индекс. В общем суть всех отличий в (5) |
|||
18
КонецЦикла
06.10.14
✎
17:11
|
(16) Добавлять вид значения, вот тут вообще объект "из ничего"
http://1c911.by/stati_1s/statya-poleznye-melochi.htm#1 |
|||
19
КонецЦикла
06.10.14
✎
17:13
|
Вид "16152" перемещается из одного места в другое, вроде же видно хорошо :)
|
|||
20
МаксимБел
06.10.14
✎
17:14
|
(17) ЗначениеВСтрокуВнутр используется для получения уникального кода объекта. При переносе проводок из 1С7 в 1С8, в 8-ке создаются документы и элементы справочников из субконто. Каждый созданный объект имеет реквизит "ВнутреннийКод" в который пишется код из 1С7 (тот самый ЗначениеВСтрокуВнутр). Соответственно, при импорте проводок, объекты создаются только в том случае, если они не были найдены по Внутреннему коду. Если переписать механизм импорта проводок на ЗначениеВСтрокуБД(), то придется перегружать проводки за 3 квартала.
|
|||
21
МаксимБел
06.10.14
✎
17:17
|
(19) Не хочется искусственно формировать внутреннее значение. Мало ли... Ошибешься в одном пробеле, потом замучаешься последствия выправлять. Но если по другому никак, придется клеить ручками ((
|
|||
22
КонецЦикла
06.10.14
✎
17:23
|
(20) Так у тебя пишется ид или длинный код?
Если справочники один к одному - то хватит и короткого ид В случае 36-ной системы - это всего 9 символов. Ты что длинные писал? Тогда добавляй вид везде. Тут телепатов нету. |
|||
23
МаксимБел
06.10.14
✎
17:24
|
(22)
Вот так писал: Вариант 1: {"O","0","0","16152","0","0"," 963394 "} Вариант 2: {"O","0","0","0","0","0"," 16152 963394 "} Буду клеить. |
|||
24
КонецЦикла
06.10.14
✎
17:25
|
(23) В восьмерке же хранится один какой-то вариант?
Если "то так то сяк", то сделай как в в (11) и перегрузи заново - лучше один раз гемор потерпеть |
|||
25
Defender aka LINN
06.10.14
✎
17:48
|
(4) Ну и куй с ним тогда. Забыл 77, вот и нечего вспоминать :)
|
|||
26
Torquader
06.10.14
✎
18:30
|
Вариант 1 - это документ вида 16152 с внутренним Ид 963394.
Вариант 2 - это документ общего вида с установленным видом 16152 и внутренним Ид 963394. Собственно, документ однозначно находится по 963394, так как вид можно указать от любого документа, после позиционирования (через НайтиДокумент) мы будем уже стоять на нужном нам документе, так как Ид для всех видов документов общий. Определить Ид можно очень быстро - если третий символ в строке O (или если {"O","0","0"," в начале), то осчитываем с конца 15 символов, десять - это будет Ид, записанный числом, с пробелами а начале, три - код распределённой базы (или три пробела, если база не распределённая), а в конце "} И ничего больше искать не нужно. |
|||
27
Злопчинский
06.10.14
✎
18:47
|
(12) я в курске, собственно как анализировать что спозиционирован на текущем доке - дело техники. но имхо - в большинстве случаев такое "позиционирование/анализ" надо делать
|
|||
28
КонецЦикла
06.10.14
✎
18:47
|
(26) Да... но со справочниками такое не прокатит, а субконто как правило - справочники. Хранить только ид если один к одному соответствие между базами можно.
|
|||
29
Serginio1
06.10.14
✎
18:53
|
Я завел у справочников и документов поле Ref Строка длинной 36 которое и является Ссылкой для 8 ки
Перенос данных 7.7 -> 8.3 |
|||
30
Z1
06.10.14
✎
21:24
|
(0) Если разовая задача то учитывай оба варианта,
если нечто постоянное и для длительного хранения то самое правильное решение в (11) потому, что тогда доп памяти на документ надо char(9) вместо того что используется сейчас в 0. (20) не придется перегружать если аккуратно напишешь на прямых запросах ( или на чистом t-sql) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |