|
v7: Отменить Регистр.ХХХ.ПривязыватьСтроку(Ном) | ☑ | ||
---|---|---|---|---|
0
vcv
19.02.14
✎
09:03
|
Есть документ, в нём делаются движения по регистру Заявки. С привязкой движений к номеру строки. В конце процедуры проведения анализируются остатки заявки и, в соответствии с определенными критериями, могут списываться. При этом Регистр.Заявки.ПривязыватьСтроку(0) не срабатывает, движения продолжают делаться с последним ненулевым номером строки.
Как делать движения по регистру без привязки к номеру строки? |
|||
1
zak555
19.02.14
✎
09:05
|
не использовать
|
|||
2
vcv
19.02.14
✎
09:20
|
(1) В данной ситуации "не использовать" возможно, но, в общем случае, в ТиС формирование проводок по ряду регистров привязано к номерам строк, поэтому отказаться от привязки строк нежелательно. Ну и куча других соображений, когда привязка строк полезна.
|
|||
3
1Сергей
19.02.14
✎
09:29
|
(2) сначала делай движения без привязки к строкам, потом с привязками
|
|||
4
vcv
19.02.14
✎
10:00
|
(3) Очень геморройно. Попробуй представить, что тебе нужно определить, какие будут остатки по партиям после вызова глСписаниеПартийТМЦ(), но сделать это до вызова глСписаниеПартийТМЦ(). Сложно и черевато ошибками в дальнейшем сопровождении, такие объёмные алгоритмы реализовывать двумя разными методами, что бы одинаково работали.
|
|||
5
1Сергей
19.02.14
✎
10:13
|
(4) а разве глСписаниеПартийТМЦ делает привязку к строке?
|
|||
6
КонецЦикла
19.02.14
✎
10:14
|
Зачем нужно отвязывать? Используй по-другому данные
Еще как вариант - в конце движений пройтись update по таблице RA - делов-то... |
|||
7
Ёпрст
19.02.14
✎
10:15
|
(5)в типовом ТиСе нигде не нужна привязка строк и нигде это не используется.. можно смело забить на то, что туда пишется.
|
|||
8
1Сергей
19.02.14
✎
10:16
|
(7) я про что и говорю
|
|||
9
Fedor-1971
19.02.14
✎
10:21
|
(0) Попробуй записать движения перед последней операцией и не указывай в ней ПривязатьСтроку().
Вариант 2: возможно прокатит так Регистр.Заявки.ПривязыватьСтроку() - без указания номера строки. |
|||
10
vcv
19.02.14
✎
10:36
|
(5) Делает.
Но дело не в этом. Алгоритмы списания остатков при проведении в ТиС основаны на поддержании актуальности регистра. Когда ты по одной строке документа что-то списал, при списании по другой строке итоги будут уже с учетом предыдущего списания. Реализовать определение что будет списано без фактического списания (а делать движения по регистру нельзя, потому что появится привязка строк) - задача непростая и не хочется мелкую проблему решать черезмерно сложными средствами. (7) Используется. Смотри, например, из глРассчитатьЗначение ИначеЕсли (ИдЗначения = "Содержание") Тогда ТекДок = Рег.ТекущийДокумент(); Если (глЕстьРеквизитМнЧ(ИдЗначения, ТекДок.Вид()) = 1) И(Рег.НомерСтроки() <> 0) Тогда ТекДок.ПолучитьСтрокуПоНомеру(Рег.НомерСтроки()); Возврат ТекДок.Содержание; (9) Не указывать номер строки нельзя, обязательный параметр. Указывать ноль не получается, потому что 1С-ка это игнорирует, повторяя номер прошлой привязки. |
|||
11
vcv
19.02.14
✎
10:38
|
(6) Вариант. Из пушки по воробьям, особенно с учетом наличия как DBF, так и SQL баз, но всё же вариант.
|
|||
12
Fedor-1971
19.02.14
✎
10:48
|
А вообще без Регистр.Заявки.ПривязыватьСтроку(ном) для последней записи пробовал? Строка привязывается только при наличии указания привязать строку.
|
|||
13
vcv
19.02.14
✎
10:56
|
(12) Если один раз указал Регистр.Заявки.ПривязыватьСтроку(ном), все движения будут привязываться к указанной строке, пока не укажешь другую.
|
|||
14
DrZombi
гуру
19.02.14
✎
10:56
|
(10) Перепиши. Напиши свой "покер" с Блеком и со шлюхами :)
|
|||
15
DrZombi
гуру
19.02.14
✎
10:57
|
(12) Да он это понимает. Он не хочет переписывать то, что у него там наваял, кто-то и пытается все сделать малой кровью.
При этом такое чувство, что мы тут все Телепаты :) |
|||
16
vcv
19.02.14
✎
11:04
|
(14) Проще ставить какой-нибудь нереальный номер (-1 вполне канает) и учесть его в десятке мест конфигурации, где номер проверяется. Чем переписывать кусок в пару тысяч строк.
(15) "При этом такое чувство, что мы тут все Телепаты" :) Дык, коли пришел в ветку и чего-то непонял, задай наводящий вопрос. Я постарался объяснить, но со стороны виднее, конечно. Номер строки стараюсь везде ставить правильный, потому что облегчает потом внесение каких-то новых разрезов хотелок (измерений и ресурсов регистров, хитрых данных по документам в отчетах). С помощью номера строки можно связать движения регистра со строками документа и проще заполнять задним числом какие-то новшества и регистрах. Перепроводить нереально, уже более ста гигов только центральная база (с периферийками около 400 гигов). А тут вылазит неправильный номер строки. Спать мешает, навевает опасения, что когда-нибудь выйдет боком. |
|||
17
КонецЦикла
19.02.14
✎
11:08
|
(11) Не из пушки, а из снайперки
Быстро, точно, без шума и пыли |
|||
18
Fedor-1971
19.02.14
✎
11:29
|
(13) Объяви переменную, например, Перем Пустота; и передай оную в Регистр.Заявки.ПривязыватьСтроку(Пустота).
Проверил, будет счесце. |
|||
19
Ёпрст
19.02.14
✎
11:38
|
У тебя ТиС ?
Если да, то забей.. НомерСтроки там нужен только для правильного заполнения "псевдо проводок" в справочнике для выгрузки потом в бухгалтерию.. Можешь вырезать это всё к едрени фени.. |
|||
20
Ёпрст
19.02.14
✎
11:39
|
для оперативных итогов и регистров ЭТО нигде не используется.. вообще.
|
|||
21
vcv
19.02.14
✎
12:10
|
(19) У меня монстр, который в прошлом десятилетии был ТиС, сейчас уже больше смахивает на Ктулху.
Исследования показали, что Регистр.Заявки.ПривязыватьСтроку(0) означает, по всей видимости, количество строк документа. |
|||
22
1Сергей
19.02.14
✎
12:13
|
а так?
Регистр.Заявки.ПривязыватьСтроку(9999999999); |
|||
23
КонецЦикла
19.02.14
✎
12:14
|
Ну, еще так до кучи
Регистр.Заявки.ПривязыватьСтроку("ктулху"); |
|||
24
Fedor-1971
19.02.14
✎
12:22
|
(23) Любое некорректное значение, кроме пустой переменной, выставляет последнюю строку документа (или количество строк). Пустая переменная сбрасывает привязку строки или нужно изобрести способ передать функции значение "неопределено".
|
|||
25
vcv
19.02.14
✎
12:38
|
(22) А это мысль!
Волшебная фраза Регистр.Заявки.ПривязыватьСтроку(65536); решает проблему. На SQL, где LINENO_ описан как smallint. Для DBF нужно еще проверить. (24) У меня не получилось с пустой переменной. Тот же самое выходило, что и с нулём. Хотя это, возможно, мелкие отличия между DBF и SQL. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |