|
v7: ТиС не удается изменить константу Контроль отрицательных остатков ТМЦ | ☑ | ||
---|---|---|---|---|
0
Злопчинский
03.08.17
✎
15:07
|
..мутная история...
но интересно тем не менее: есть база ТиС в которой не удается поменять значение констант Константа.КонтрольОтрицательныхОстатков Константа.НомерРелиза вот такой код //******************************************* Процедура Сформировать() Сообщить("до: "+Константа.КонтрольОтрицательныхОстатков); Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.ПоКомпании; Сообщить("после: "+Константа.КонтрольОтрицательныхОстатков); КонецПроцедуры никаких ошибок не дает, но к изменению константы не приводит: до: По фирме после: По фирме такое ощущение, что либо сбой в файле констант (что очень сомнительно) либо что файл констант как-то кем-то хитро подредактирован. Ибо после его физического удаления - когда он создается заново - все отрабатывает нормально... собственно вопрос - почему не удается изменить значение константы? |
|||
1
Злопчинский
03.08.17
✎
15:08
|
..и как найти - почему?
|
|||
2
Базис
naïve
03.08.17
✎
15:09
|
Привет. В глобальнике глянь - 77 позволяет фильтровать запись констант программно.
|
|||
3
Базис
naïve
03.08.17
✎
15:10
|
Наверное, "ПриЗаписиКонстанты"
|
|||
4
Злопчинский
03.08.17
✎
15:13
|
(3) проверено. там проблем нет.
|
|||
5
Ёпрст
03.08.17
✎
15:15
|
(0) периодическая ?
|
|||
6
Ёпрст
03.08.17
✎
15:16
|
ну и это, 1sconst.cdx прибей что ле, если дбф база
|
|||
7
Злопчинский
03.08.17
✎
15:17
|
(5) нет
(6) не помогает |
|||
8
Ёпрст
03.08.17
✎
15:18
|
(7) ну найди в файле 1sconst эту запись и осмотри, че там
|
|||
9
Злопчинский
03.08.17
✎
15:19
|
как найти, с ID мало работал
|
|||
10
Хряк
03.08.17
✎
15:20
|
удали ея (или переименуй), добавь заново - все будет работать
есть такой глюк в константах по непонятным причинам |
|||
11
1dvd
03.08.17
✎
15:22
|
(9) dd (dds) файл смотри
|
|||
12
KishMish
03.08.17
✎
15:23
|
(0) а по Перечисление.СпособыКонтроляОстатковТМЦ.ПоКомпании это не по фирме?
|
|||
13
Злопчинский
03.08.17
✎
15:25
|
(11) не, как из
Константа.КонтрольОтрицательныхОстатков получить ID в 1SCONST.DBF ? |
|||
14
Злопчинский
03.08.17
✎
15:26
|
(12) к сабжу темы отношения не имеет, но ответ: нет, "по компании" это не "по фирме"
|
|||
15
Базис
naïve
03.08.17
✎
15:27
|
Прямым запросом - поля имя и ID из таблицы. Под рукой 77 нет, но там просто всё ,ты же знаешь.
|
|||
16
aka AMIGO
03.08.17
✎
15:28
|
(14) Какой Тип Константы? Перечисление?
|
|||
17
Злопчинский
03.08.17
✎
15:29
|
(16), да, перечисление
|
|||
18
Злопчинский
03.08.17
✎
15:29
|
(15) я в прямых туп
|
|||
19
Злопчинский
03.08.17
✎
15:31
|
(10) блин, сколько работаю - ни разу не сталкивался, сейчас попробую
|
|||
20
aka AMIGO
03.08.17
✎
15:34
|
Может, Латинские буквы затесались? :)
Работаешь под опенконфом? |
|||
21
Злопчинский
03.08.17
✎
15:35
|
(10) Попробовал.
Получилось. |
|||
22
Злопчинский
03.08.17
✎
15:36
|
(20) где лат.буквы затесались?
опенконф - работаю. там где проблема - опенкофа нет |
|||
23
aka AMIGO
03.08.17
✎
15:36
|
Вот и хорошо.
|
|||
24
Злопчинский
03.08.17
✎
15:37
|
(23) пока - все плохо.
почему код в (0) - не дает изменений в базе? |
|||
25
aka AMIGO
03.08.17
✎
15:37
|
(22) Имелось в виду - после точки печатал вручную, либо выбирал из списка опенконфа..
Ну, ладно, получилось - и заботу с плеч долой :) |
|||
26
aka AMIGO
03.08.17
✎
15:38
|
(24) Погодь малёк, я попробую у себя.
|
|||
27
Злопчинский
03.08.17
✎
15:38
|
(25) не, это неправильно
|
|||
28
Злопчинский
03.08.17
✎
15:39
|
подозрительно то, что такая проблема - на двух константах
. Константа.КонтрольОтрицательныхОстатков Константа.НомерРелиза . вариант из (10) - прокатил, но это не наш путь. |
|||
29
Злопчинский
03.08.17
✎
15:43
|
гуру, подскажите лучше как для
Константа.КонтрольОтрицательныхОстатков получить ID (который в 1SCONST.DBF) ? |
|||
30
aka AMIGO
03.08.17
✎
15:44
|
(28) Смотри.
https://i.paste.pics/f83c431f6655466b290d38d5777c93d6.png И это после твоего кода. Теперь - когда я жмакнул по константе - значение тут-же поменялось на "по Компании" т.е. окно списка констант должно быть обновлено Так что, имхо - всё у тебя путём, меняется |
|||
31
aka AMIGO
03.08.17
✎
15:46
|
вот после жмакания - если не веришь:
https://i.paste.pics/6f31c92c6a26476d1f77025bc0c389a7.png |
|||
32
Злопчинский
03.08.17
✎
15:48
|
(30) проблема в том - что у тебя - меняется, а у меня НЕ МЕНЯЕТСЯ. ни интерактивно, ни программно.
|
|||
33
aka AMIGO
03.08.17
✎
15:49
|
Ааа.. блин.. понял.. посмотрел в сабж твой. Извини
|
|||
34
aka AMIGO
03.08.17
✎
15:52
|
(32) глянь еще в "Описание структуры метаданных"
такие параметры? - Константа - Идентификатор "КонтрольОтрицательныхОстатков" - Синоним "Контроль отрицательных остатков ТМЦ" - Комментарий - Тип "Перечисление" - Вид "СпособыКонтроляОстатковТМЦ" - Длина "0" - Точность "0" - НеОтрицательный "0" - РазделятьТриады "0" - Периодический "0" - ОбластьРаспространения "ВсеИнформационныеБазы" |
|||
35
Злопчинский
03.08.17
✎
15:53
|
(34)
- Константа - Идентификатор "КонтрольОтрицательныхОстатков" - Синоним "Контроль отрицательных остатков ТМЦ" - Комментарий - Тип "Перечисление" - Вид "СпособыКонтроляОстатковТМЦ" - Длина "0" - Точность "0" - НеОтрицательный "0" - РазделятьТриады "0" - Периодический "0" - ОбластьРаспространения "ВсеИнформационныеБазы" 1 в 1 |
|||
36
Злопчинский
03.08.17
✎
15:54
|
(33) лучше (29) подскажи
|
|||
37
Злопчинский
03.08.17
✎
16:00
|
ууу, злыдни.. приходится по всяким помойкам лазить искать
|
|||
38
aka AMIGO
03.08.17
✎
16:00
|
(35) :(
(36) - не знаю, не получал ни разу, разве только в дбф заглянуть https://i.paste.pics/375b49938536d813e2157c0394452a27.png |
|||
39
aka AMIGO
03.08.17
✎
16:02
|
(38) + в 8-ке пользовал, и не раз, а в 7-ке вроде ни к чему было
|
|||
40
Злопчинский
03.08.17
✎
16:03
|
"<"+ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоКомпании)+">" = < 4K5 >
"<"+ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоФирме)+">" = < 4K2 > |
|||
41
Злопчинский
03.08.17
✎
16:05
|
это ID самого значения константы, то есть VALUE
. а как получить ID, соответсвующий константе как объекту? / то есть как получить именно вот этот 16W ? |
|||
43
aka AMIGO
03.08.17
✎
16:08
|
Через метаданные - никак?
|
|||
44
aka AMIGO
03.08.17
✎
16:17
|
Вообще-то можно прямо из дбф-файлика и взять.. Предварительно скопировав его, он может быть захвачен 1с-ом
|
|||
45
Злопчинский
03.08.17
✎
16:21
|
так.. походу такое злопство как в (0) проистекает из того, что в файлике констант есть несколько записей на один объект...
|
|||
46
Злопчинский
03.08.17
✎
16:22
|
ща... еще не одна бяка от Сергея Михайловича просто так не уходила...
|
|||
47
aka AMIGO
03.08.17
✎
16:24
|
(45) ничё се!.. :)
|
|||
48
Ёпрст
03.08.17
✎
16:24
|
select *
from 1sconst as Периодика where Периодика.objid = :ТС and Периодика.id = $ИсторияРеквизита.НужныйВидСправочника.НужныйРеквизитВЭтомСправочнике |
|||
49
Ёпрст
03.08.17
✎
16:24
|
Ид константы, или штатно, или через метадатаворк
|
|||
50
Злопчинский
03.08.17
✎
16:31
|
ТАК И ЕСТЬ!
Константа.КонтрольОтрицательныхОстатков https://content.screencast.com/users/Che66/folders/Jing/media/f0d3cf4d-ff55-4c13-9e2d-4afe85fec069/2017-08-03_1623.png (для константа.номеррелиза - аналогично!) видим что для константы присутствует две записи. ХОТЯ ДОЛЖНА БЫТЬ ОДНА . первая запись = ПО КОМПАНИИ вторая запись = ПО ФИРМЕ . в меню-операции-константы (и в "настройки параметров учета") показывается вторая запись (то есть СЧИТЫВАЕТСЯ ПОСЛЕДНЯЯ ЗАПИСЬ?) |
|||
51
Злопчинский
03.08.17
✎
16:33
|
то есть когда есть код
КонтрольОстатков = Константа.КонтрольОтрицательныхОстатков; то в КонтрольОстатков - сидит последняя считанная запись (? это так) |
|||
52
Вафель
03.08.17
✎
16:37
|
(51) Та на которую индекс указывает
|
|||
53
aka AMIGO
03.08.17
✎
16:37
|
(51) или только первая встреченная
|
|||
54
Злопчинский
03.08.17
✎
16:38
|
!!!
а вот когда пишем код Константа.КонтрольОтрицательныхОстатков = КакоеТоНовоеЗначение; то новое значение пишется в ПЕРВУЮ запись! (проверил!) |
|||
55
Злопчинский
03.08.17
✎
16:38
|
(52) а вот хрен! смотри (54)
|
|||
56
aka AMIGO
03.08.17
✎
16:39
|
(54) убирай скорей эту бяку, С.М. :)
|
|||
57
Базис
naïve
03.08.17
✎
16:39
|
Ты неправильную базу-то сохранил? ТиИ исправляет это?
|
|||
58
Ёпрст
03.08.17
✎
16:39
|
(55) посмотри, что в индексном файле.
|
|||
59
Ёпрст
03.08.17
✎
16:40
|
(57) ТиИ это никогда не исправляло.
|
|||
60
Ёпрст
03.08.17
✎
16:40
|
+58 через IDXView.exe
|
|||
61
Злопчинский
03.08.17
✎
16:44
|
Итого, картинки и значения
. ПО КОМПАНИИ = 4К5 ПО ФИРМЕ = 4К2 ПО УПР.АНАЛИТИКЕ = 4К3 . исходное: 1 запись = по компании 2 запись = по фирме если прочитать значения то получим 2 запись (и увидим ее в обработке настройка параметров учета) https://content.screencast.com/users/Che66/folders/Jing/media/f0d3cf4d-ff55-4c13-9e2d-4afe85fec069/2017-08-03_1623.png выполним код: Сообщить("до: "+Константа.КонтрольОтрицательныхОстатков); Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.ПоУпрАналиткие; Сообщить("после: "+Константа.КонтрольОтрицательныхОстатков); в табло увидим: . до: по фирме после: по фирме . а в базе увидим что ПЕРВАЯ запись изменилась (в соответсвии с присвоением по коду) https://content.screencast.com/users/Che66/folders/Jing/media/0b488e4b-5728-4bf3-a255-7b3a53275ce6/2017-08-03_1636.png и тут встает интересный вопрос а почему !_при чтении берется ОДНА ЗАПИСЬ ТАБЛИЦЫ а почему !_при записи используется ДРУГАЯ ЗАПИСЬ ТАБЛИЦЫ ??? |
|||
62
Ёпрст
03.08.17
✎
16:45
|
(61) всё из-за cdx файла. и задвоенной записи в 1sconst
|
|||
63
aka AMIGO
03.08.17
✎
16:45
|
cdx используется/не используется..
|
|||
64
Злопчинский
03.08.17
✎
16:48
|
(60) сейчас...
|
|||
65
Базис
naïve
03.08.17
✎
16:49
|
А выгрузка-загрузка оставит одно значение?
|
|||
66
Злопчинский
03.08.17
✎
16:50
|
(62) задвоенная запись - ПОНЯТНО!
но cdx - ведь ПОЗИЦИОНИРОВАНИЕ при чтении и при записи должно идти по ОДНОМУ И ТОМУ ЖЕ УКАЗАТЕЛЮ ? |
|||
67
Злопчинский
03.08.17
✎
17:04
|
А киньте кто в мыло [email protected] эту прогу IDXView.exe
кучу ччылок облазил - нет результата |
|||
68
Сияющий Асинхраль
03.08.17
✎
17:08
|
(0) Недавно пару дней угробил из-за того, что в ТиСе не мог поменять значение константы, ни программно, ни руками значение никак не менялось. Сделал полное тестирование базы, ничего не помогало. В итоге нашел где-то в нете подобный случай, где константу удалось привести в себя только заменой файла констант из старой копии базы. Мне помогло, попробуй, может и у тебя тот же случай...
|
|||
69
Масянька
03.08.17
✎
17:08
|
(66) Давно это было...
Я все-таки (не слушая умных людей) в одной программе попробовала многие-ко-многим. Через пару месяцев вылезла ошибка (не помню уже досконально) - именно считывание одной, а запись другой. Тоже - dbf. Не знаю - как реализовано в семерке. Очень бы хотелось глянуть. |
|||
70
Злопчинский
03.08.17
✎
17:14
|
(68) точно так же как у меня в этом случае.
в моем случае - причину нашли - две записи на константу вместо одной. непонятки с чтением/записью остались еще.. но лечить как минимум два способа. 1 способ. удалить константу и ввести ее заново в конфигураторе (НАДО ОСТОРОЖНО!, потому что для конст.контрольотрицостатков - пройдет норм, а для конст.номеррелиза - при неграмотных действиях поведет за особйо отработку ОбновленияИБ от начала времен (первый запуск), прочие траблы могут быть и для других констант) 2 способ. обрыть файл констант и удалить дубли руками. есть подозрение что Епрст про причину трабла (не дает исправлять) знал, но промолчал... ;-) |
|||
71
Злопчинский
03.08.17
✎
17:17
|
прогу получил. спсб.
сейчас посмотрю что в индексах если осилю |
|||
72
Ёпрст
03.08.17
✎
17:17
|
(70) А ?
про дубли в 1сконст ? Есть такое, сталкивался, только не с константами, а с периодикой в них. Правил ручками, прямым запросом и не задумывался. ЗЫ: вот в справочниках, дубли id справочника, можно было и штатно поиметь, на кубани раньше была ветка, как получить сей эффект. |
|||
73
Злопчинский
03.08.17
✎
17:18
|
но вот откуда такие дубли появились - ЭТО ОЧЕНЬ ИНТЕРЕСНО.
если чтение/запись/создание индекса для таких дублей предсказуемо та тоакую фишку можно использовать для блокировки изменения настроек... |
|||
74
Злопчинский
03.08.17
✎
17:20
|
(72) вот теперь и не с периодикой.
есть у меня подозрение что это не следствие сбоя, как мне сказали, а что кто-то там из приходящих пошаманил ручками.. ибо когда взялся за ремонт - быстро столкнулся с непоняткой и взял паузу (копию базы), сказал - найдете спеца - если то вопросов нет.. - спеца нашли (но ко мне за помощью один чел обращался, а спеца нашли другие люди из конторы) - "пришел, поправил за 5 минут". вот мне и подозрительно это... вдобавок ибо Архангельск.. самые спецы - в Арзхангельске? |
|||
75
Злопчинский
03.08.17
✎
17:25
|
такс..
записи дубли - в конце файла... https://content.screencast.com/users/Che66/folders/Jing/media/6b2fa0e4-3590-497f-b239-0c9e1fa7d93b/2017-08-03_1724.png |
|||
76
Злопчинский
03.08.17
✎
17:26
|
индекс - неуникальный в DD
|
|||
77
Злопчинский
03.08.17
✎
17:30
|
||||
78
Злопчинский
03.08.17
✎
17:33
|
видно, что в индексе есть две записи - первая в начале файла, вторая в конце файла.
. в качестве рабочей гипотезы примем следующее: 1. при записи пишет в ту запись, которая первая в индексе (типа перед записью позиционируемся на единственную запись, получаемцю по индексу), то есть для записи выбирается одна щзапись. 2. при чтении количество выбираемых записей неограничено и, похоже, что в качестве результата чтения берется ПОСЛЕДНЯЯ прочитанная по индексу запись... . как вам такое? |
|||
79
Злопчинский
03.08.17
✎
17:34
|
ну, вот.. не прошло и 20 лет как еще один секрет 1С 7.7 раскрыт!
ура, товарищи! |
|||
80
Злопчинский
03.08.17
✎
17:35
|
(72) поправить - не проблема. главное - понять и простить...
;-) |
|||
81
Злопчинский
03.08.17
✎
17:42
|
фича:
если дубль положить в правильную запись таблицы (в физическом следовании записей) - то можно сказать, что индекс построится _предсказуемо_: в индексе в дублирующихся записях первой записью будет запись с меньшим физ.номером записи (RecNO) - и здесь можно уже это юзать с "пользой", как например, хитрую защиту от от изменения настроек. так как настройки всегда применяться штатно будут "по чтению"... а изменение записи - ничем не поможет, так как изменяем первую запись, а применяться в работе будет всегда последняя... |
|||
82
Злопчинский
03.08.17
✎
17:43
|
фиг его знает... в данном моем случае то ли это сбой был, то ли преднамеренно кто-то так сделал - 100% не возьмусь утверждать, но имхается что не без вмешательства... ;-)
|
|||
83
Ёпрст
03.08.17
✎
17:44
|
(82) понаделай побольше записей с одним ид, для достоверности
|
|||
84
Злопчинский
03.08.17
✎
17:51
|
(83) попробую, но не прям сейчас.. убегаю
|
|||
85
Злопчинский
03.08.17
✎
23:14
|
(83) посоветовался со спецом по движку (ходжик) - смысла не вижу.. растолковал мне он... в зависимости от "контекста" для извлечения нужных записей применяются разные методы поиска в индексном файле. и результат (конкретная запись) могут быть разные....
. но фиг с вами... сделаю тестик "для достоверности" |
|||
86
Злопчинский
03.08.17
✎
23:15
|
а причина таких "дублей" которых не должно быть - это битые индексы часто или глюки железа
|
|||
87
Злопчинский
04.08.17
✎
01:50
|
(83) исключительно из-за пиетета... ;-)
ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоФирме) = 4K2 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоУпрАналитике) = 4K3 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоЮрЛицу) = 4K4 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоКомпании) = 4K5 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.НеКонтролировать) = 4K6 Генерим в константах вместо правильной одной записи значения константы несколько "неправильных" записей https://content.screencast.com/users/Che66/folders/Jing/media/1d4c3461-1273-4898-b4a7-caeb81786bfc/2017-08-04_0146.png |
|||
88
Злопчинский
04.08.17
✎
01:56
|
.. если попробовать прочитать значение константы - то должно получиться ПОСЛЕДНЕЕ (по индексному файлу), то есть "НеКонтролировать"
проверяю (делаю все вживую вместе с написанием поста): так и есть: https://content.screencast.com/users/Che66/folders/Jing/media/cca42bce-6bb5-450d-bea9-7a36c2ec658a/2017-08-04_0152.png индекс: https://content.screencast.com/users/Che66/folders/Jing/media/897b8419-8143-4016-ae37-78e500f03977/2017-08-04_0155.png |
|||
89
Злопчинский
04.08.17
✎
01:57
|
попробуем изменить значение константы, установить его в 4К4 = ПоЮрЛицу:
//******************************************* Процедура Сформировать() Сообщить("до: "+Константа.КонтрольОтрицательныхОстатков); Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.ПоЮрЛицу; Сообщить("после: "+Константа.КонтрольОтрицательныхОстатков); КонецПроцедуры |
|||
90
Злопчинский
04.08.17
✎
01:59
|
что должно получиться:
до: НеКонтролировать после: НеКонтролировать - то есть "трабла" - константа почему-то не поменялась.. (потому что мы ЧИТАЕМ и получим последнюю запись из индекса) |
|||
91
Злопчинский
04.08.17
✎
02:01
|
||||
92
Злопчинский
04.08.17
✎
02:06
|
.. что мы увидим в файле DBF - по идее мы увидим что _первая_ запись станет равна 4К4 (ПоЮрЛицу) - как мы присваивали константе..
проверяем... ЕСТЬ! https://content.screencast.com/users/Che66/folders/Jing/media/55b8ee2c-4ce1-47d1-a80b-36ff6251995a/2017-08-04_0204.png - то бишь при чтении мы позиционированы на одной записи, а при записи мы позиционированы на совсем другой... |
|||
93
Злопчинский
04.08.17
✎
02:08
|
и еще тестик, гифтик для Ёпрста...
вернем все взад, см. (87) https://content.screencast.com/users/Che66/folders/Jing/media/1d4c3461-1273-4898-b4a7-caeb81786bfc/2017-08-04_0146.png |
|||
94
Злопчинский
04.08.17
✎
02:16
|
..гифтик не получился.. хотел подшаманить индексный файо, чтобы первый запись с клбючом указывала не на первую запись а на третью например, тогда - по идее - при записи константы менялась бы не первая а третья запись в файле... не удалось - индексный файл не дает редактировать, а как так сделать - не знаю...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |