|
Странное поведение программы | ☑ | ||
---|---|---|---|---|
0
inmortal203
17.09.12
✎
10:03
|
Делаю обработку, которая вытаскивает данные из эксэля, затем записывает их в документ. Судя по логике все должно работать правильно, но происходят какие то чудеса. То есть все отлично заполняется, только в какой то определенный момент перестают рассчитываться цены. Пробовал разные таблички обработать, и каждый раз в новом месте цикл в котором подставляется цена перестает работать.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура, | ЦеныНоменклатурыСрезПоследних.Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних"; ВыборкаЦен = Запрос.Выполнить().Выбрать(); //Заполнение табличной части документа Если не отказ Тогда Для Каждого Строка из Товары Цикл НоваяСтрокаТовары=ДокументОбъект.Товары.Добавить(); НоваяСтрокаТовары.Номенклатура = Строка.Номенклатура; Проверка=НЕ ПустаяСтрока(НоваяСтрокаТовары.Номенклатура); Если Проверка Тогда Пока ВыборкаЦен.Следующий() Цикл Если НоваяСтрокаТовары.Номенклатура=ВыборкаЦен.Номенклатура Тогда НоваяСтрокаТовары.Цена=ВыборкаЦен.Цена; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; НоваяСтрокаТовары.ЕдиницаИзмерения = Строка.Номенклатура.ЕдиницаХраненияОстатков; НоваяСтрокаТовары.Коэффициент = 1; НоваяСтрокаТовары.Количество = Строка.Количество; НоваяСтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.НДС20; ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НоваяСтрокаТовары, ЭтотОбъект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(НоваяСтрокаТовары, ЭтотОбъект); КонецЦикла; КонецЕсли; ДокументОбъект.Записать(); |
|||
1
Нуф-Нуф
17.09.12
✎
10:05
|
отладчик не спасет?
|
|||
2
inmortal203
17.09.12
✎
10:05
|
Номенклатура вся заполняется на ура, но цены нет... в некоторых случаях может заполнить половину, иногда вообще 1-3 первых элемента.
|
|||
3
Maxus43
17.09.12
✎
10:05
|
>>только в какой то определенный момент
скорей всего в экселе где-то сбился тип в ячейке, и не заполняет нужные данные |
|||
4
Reset
17.09.12
✎
10:07
|
Для Каждого Строка из Товары Цикл
НоваяСтрокаТовары=ДокументОбъект.Товары.Добавить(); ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НоваяСтрокаТовары, ЭтотОбъект); Феерично |
|||
5
inmortal203
17.09.12
✎
10:07
|
секунду) я кое что проверю и проору с себя скорее всего))
|
|||
6
Reset
17.09.12
✎
10:08
|
Это феерично даже если "Товары" - это ТЗ, сформированная по экселю
|
|||
7
unregistered
17.09.12
✎
10:08
|
(0) А кто будет делать сброс выборки?
Перед циклом Пока ВыборкаЦен.Следующий() Цикл надо сделать ВыборкаЦен.Сбросить() А вообще код в (0) - редкостный бред. |
|||
8
МишКа
17.09.12
✎
10:09
|
Я бы вместо цикла по выборке запроса использовал НайтиСледующее(). И уж во всяком случае Сбросить() перед циклом.
|
|||
10
inmortal203
17.09.12
✎
10:11
|
нет, не проору) все норм...
обьясню поподробней. дело в том что у нас есть 2 филиала, наш (ГЛАВНЫЙ) и киевский. У нас свой сервер и база и у них так же. они присылают заказ поставщику в экселе и мы его вручную вбиваем. обработка - чтобы ускорить процесс. номенклатура по наименованию совпадает процентов на 90-95, поэтому пустые строки в выходной табл - это нормально. |
|||
11
Reset
17.09.12
✎
10:12
|
Все норм :\
Да нет там не единой "норм" строчки |
|||
12
Reset
17.09.12
✎
10:12
|
Даже на ошибки бессмысленно указывать
|
|||
13
unregistered
17.09.12
✎
10:13
|
Я не понял
Строка.Номенклатура - это строка, а не ссылка?.... А как тогда вообще там что-то работает? |
|||
14
inmortal203
17.09.12
✎
10:13
|
Сейчас попробую так... Я пока только учусь, так что пинок под зад не помешает)
код пока пишу как умею, эффективность и быстродействие в этом случае - не главное. главное чтоб был результат |
|||
15
Axel2009
17.09.12
✎
10:15
|
(0) сбрасывать надо выборку. если уж по другому не умеешь
|
|||
16
Alex S D
17.09.12
✎
10:16
|
а сколько у вас типов цен?
|
|||
17
Chin
17.09.12
✎
10:16
|
(0) Способ поиска цен "оригинальный"... смтр. (7) и (8).
Лично я бы запихнул ТЗ в запрос и там левым соединением получил для каждой строчки цену, а результат сразу бы забросил в ТЧ документа. |
|||
18
Бледно Золотистый
17.09.12
✎
10:16
|
(0) А ТипЦен только один?
|
|||
19
Reset
17.09.12
✎
10:17
|
(14) Ты напиши хотя бы, что такое "Товары","ДокументОбъект". Понять хотя бы, что происходит
|
|||
20
Alex S D
17.09.12
✎
10:17
|
где отбор в запросе? и че за дурацкий перебор цен в цикле? типа присвоить хоть какую-нибудь.. бред полный
|
|||
21
unregistered
17.09.12
✎
10:19
|
(17) >> я бы запихнул ТЗ в запрос и там левым соединением получил для каждой строчки цену, а результат сразу бы забросил в ТЧ документа.
Метод хорош, когда известен тип цены. А если цен на одну номенклатуру несколько, то получим по несколько строк для каждой номенклатуры. Автор же выгребает первую попавшуюся цену. Что есть бред. |
|||
22
k1us181b
17.09.12
✎
10:19
|
Для Каждого Строка из Товары Цикл - Товары переименуй для начала
|
|||
23
Бледно Золотистый
17.09.12
✎
10:19
|
(21)Таки последнюю цену гребет
|
|||
24
Бледно Золотистый
17.09.12
✎
10:20
|
(23)Туплю, первую попавшуюся
|
|||
25
Reset
17.09.12
✎
10:20
|
(23) Произвольного типа
|
|||
26
pessok
17.09.12
✎
10:23
|
сделай запрос по-человечески, человек. каждый раз полностью обходить типы цен и искать совпадение - это аллес... ну и сбрасывать выборку, если уж так. а вообще - пакетным запросом, пихай своб ТЗ из экселя в ВТ, потом соединяй слева с ценами и выгружай в ТЧ
|
|||
27
unregistered
17.09.12
✎
10:23
|
(24) >> первую попавшуюся + "в выборке".
А какая она там реально в регистре - фиг его знает. Если на номенклатуру устанавливалось пять типов цен, то на каком месте в выборе будет каждая из них в таблице среза последних однозначно не определено. |
|||
28
Chin
17.09.12
✎
10:25
|
(21) Судя по всему у него один тип цены... Хотя я и не телепат...
|
|||
29
inmortal203
17.09.12
✎
10:32
|
Сброс однозначно помог, спасибо) Теперь буду хоть это знать.
Тип цен один - поэтому над этим замарачиваться не стоит. Пока оставлю все так, а как подымусь на новый уровень, все что сделал буду конечно совершенствовать. |
|||
30
Axel2009
17.09.12
✎
10:34
|
(29) если успеешь =)
|
|||
31
Нуф-Нуф
17.09.12
✎
10:35
|
отладчик уже предлагали?
|
|||
32
unregistered
17.09.12
✎
10:38
|
(29) >> как подымусь на новый уровень, все что сделал буду конечно совершенствовать.
Все так думают. А по факту ни когда ни кто ни чего не переделывает до тех пор, пока в этом не возникнет насущная необходимость (что-то надо будет изменить/переделать или вдруг возникают ошибки - в твоем случае, например, добавится второй тип цен и обработка начнет косячить). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |