Имя: Пароль:
1C
1C 7.7
v7: Есть два вопроса: ЗначениеИзДлиннойСтрокиБД() и Блокировка()
0 bigdenis22
 
11.11.21
12:27
Помогите пожалуйста разобраться: есть метод ЗначениеВДлиннуюСтрокуБД(Объект) = получаем строку-код объекта, а для того, чтоб получить обратно ссылку на объект нужно знать и указать ТипОбъекта
ЗначениеИзДлиннойСтрокиБД(ТипОбъекта,СтрокаКод), т.е. получается ТипОбъекта надо записывать и хранить рядом с строкой-кодом объекта.
Нет ли вариантов полного преобразования ссылка => СтрокаКод и обратно СтрокаКод => ссылка ?
И второй вопрос: Блокировка() - всегда возвращает 0, т.е. проверить блокировку объекта, без попытки его заблокировать - нету?
И почему-то, Блокировка(1) у меня работает только для объекта созданного через СоздатьОбъект, для ссылки на объект - не работает (ошибка в выражении), - это нормально или так только у меня?
1 trad
 
11.11.21
12:41
ЗначениеВ/ИзСамойДлиннойСтроки
2 Андрей_Андреич
 
naïve
11.11.21
12:42
(1) А офигенно длинной строки нет? :)
3 trad
 
11.11.21
12:42
Нет
4 Naumov
 
11.11.21
12:46
Чем типовой метод ЗначениеВСтрокуВнутр/ЗначениеИзСтрокиВнутр не устраивает?
5 Bigbro
 
11.11.21
12:50
6 Ёпрст
 
11.11.21
13:34
(0)
2. да, нету.
7 Ёпрст
 
11.11.21
13:36
2.2 а как ты получаешь ссылку ? Поди через Нечто.РеквизитСТипомСправочник ?
8 bigdenis22
 
11.11.21
14:22
(7) Объект = ЗначениеИзДлиннойСтрокиБД(ТипОбъекта,СтрокаКод)
в результате Объект имеет свойства Вид() и Тип()
9 fisher
 
11.11.21
14:30
(5) Эх, семерка... Времена...
Помню, прихожу на новую работу - а там весь бизнес построен вокруг god object с кучей табличных частей, все табличные части в строках неограниченной длины и сложная аналитическая отчетность поверх этого.
Вся разработка под этим флагом, короче.
10 Volodja
 
11.11.21
14:31
(8) ЗначениеИзСтрокиВнутр тоже будет иметь
11 bigdenis22
 
11.11.21
14:36
(1) ЗначениеИзСамойДлиннойСтрокиБД() нет такого метода.
(4) (10) ЗначениеВСтрокуВнутр/ЗначениеИзСтрокиВнутр - возможно это решение, на на данном этапе, так сложилось, что использовались те методы что в теме. Подумаю, может переделаю на стандартные.
12 bigdenis22
 
11.11.21
14:43
(7) в дополнение к (8) ранее также сталкивался с такой проблемой:
в документе расход есть реквизит ДокументОснование, с типом Документ, так вот ДокументОснование.Блокировка(1) = ошибка
работает -
Док = СоздатьОбъект("Документ");
Док.НайтиДокумент(ДокументОснование);
Док.Блокировка(1);
13 bigdenis22
 
11.11.21
15:00
из того, что вижу сам, метод ЗначениеВСамуюДлиннуюСтрокуБД(Объект) возвращает значения вида: "O1  VG 1SHU2     ", "B1   X   AAZ      "
где "O1" и "B1" и есть ТипОбъекта, Документ и Справочник соответственно.
можно разобрать строку и с определенным Типом использовать ЗначениеИзДлиннойСтрокиБД(ТипОбъекта,СтрокаКод).
14 Volodja
 
11.11.21
15:21
(11) в (1) это была пошутилка.
15 Volodja
 
11.11.21
15:25
(12) Возможно, что Блокировка применима к объекту только  СоздатьОбъект(...)
Это не утверждение.Сам этим не пользовался.
16 trad
 
11.11.21
16:20
(14) нет, это была не пошутилка
17 trad
 
11.11.21
16:24
(11) да, действительно, ЗначениеВСамуюДлиннуюСтрокуБД - есть, а ЗначениеИзСамойДлиннойСтрокиБД - не завезли
18 trad
 
11.11.21
16:28
(17) + дарю
Функция ЗначениеИзСамойДлиннойСтрокиБД(СамыйДлинныйИД)
    рс = СоздатьОбъект("ODBCRecordset");
    Возврат рс.ВыполнитьСкалярный("select '" + СамыйДлинныйИД + "' [$Неопределенный]");
КонецФункции
19 Arbuz
 
11.11.21
16:45
(5) Колёса же не квадратные - не канон!
20 fisher
 
11.11.21
16:47
21 bigdenis22
 
11.11.21
16:53
(18) Приколол :) работает! Не ожидал я что так просто - ВыполнитьСкалярный("select '" + СамыйДлинныйИД + "' [$Неопределенный]");
слишком мало я пока знаю про скуль и прямые запросы.
22 Volodja
 
11.11.21
17:05
(17) Точно.1С++
23 trad
 
11.11.21
17:06
(22) она
24 Ёпрст
 
11.11.21
17:08
(23) давно хотел спросить, ты еще на 77 или уже на снеговике кодишь ? Или.. и там и там ?
25 trad
 
11.11.21
17:09
(24) там и там
26 Ёпрст
 
11.11.21
17:11
(25) ясна.
тут тоже, как-то пришлось клюшечный код вспоминать в одной конторе.
Огонь, как там всё шустро ездиет.
27 trad
 
11.11.21
17:13
чесно сказать, клюшки бы выкинул к черту.
Но перевести дистр.оптовую контору с жуткого 77 легаси, на что-то типа УТ - страшно подступаться
28 bigdenis22
 
11.11.21
17:26
(26) "Огонь, как там всё шустро ездиет."
вот и у нас клюшки вместе с снеговиками... есть места, где скорость работы и отклик интерфейса - на первом месте, вот 77 с прямыми запросами рулят.
(18) и да, спасибо за подарок :)
29 Ёпрст
 
11.11.21
17:27
(27) мы это уже проходили, давно, примерно так:
Решение учредителя - переходите на снеговик - ново/модно/молодежно. Ок босс!
Пара недель правила переноса, переделка конфы под потребности, перешли, работаем 8.1, прошел год, или 2 ? не помню.
Потом - переходите на базу вот этой конторы на УПП, ок босс! ,пара недель правила переноса,месяц на переделку конфы под наши алгоритмы,  + пара месяцев отладка на-ходу.Потом допиливание напильником и переделка под 8.3
Прошло лет N...
Теперь - переделывайте контору с которой перешли на то что у вас, ок..босс
И это, мот вам того, ерп2 вкорячить ? Ново/молодежно... ок босс

И никак не прервать этот замкнутый круг
30 Ёпрст
 
11.11.21
17:28
А если прикинуть, могли бы и на 77 комплексной ехать и ехать...
31 Ёпрст
 
11.11.21
17:28
Она правда, тоже перепиленная, но, это мелочи.
:)
32 bigdenis22
 
11.11.21
17:33
(29) а инфу о движениях из базы в базу при переходах - тоже тащили??? (на сколько я понимаю, там же наверняка не совместимые структуры?)
33 Ёпрст
 
11.11.21
17:44
(32) да, тащили. Так-то перенос только останков никого не устроил бы.
Изначально, при переходе с 77 в снеговик на часть незначимых доков просто лепили заглушки - типа клиентос/сумма и т.д без таб части.
Где-то и с таб частью.
34 Ёпрст
 
11.11.21
17:45
Грубо, у нас в отчетках по взаиморасчетам сразу было видно что/где когда..какой док и т.д и т.п..
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.