|
|
|
v7: Проблема | ☑ | ||
|---|---|---|---|---|
|
0
Ksardas
18.04.12
✎
09:28
|
Здравствуйте , стоит 7.7 конфигурация альфа-авто: Автозапчасти+автосервис.Проблема такая. Есть Приходные накладные в которых есть товар , цена сумма и тд. Так вот мне надо добавить Разницу , это ЦенаПрихода/ЦенуЗаказа.
В Приходной есть реквизит ДокОснование(ЗаказПоставщику, РасходнаяНакладная, ТоварныйЧек). Пробовал вот так: ДокОсн=ДокументОснование; ВидОсн=ДокОсн.Вид(); тз = СоздатьОбъект("ТаблицаЗначений"); //сюда заказ выгружаем Если ВидОсн="ЗаказПоставщику" тогда ДокОсн.ВыгрузитьТабличнуюЧасть(тз); КонецЕсли; Потом при выбори строк в приходной Если тз.НайтиЗначение(Товар,НомСтр,Товар) = 1 Тогда ЦенаЗак= тз.ПолучитьЗначение(НомСтр,"Цена"); КонецЕсли; ошибка номер за приделами значения! В чем ошибка или может можно как то по другому сделать? |
|||
|
1
zak555
18.04.12
✎
09:30
|
перед поиском
НомСтр = 0; |
|||
|
2
zak555
18.04.12
✎
09:31
|
> Разницу , это ЦенаПрихода/ЦенуЗаказа
это не разница, а отношение |
|||
|
3
zak555
18.04.12
✎
09:31
|
> В Приходной есть реквизит ДокОснование(ЗаказПоставщику, РасходнаяНакладная, ТоварныйЧек)
три реквизита документа оснований ? |
|||
|
4
Ksardas
18.04.12
✎
09:34
|
Не так выразился, отношение. Тип реквизита просто документ. Но ввод на основании эти 3.
|
|||
|
5
zak555
18.04.12
✎
09:35
|
а теперь ещё раз и всё по-русски
|
|||
|
6
Ksardas
18.04.12
✎
09:35
|
НомСтр=0 стоит
|
|||
|
7
Шапокляк
18.04.12
✎
09:37
|
тз.НайтиЗначение(Товар,НомСтр,"Товар")?
|
|||
|
8
Ksardas
18.04.12
✎
09:39
|
Хм недавно занимаюсь так что по "русски" врятли получится ,но как смогу=)Документ.ПриходнаяНакладная есть реквизит ДокументОснование тип реквизита документ. Там же где все реквизиты табличной части и шапки есть Ввод на основание, там галки стоят на основании чего и основание для чего, так вот там стоят галки на основании ЗаказПоставщику, РасходнаяНакладная, ТоварныйЧек.
|
|||
|
9
Ksardas
18.04.12
✎
09:41
|
Да не в кавычках дела просто суда не так копирнул ошибка Номер за приделами значения.
ВыбратьСтроки(); НомСтр=0; Пока ПолучитьСтроку()=1 Цикл Если тз.НайтиЗначение(Товар,НомСтр,"Товар") = 1 Тогда Если НомСтр>0 Тогда Кофициент = тз.ПолучитьЗначение(НомСтр,"Цена"); КонецЕсли; КонецЕсли; |
|||
|
10
ЧеловекДуши
18.04.12
✎
09:45
|
(9) НомСтр=0;
Вынеси это в сам цикл, ты хоть воспользуйся синтаксис-помощьником, там описано, что будет, если свой "НомСтр" содержит какое либо число, отличное от нуля:) |
|||
|
11
Ksardas
18.04.12
✎
09:45
|
и так пробовал не помогло
|
|||
|
12
zak555
18.04.12
✎
09:45
|
сделай без обхода строк
|
|||
|
13
ЧеловекДуши
18.04.12
✎
09:47
|
+ алгоритм гуано, в документе могут быть, к примеру 10 строк ли две (2) одинакового товару.
Твой поиск даст только всегда первый найден :) У вас шо, нет партии поставки? :) |
|||
|
14
Ksardas
18.04.12
✎
09:47
|
zak555 это как ? Мне надо еще на печатную форму в приходной выводить.
|
|||
|
15
Ksardas
18.04.12
✎
09:49
|
ЧеловекДуши Есть регистр заказы поставщикам пробовал через найти движения документа тоже не получилось =) , есть так же реквизит партии в приходной
|
|||
|
16
povar
18.04.12
✎
09:50
|
Пока ПолучитьСтроку()=1 Цикл
Если тз.НайтиЗначение(Товар,НомСтр,"Товар") = 1 Тогда Кофициент = тз.ПолучитьЗначение(НомСтр,"Цена"); НомСтр=0; |
|||
|
17
ЧеловекДуши
18.04.12
✎
09:50
|
+ (9) А это что?
Если НомСтр>0 Тогда Кофициент = тз.ПолучитьЗначение(НомСтр,"Цена"); КонецЕсли; зачем ты проверяешь на "НомСтр>0"? Оно всегда отлично от нуля :) (14) Ну это ты загнул, читай две жёлтые книги по 1С и просветляйся :) |
|||
|
18
Ksardas
18.04.12
✎
09:53
|
Рег = СоздатьОбъект("Регистр.ЗаказыПоставщикам");
Если Проведен() = 1 Тогда Рег.ВыбратьДвиженияДокумента(Текущийдокумент()); Пока Рег.ПолучитьДвижение() = 1 Цикл ТекДок = рег.ЗаказПост; ТекДок.ВыбратьСтроки(); Пока ТекДок.ПолучитьСтроку() = 1 Цикл Заказ.НоваяСтрока(); Заказ.Товар=ТекДок.Товар; Заказ.Код=ТекДок.Товар.Код; Заказ.ЕТК=ТекДок.Товар.КаталНомер; Заказ.Цена=ТекДок.Цена; КонецЦикла; КонецЦикла; КонецЕсли; Он находил только некоторые позиции , а большинство не находил вообще .. |
|||
|
19
ЧеловекДуши
18.04.12
✎
09:53
|
(15) И каким ты образом ищешь движения документа ;) ?
Используй запросы, а именно, для тебя есть мастер запросов, для новичков помогает и для бывалых тоже :) |
|||
|
20
ЧеловекДуши
18.04.12
✎
09:54
|
(18) весь код в топку, используй запросы :)
|
|||
|
21
Ksardas
18.04.12
✎
09:55
|
ЧеловекДуши ну про печатную форму я имел виду что в этом же цикле
ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл я вывожу все на печать по приходной. а если сделать другой цикл то как тогда я буду все вместе выводить ? или я опять фигню сморозил =)) |
|||
|
22
ЧеловекДуши
18.04.12
✎
09:56
|
+(18) ты хоть понимаешь, что записей по регистру может быть столько же, сколько строк в документе, а ты еще и цикл в цикле проходишь, т.е. по сути должно все дублироваться :)
|
|||
|
23
ЧеловекДуши
18.04.12
✎
09:57
|
(21)Ты сначала получи, то что хочешь, а потом уже думай про печатную форму :)
Я же сказал, используй мастер запросов и поймешь, как делать печатную форму. |
|||
|
24
Ksardas
18.04.12
✎
09:58
|
Ну тз можно свернуть =))
Тогда вопрос как мне в запросе указать например что мне нужны детали именно из этого заказа ,заказов может быть несколько а приход 1.Я же запрос делаю с Даты по дату. |
|||
|
25
ЧеловекДуши
18.04.12
✎
09:58
|
+(21) Ты вообще сколько времени программируешь на 1С?
Кем ты по специальности? И в каких версиях 1С ты программировал? (уверенно) |
|||
|
26
AntiBuh
18.04.12
✎
09:58
|
а попробуй НомСтр=0 поставить прям перед самим НайтиЗначение
|
|||
|
27
ЧеловекДуши
18.04.12
✎
09:59
|
(24)Ты мастер запускал?
|
|||
|
28
Ksardas
18.04.12
✎
10:00
|
Занимаюсь месяца полтора раньше не программировал , по специальности информатик юрист =)), Мастером не пользовался так писал =)
|
|||
|
29
ЧеловекДуши
18.04.12
✎
10:00
|
+(24) Если в запросе указать условие "Текущийдокумент = твоему", то все побоку, будет обработан только твой документ :)
|
|||
|
30
Ksardas
18.04.12
✎
10:02
|
Что то вроде условие Док=ТекущийДокумент(); ?
|
|||
|
31
ЧеловекДуши
18.04.12
✎
10:02
|
(28)Тогда прочти сначала, про две жёлтые книги, про язык 1С, и с чем его едят. Запросы во второй книге.
Как тебя взяли на работу? :)... ептью... юрист-программист :DDDDDD Куда катится мир :( Учись |
|||
|
32
ЧеловекДуши
18.04.12
✎
10:03
|
(30)Нет типо так
Док = Регистр.Твой.Текущийдокумент; Условие(Док = НекТекДок); |
|||
|
33
Ksardas
18.04.12
✎
10:06
|
Лучше через регистр остатки Товаров ?Так меня и не программистом взяли, я типо системный программирую еще и по судам шастаю 3 в 1 =)
|
|||
|
34
ЧеловекДуши
18.04.12
✎
10:07
|
+(32) НекТекДок - переменная, которая содержит ссылку на твой документ, по которому тебе нужно сделать отбор.
Даты в запросе тоже лучше указывать, это же 1С, её надо знать, логика в некоторых местах попросту отсутствует :) + Не забывай в запросе использовать функции, типо сумма, приход, расход |
|||
|
35
povar
18.04.12
✎
10:07
|
(33) нихера ты бабла рубишь...
|
|||
|
36
ЧеловекДуши
18.04.12
✎
10:07
|
(33)Лихо, сколько платят человеку - параходу?
|
|||
|
37
povar
18.04.12
✎
10:07
|
+(35) сделаю (0) за 5000 руб.
|
|||
|
38
Ksardas
18.04.12
✎
10:18
|
В том том то и дел что не фига не рублю , это для опыта ,можно сказать ищу себя
|
|||
|
39
Ksardas
18.04.12
✎
10:18
|
ЧеловекДуши даже сказать стыдно =)
|
|||
|
40
Ksardas
18.04.12
✎
13:55
|
Я в правильном направлении вообще мыслю ?
ДокПрих=ТекущийДокумент(); Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= "//{{ЗАПРОС |Период с ДатаДокОсн по ДатаДокОсн; |Тов=Регистр.ЗаказыПоставщикам.ЗаказПост.Товар; |Док=Регистр.ЗаказыПоставщикам.ЗаказПост.ТекущийДокумент; |Кол=Регистр.ЗаказыПоставщикам.ЗаказПост.Количество; |Цена=Регистр.ЗаказыПоставщикам.ЗаказПост.Цена; |Функция КолРасход=Расход(Кол); |Группировка Тов без групп; |Группировка Док; |Условие(Док=ДокПрих); |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Сообщить("Не выполнился запрос"); СтатусВозврата(0); Возврат; КонецЕсли; Пока Запрос.Группировка(1)=1 Цикл Пока Запрос.Группировка(2)=1 Цикл ТоварЗак=Запрос.Тов; КодЗак=Запрос.Тов.Код; ЕткЗак=Запрос.Тов.Етк; ЦенаЗак=Запрос.Цена; КонецЦикла; Заказ.НоваяСтрока(); Заказ.Товар=ТоварЗак; Заказ.Код=КодЗак; Заказ.ЕТК=ЕткЗак; Заказ.Цена=ЦенаЗак; КонецЦикла; |
|||
|
41
Mikeware
18.04.12
✎
14:05
|
(31) логично. "Юрист _минус_ программист"
|
|||
|
42
Ksardas
19.04.12
✎
11:23
|
Блин беда. Не могу задать условие чтобы запрос искал детали именно по этой приходной накладной .
Пробовал Условие(Док = ДокОснование); не чего не находит ДокОснование реквизит шапки приходной. Условие(Док =ПоЗаказу); ПоЗаказу- Реквизит табличной части в нем дата и номер заказ. Выдает только несколько деталей из прихода на пример 10 а их в приходной 60... |
|||
|
43
Ksardas
19.04.12
✎
11:40
|
Получается так что детали только с одного заказа , а в приходной могут быть детали с разных заказов ...
|
|||
|
44
Ыщъ
19.04.12
✎
11:56
|
(41) Не котируется.
Надо: "Юрист + Бетонщик - Программист" |
|||
|
45
Ksardas
19.04.12
✎
13:27
|
Дезинформировали вы меня , все оказалось гораздо проще и запрос писать не надо...
ПоЗаказу.ВыгрузитьТабличнуюЧасть(ТЗ); НомСтр = 0; Если ТЗ.НайтиЗначение(Товар,НомСтр,"Товар") = 1 Тогда ЦенаЗак= ТЗ.ПолучитьЗначение(НомСтр,"Цена"); Иначе ЦенаЗак = 0; КонецЕсли; |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |