|
Как из регистра сведений вытащить данные если данные поиска не по формату | ☑ | ||
---|---|---|---|---|
0
Shur1cIT
14.03.17
✎
15:25
|
Нужно из реристра сведений ПервоначальныеСведенияОСБухгалтерскийУчет
вытащить ОС по инвентарному номеру, инвентарный номер в регистре пресутствует как 00101398 так и 00001398 , а в excel откуда загружаю значение 1398, соответственно тупо LIKE применять нельзя вопрос как наиболее корректно и быстро получить мне основное средство из регистра? |
|||
1
Одинесю
14.03.17
✎
15:27
|
(0) Главное без запятых надо.
|
|||
2
Naf2017
14.03.17
✎
15:30
|
добавь лидирующие нули
|
|||
3
Shur1cIT
14.03.17
✎
15:31
|
(0) у меня вариант только циклом убирая нули у инвентарного номера в начале и сравнивать
|
|||
4
2dolist
14.03.17
✎
15:31
|
инвентарный номер в регистре пресутствует как 00101398 так и 00001398 , а в excel откуда загружаю значение 1398
подробнее плз |
|||
5
Shur1cIT
14.03.17
✎
15:32
|
(2) тут еще одно условие длинна инвентарного номера разная
excel руками набили |
|||
6
2dolist
14.03.17
✎
15:33
|
1398 должен в конечном итоге определиться как оба 00101398 и 00001398 или как первое/последнее попавшееся из них?
|
|||
7
Shur1cIT
14.03.17
✎
15:34
|
(6) толжен определяться 00001398 так как следом может идти номер 101398 для ОС под инв номером 00101398
|
|||
8
2dolist
14.03.17
✎
15:34
|
возьми просто запросом пульни с нечётким отбором по строке
|
|||
9
2dolist
14.03.17
✎
15:35
|
(7) а, ну тогда добей лидирующими нулями просто
|
|||
10
Одинесю
14.03.17
✎
15:36
|
(3) Посчитать количество символов в exсel, взять нужное количество справа у инвентарника в 1с, сравнить.
|
|||
11
piter3
14.03.17
✎
15:37
|
СтрЗаменить("00001398","0","")
|
|||
12
h-sp
14.03.17
✎
15:40
|
(11) там число в екселе
|
|||
13
2dolist
14.03.17
✎
15:40
|
(11)
СтрЗаменить("00001098","0","") = 198 |
|||
14
Shur1cIT
14.03.17
✎
15:41
|
если в цикле проблем нет убираем везде нули и сравниваем хотя тут тоже может быть засада попадеться номер 00000198 и приехали....
|
|||
15
2dolist
14.03.17
✎
15:42
|
(14) а в чём проблема написать цикл, который сначала к данным, загруженным из экселя добавляет лидирующие нули до нужного, а потом просто запросом сравнивать
|
|||
16
Shur1cIT
14.03.17
✎
15:43
|
(14) в цикле собирался только не везде нули убирать , а только слева, (15) у нас длинна инвентарных номеров в 1с разная
|
|||
17
singlych
14.03.17
✎
15:43
|
Формат(ЧислоИзExcel, "ЧЦ=8; ЧВН=; ЧГ=")
|
|||
18
Shur1cIT
14.03.17
✎
15:46
|
(15) http://s19.radikal.ru/i192/1703/a0/51229dcb0499.jpg
длинна разная опять же тупо добить неполучиться думаю только цикл остаёться по РС ((( |
|||
19
Shur1cIT
14.03.17
✎
15:47
|
(18) это скриншот из 1с был
|
|||
20
2dolist
14.03.17
✎
15:48
|
(18) тогда да. Делать выборку, её перебирать и по алгоритму урезать лидирующие нули, записывать в нужном виде.
|
|||
21
piter3
14.03.17
✎
15:50
|
(13) нет
|
|||
22
2dolist
14.03.17
✎
15:53
|
(21) ок
СтрЗаменить("00001098","0","") = "198" |
|||
23
2dolist
14.03.17
✎
15:54
|
(21) на что спорим ;)
|
|||
24
piter3
14.03.17
✎
15:55
|
(23) покажи
|
|||
25
mistеr
14.03.17
✎
15:56
|
(18) Сначала убрать, потом добить.
Не нужен цикл. |
|||
26
2dolist
14.03.17
✎
15:57
|
(24) что покажи?
|
|||
27
piter3
14.03.17
✎
15:57
|
(26) скрин
|
|||
28
Shur1cIT
14.03.17
✎
15:57
|
(25) добивать до какой величины? длинна инвентаризационног номера в 1с разная http://s19.radikal.ru/i192/1703/a0/51229dcb0499.jpg
|
|||
29
2dolist
14.03.17
✎
15:58
|
(27) а так не понятно?
|
|||
30
azernot
14.03.17
✎
16:00
|
ДлинаНомераВРегистре = Метаданные.РегистрыСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.Ресурсы.ИнвентарныйНомер.Тип.КвалификаторыСтроки.Длина;
МассивПотенциальныхНомеров = Новый Массив(); Если ТипЗнч(НомерИзЭксель) = Тип("Число") Тогда СтрИнвентарныйНомер = Формат(НомерИзЭксель,"ЧГ="); Иначе СтрИнвентарныйНомер = СокрЛП(НомерИзЭксель); КонецЕсли; Пока СтрДлина(СтрИнвентарныйНомер)<ДлинаНомераВРегистре Цикл СтрИнвентарныйНомер = "0"+СтрИнвентарныйНомер; МассивПотенциальныхНомеров.Добавить(СтрИнвентарныйНомер); КонецЦикла; Запрос Выбрать .. из ПервоначальныеСведенияОСБухгалтерскийУчет ГДЕ ИнвентарныйНомер В (&МассивПотенциальныхНомеров) |
|||
31
DrZombi
гуру
14.03.17
✎
16:02
|
(0) Цикл наше все.
Либо Инвентарный номер делать отдельным реквизитом. При этом стандартный оставить на растерзание пользователям :) |
|||
32
2dolist
14.03.17
✎
16:02
|
(28) вообще, есть 2 самых простых варианта. Либо везде урезать лидирующие нули, либо везде добавлять до какого-то количества.
Урезать надёжнее потому что мало ли что там потом введут или что прочтётся из экселя. |
|||
33
azernot
14.03.17
✎
16:05
|
+(30)
Перед циклом вставить МассивПотенциальныхНомеров.Добавить(СтрИнвентарныйНомер); |
|||
34
2dolist
14.03.17
✎
16:11
|
(30) а если там наоборот больше нулей, чем нужно?
|
|||
35
azernot
14.03.17
✎
16:16
|
(34) Ну уговорил.
ДлинаНомераВРегистре = Метаданные.РегистрыСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.Ресурсы.ИнвентарныйНомер.Тип.КвалификаторыСтроки.Длина; МассивПотенциальныхНомеров = Новый Массив(); Если ТипЗнч(НомерИзЭксель) = Тип("Число") Тогда СтрИнвентарныйНомер = Формат(НомерИзЭксель,"ЧГ="); Иначе СтрИнвентарныйНомер = Прав(СокрЛП(НомерИзЭксель),ДлинаНомераВРегистре); КонецЕсли; МассивПотенциальныхНомеров.Добавить(СтрИнвентарныйНомер); Пока СтрДлина(СтрИнвентарныйНомер)<ДлинаНомераВРегистре Цикл СтрИнвентарныйНомер = "0"+СтрИнвентарныйНомер; МассивПотенциальныхНомеров.Добавить(СтрИнвентарныйНомер); КонецЦикла; Запрос Выбрать .. из ПервоначальныеСведенияОСБухгалтерскийУчет ГДЕ ИнвентарныйНомер В (&МассивПотенциальныхНомеров) |
|||
36
mistеr
14.03.17
✎
16:43
|
(28) Ну если все так запущено, то пусть руками набивают. Будет им урок.
|
|||
37
k1noshkin
14.03.17
✎
16:49
|
(0) В экселе ничего править не надо, просто в коде добавь, чтобы инвентарный номер из экселя до 8 знаков нулями слева дополнялся, а потом уже с регистром сравнивай.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |