![]() |
![]() |
![]() |
|
Условие | ☑ | ||
---|---|---|---|---|
0
myr4ik07
13.10.14
✎
15:07
|
Имею
НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); НовыйДокумент.Дата = РабочаяДата; НоваяСтрокаТипЦен = НовыйДокумент.ТипыЦен.Добавить(); НоваяСтрокаТипЦен.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); Для Каждого КолонкаПродажнаяЦена Из Товары Цикл НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Номенклатура = КолонкаПродажнаяЦена.Номенклатура; НоваяСтрокаТовары.Цена = КолонкаПродажнаяЦена.ЦенаПродажная; КонецЦикла; Если НоваяСтрокаТовары.Цена <> 0 Тогда НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; мне вот здесь Если НоваяСтрокаТовары.Цена <> 0 Тогда как то нужно узнать, что если значение НоваяСтрокаТовары.Цена будет не ноль тогда выполнит запись, а если значение 0 тогда пропуск Помогите пожалуйста додумать, спасибо. |
|||
1
myr4ik07
13.10.14
✎
15:08
|
А то выходит так, что в конце цикла данные имеют число 0 и все ) а раньше то числа имели больше 0 ) по цикле )
|
|||
2
pessok
13.10.14
✎
15:08
|
но у тебя ж в цикле создается дофига строк. проверять по последней? или тебе нужно проверить, что если есть ХОТЯ БЫ ОДНА строка без цены - не записывать?
|
|||
3
Ник второй
13.10.14
✎
15:08
|
У тебя в таблице "Товары" явно может быть не одна строчка. ПОлучается необходимо если ПОСЛЕДНЯЯ строчка с ценой отличной от нуля, то документ записывать, а в обратном случае "пропускать"? И что такое "пропускать" - yне записывать?
|
|||
4
pessok
13.10.14
✎
15:10
|
Если НовыйДокумент.Товары.Найти(0, "Цена") = Неопределено Тогда НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли
а лучше в самом цикле делать Возврат если цена = 0 |
|||
5
myr4ik07
13.10.14
✎
15:10
|
) как это объяснить )
короче строк может быть 10 шт, и если условие находит пустую строку (0) тогда не записывать, а если след. строка в ней 1 или еще то то тогда записывать и т.д. до конца последней строки |
|||
6
pessok
13.10.14
✎
15:11
|
Для Каждого КолонкаПродажнаяЦена Из Товары Цикл
Если КолонкаПродажнаяЦена.ЦенаПродажная = 0 Тогда Предупреждение("Кривые цены в документе загрузки!"); Возврат; КонецЕсли; НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Номенклатура = КолонкаПродажнаяЦена.Номенклатура; НоваяСтрокаТовары.Цена = КолонкаПродажнаяЦена.ЦенаПродажная; КонецЦикла; НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); |
|||
7
myr4ik07
13.10.14
✎
15:11
|
(3) под проуск имею ввиду не выпонять
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); |
|||
8
Ник второй
13.10.14
✎
15:11
|
Естьстрочки = Ложь;
Для Каждого КолонкаПродажнаяЦена Из Товары Цикл Если НоваяСтрокаТовары.Цена = 0 Тогда Продолжить; КонецЕсли; Естьстрочки = Истина; НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Номенклатура = КолонкаПродажнаяЦена.Номенклатура; НоваяСтрокаТовары.Цена = КолонкаПродажнаяЦена.ЦенаПродажная; КонецЦикла; Если ЕстьСтрочки Тогда НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; |
|||
9
pessok
13.10.14
✎
15:12
|
(8) судя по (5) мы вангуем что-то не то :)
|
|||
10
Kamas
13.10.14
✎
15:13
|
НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
НовыйДокумент.Дата = РабочаяДата; НоваяСтрокаТипЦен = НовыйДокумент.ТипыЦен.Добавить(); НоваяСтрокаТипЦен.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); Для Каждого КолонкаПродажнаяЦена Из Товары Цикл Если КолонкаПродажнаяЦена.ЦенаПродажная>0 тогда НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Номенклатура = КолонкаПродажнаяЦена.Номенклатура; НоваяСтрокаТовары.Цена = КолонкаПродажнаяЦена.ЦенаПродажная; Конецесли; КонецЦикла; попытка НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); исклучение НовыйДокумент.Записать() конецпопытки; |
|||
11
myr4ik07
13.10.14
✎
15:13
|
(9) та да ))
|
|||
12
Ник второй
13.10.14
✎
15:13
|
(8) БОлее корректный код:
Естьстрочки = Ложь; Для Каждого КолонкаПродажнаяЦена Из Товары Цикл Если КолонкаПродажнаяЦена.Цена = 0 Тогда Продолжить; КонецЕсли; Естьстрочки = Истина; НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Номенклатура = КолонкаПродажнаяЦена.Номенклатура; НоваяСтрокаТовары.Цена = КолонкаПродажнаяЦена.ЦенаПродажная; КонецЦикла; Если ЕстьСтрочки Тогда НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; |
|||
13
Ник второй
13.10.14
✎
15:13
|
(11) Ну а что надо?
|
|||
14
pessok
13.10.14
✎
15:14
|
(13) вообще моя внутренняя Ванга считает, что истина близка к (12), т.е. записать только непустые строки в документ
|
|||
15
myr4ik07
13.10.14
✎
15:14
|
(13) ща проверю, еще не знаю )
|
|||
16
myr4ik07
13.10.14
✎
15:15
|
(14) да да, не пустые строки нужно
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); а все остальные пускай пропускают этот код НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); |
|||
17
Kamas
13.10.14
✎
15:15
|
(12) ЕстьСтрочки Заменим на НовыйДокумент.Товары.Кличество()>0
|
|||
18
pessok
13.10.14
✎
15:16
|
(16) тебе важно понять сейчас, что НовыйДокумент.Записать() - это запись документа, а не строк, хм. В общем код из (12) подойдет
|
|||
19
Ник второй
13.10.14
✎
15:16
|
(17) Суть не изменится, но мне больше мой подход нравится.
|
|||
20
pessok
13.10.14
✎
15:17
|
(19) ну типа лишняя сущность, нафиг она нужна. в целом то одно и то же
|
|||
21
Kamas
13.10.14
✎
15:17
|
(19) лишние переменные которые так легко забываются
|
|||
22
Ник второй
13.10.14
✎
15:18
|
(21) Где?
|
|||
23
Ник второй
13.10.14
✎
15:19
|
(20) А обращаться к функции через точку тоже нафуя ))) В общем суть не меняется
|
|||
24
Kamas
13.10.14
✎
15:19
|
а вот в исключение запись зря не обернули
|
|||
25
Kamas
13.10.14
✎
15:20
|
(22) Естьстрочки
|
|||
26
pessok
13.10.14
✎
15:20
|
я бы вообще не записывал такой документ, например
|
|||
27
Ник второй
13.10.14
✎
15:20
|
(24) А зачем она нужна? Или думаешь что автор запускает обработку на сервере и нет пользователя которому сама платформа покажет сообщение об ошибке? Телепат 200 уровня
|
|||
28
Ник второй
13.10.14
✎
15:20
|
(25) Она не лишняя.
|
|||
29
pessok
13.10.14
✎
15:20
|
ну или как минимум предупреждал
|
|||
30
1dvd
13.10.14
✎
15:23
|
НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
НовыйДокумент.Дата = РабочаяДата; НоваяСтрокаТипЦен = НовыйДокумент.ТипыЦен.Добавить(); НоваяСтрокаТипЦен.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); Для Каждого КолонкаПродажнаяЦена Из Товары Цикл Если КолонкаПродажнаяЦена.ЦенаПродажная <> 0 Тогда НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Номенклатура = КолонкаПродажнаяЦена.Номенклатура; НоваяСтрокаТовары.Цена = КолонкаПродажнаяЦена.ЦенаПродажная; КонецЕсли; КонецЦикла; |
|||
31
Kamas
13.10.14
✎
15:24
|
(27) если пользователь есть и он(Документ) один то ему(пользователю) нужно открыть этот документ. если пользователя нет но док один то попытка с логом. если пользователь есть документов много то попытка предупреждение.
|
|||
32
pessok
13.10.14
✎
15:24
|
(30) а если цена (-) 150,00? :D
|
|||
33
Ник второй
13.10.14
✎
15:25
|
(30) Имя переменной НовыйДокумент, не отражает суть операции.
Нужно писать НовыйДокументУстановкаЦенНоменклатурыОтРабочейДатыНеизвестногоНомераСоСтрочками |
|||
34
Kamas
13.10.14
✎
15:25
|
(31) ну на худой конец запись без проведения в любом случае. чтоб можно было открыть и посмотреть почему не проводится.
|
|||
35
Ник второй
13.10.14
✎
15:25
|
(31) Мозг сломался.
|
|||
36
pessok
13.10.14
✎
15:27
|
(34) а вот это точно моветон, имхо. нафига хламить базу? с остальным, в целом, согласен. я по привычке все оборачиваю, т.к. в исключение можно и что-то свое написать, а-ля "ты тупой кретин опять грузишь не тот файл!"
|
|||
37
pessok
13.10.14
✎
15:28
|
НовыйДокументУстановкаЦенНоменклатурыОтРабочейДатыНеизвестногоНомераСоСтрочкамиИмениБорисаГеоргиевичаНуралиева
|
|||
38
1dvd
13.10.14
✎
15:38
|
(32) и много у тебя отрицательных цен в базе?
И потом, в задании написано "...если значение НоваяСтрокаТовары.Цена будет не ноль..." (33) Всё взято из (0) |
|||
39
myr4ik07
13.10.14
✎
15:53
|
НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
НовыйДокумент.Дата = РабочаяДата; НоваяСтрокаТипЦен = НовыйДокумент.ТипыЦен.Добавить(); НоваяСтрокаТипЦен.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); Для Каждого КолонкаПродажнаяЦена Из Товары Цикл Если КолонкаПродажнаяЦена.ЦенаПродажная <> 0 Тогда НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Номенклатура = КолонкаПродажнаяЦена.Номенклатура; НоваяСтрокаТовары.Цена = КолонкаПродажнаяЦена.ЦенаПродажная; КонецЕсли; КонецЦикла; пробовал в итоге условие выпоняется но сразу же значение НоваяСтрокаТовары.Цена выходит 0 и документ создается с пустым полем цена |
|||
40
Kamas
13.10.14
✎
15:55
|
(39) Не верю (с)
|
|||
41
myr4ik07
13.10.14
✎
15:56
|
ошибся ))
Если КолонкаПродажнаяЦена.ЦенаПродажная <> 0 Тогда а я Если НоваяСтрокаТовары.Цена <> 0 Тогда ну даю ) |
|||
42
myr4ik07
13.10.14
✎
15:57
|
та ) все норм, благодарю мужики
|
|||
43
myr4ik07
13.10.14
✎
16:00
|
А какую бы проверку сделать, что бы проверять, что если этот код выполнился и создался документ по этому коду, что бы второй раз не создавались такие же документы?
Я через реквизит (флажок) это решил, а как грамотней? |
|||
44
pessok
13.10.14
✎
16:01
|
Р/С ЦеныНоменклатуры периодческий, с периодичностью день. Программа не даст по одной и той же номенклатуре сделать два документа установки цен
|
|||
45
myr4ik07
13.10.14
✎
16:03
|
(44) да, знаю ) поэтому флажок у меня ) ибо второй раз флажком выключаю повторное проведение по рс
|
|||
46
pessok
13.10.14
✎
16:05
|
(45) не надо так делать.
перед созданием документа делай запрос к срезу последних регистра, по полученной выборке удаляй строки, в которых уже содержится эта номенклатура. все остальное можно смело грузить. какой смысл делать документ и не делать движений по регистру? |
|||
47
myr4ik07
13.10.14
✎
16:13
|
(46) ну да, ваш вариант интересен.
у меня выходит так, что флажком создает или не создает НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); а на остальные движения по документу флажок не играет роли и они по-любому проходят |
|||
48
Skazy
13.10.14
✎
16:16
|
мозг уплыл.... вроде только ПН
|
|||
49
Krolik Bezobraznik
13.10.14
✎
16:23
|
Если задача в том, чтобы не проводить док если есть хоть одна строк в ТЧ с ценой равной нулю, то как мне кажется было бы правильнее в обработчике проведения документа сделать проверку заполнения строк в ТЧ и у в случае нахождения такой строки делать отказ проведения.
Если есть задача в том чтобы делать движение только по тем строкам где цена <> 0 то тут тоже надо с обработкой проведения колдовать. Когда делать будешь движение по регистру то исключи из движения строки с нулем в цене. Вот и все. |
|||
50
Krolik Bezobraznik
13.10.14
✎
16:25
|
(49) + тогда тебе в твой обработке не надо делать каких либо условий. Просто при записи проводи, а обработчик проведения сделает свое "грязное" дело и отделит мух от котлет.
|
|||
51
pessok
13.10.14
✎
16:26
|
(49) ну нафига переделывать типовое проведение документа? у человека внешняя обработка заполнения, там вполне можно отказаться от проведения документа (и вариантов решений ТСу в теме описали уже уйму)
|
|||
52
pessok
13.10.14
✎
16:27
|
(50) если уж на то пошло, то такие вещи делаютс я в подписке на событие ПередПроведением, но уж точно не в обработке проведения типового объекта
|
|||
53
pessok
13.10.14
✎
16:27
|
ПередЗаписью*
|
|||
54
Krolik Bezobraznik
13.10.14
✎
16:27
|
(51) Можно и не переделывать. Согласен, если это надо разово то конечно не стоит так заморачиваться.
|
|||
55
pessok
13.10.14
✎
16:28
|
(54) даже если не разово. если есть варианты не трогать типовые механизмы, то их не надо трогать. если так хочется что-то "попроводить", то есть подписки на события
|
|||
56
pessok
13.10.14
✎
16:28
|
+(55) самому же потом это обновлять, в конце концов :)
|
|||
57
Krolik Bezobraznik
13.10.14
✎
16:29
|
(56) Думаю вы правы. С подписками не работал. Почитаю что это и с чем курят.
|
|||
58
pessok
13.10.14
✎
16:31
|
(57) очень удобный механизм, советую изучить
|
|||
59
myr4ik07
13.10.14
✎
16:33
|
(58) ага, видал
|
|||
60
myr4ik07
13.10.14
✎
16:38
|
задачу вы мне помогли реализовать, мне нужно было
если в строке в колонке ЦенаПродажная есть значение тогда создать документ и т.д. по коду, а если нет значения, т.е 0 то не создавать документ, а теперь нужно обработать проведение таким способом, что бы если документ уже был создан выше кодом то новый не создавать (ибо рс и так периодичный День) то и так не даст новый создать. Вот как вариант мне понравилось удалять старые записи после выборки запроса, попробую может и так если разберусь, а на счет конфы так тут нечего "бояться", никто ее не будет обновлять это однозначно ибо она уже "потрепана" всякими дополнениями без подписок на события. |
|||
61
Михаил Козлов
13.10.14
✎
16:41
|
(0) Вам уже неоднократно намекали, что в "НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");" Вы можете получить "чужую" единицу измерения.
|
|||
62
myr4ik07
13.10.14
✎
16:42
|
(61) и как выйти с данной ситуации?
|
|||
63
myr4ik07
13.10.14
✎
16:43
|
(61) "чужую" это имеется ввиду от другой номенклатуры или другое другое значения?
|
|||
64
myr4ik07
13.10.14
✎
16:44
|
у нас вот только "шт" используется и все
|
|||
65
myr4ik07
13.10.14
✎
16:46
|
(61) а то только намеки ) а понять не знающему не даете, почему?!) Вот пишу, как знаю )
|
|||
66
Krolik Bezobraznik
13.10.14
✎
16:47
|
(64) У номенклатуры есть несколько реквизитов для хранения единиц измерения например Базовая единица, весовая и т.д. Посмотрите в конфигураторе на реквизиты номенклатуры.
|
|||
67
Krolik Bezobraznik
13.10.14
✎
16:48
|
Вот к примеру может получится так
НоваяСтрокаТовары.ЕдиницаИзмерения = КолонкаПродажнаяЦена.Номенклатура.БазоваяЕдиницаИзмерения; |
|||
68
myr4ik07
13.10.14
✎
16:49
|
(67) ну ..., понятно, спасибо, да, а как быть?
|
|||
69
Krolik Bezobraznik
13.10.14
✎
16:50
|
(68) С чем?
|
|||
70
Михаил Козлов
13.10.14
✎
16:51
|
(63) Справочник ЕдиницыИзмерения подчинен справочнику Номенклатура. При этом единицы измерения разных товаров могут именоваться "шт.". Если так уж приспичило искать единицу по наименованию - ищите с условием подчинения:
СправочникМенеджер.<Имя справочника>.НайтиПоНаименованию (CatalogManager.<Имя справочника>.FindByDescription) СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>) НайтиПоНаименованию (FindByDescription) Синтаксис: НайтиПоНаименованию(<Наименование>, <Точное соответствие>, <Родитель>, <Владелец>) Параметры: <Наименование> (обязательный) Тип: Строка. Строка, содержащая искомое наименование. <Точное соответствие> (необязательный) Тип: Булево. Определяет режим поиска по полному соответствию. Поиск будет успешным, если строка поиска: в случае значения параметра Ложь - будет соответствовать левой части наименования; в случае значения параметра Истина - будет полностью совпадать с наименованием (за исключением "хвостовых" пробелов в наименовании). Значение по умолчанию: Ложь <Родитель> (необязательный) Тип: СправочникСсылка. Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. <Владелец> (необязательный) Тип: СправочникСсылка. Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. Возвращаемое значение: Тип: СправочникСсылка. Ссылка на найденный элемент справочника. Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка. Описание: Осуществляет поиск элемента по его наименованию. Примечание: Если существует несколько элементов с указанным наименованием, то будет найден только один из них. Пример: СтрокаНаименования = "USD"; Валюты = Справочники.Валюты; НайденнаяСсылка = Валюты.НайтиПоНаименованию(СтрокаНаименования); Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда Сообщить("Валюты """ + СтрокаНаименования + """ еще нет"); КонецЕсли; |
|||
71
myr4ik07
13.10.14
✎
16:55
|
(67) ну что бы
"Вот к примеру может получится так НоваяСтрокаТовары.ЕдиницаИзмерения = КолонкаПродажнаяЦена.Номенклатура.БазоваяЕдиницаИзмерения; " не поучилось когда то |
|||
72
Krolik Bezobraznik
13.10.14
✎
16:58
|
(71) Ну я не знаю какие у вас наименования реквизитов для хранения. Вы в кофигураторе откройте реквизиты номенклатуры и сами посмотрите. А еще можно в отладчике. когда запустите свою процедуру по заполнению, сделайте стоп и посмотрите в отладчике на вашу номенклатуру.
|
|||
73
myr4ik07
13.10.14
✎
17:05
|
(72) я отладчиком лучше, это мне нужно отладчиком "идти" по пути Номенклатура.ЕдиницаИзмерений? И что там я должен смотреть?) Если честно ничего не понял, что в итоге должно быть )), в реквизитах номенклатуры есть Реквизит ЕдиницаИзмерений ссылка которого ведет на Справочник Единица изерений, и да, спр. ЕдиницыИзмерений являются подчиненным спр. Номенклатура, и что в итоге не понимаю )))))))) простите )
|
|||
74
pessok
13.10.14
✎
17:05
|
Номенклатура.БазоваяЕдиницаИзмерения. оно во всех типовых так
|
|||
75
myr4ik07
13.10.14
✎
17:07
|
Вот, отладчик гласит Номенклатура.БазоваяЕдиницаИзмерения это Тип СправочникСсылка.КласификаторЕдиницаИзмерений и шо?))
|
|||
76
pessok
13.10.14
✎
17:07
|
(73) если вкратце: для каждой номенклатуры создается свой элемент справочника "единицы измерения"
|
|||
77
pessok
13.10.14
✎
17:09
|
(75) а значит это, что надо писать:
НоваяСтрокаТовары.ЕдиницаИзмерения = НоваяСтрока.Товары.БазоваяЕдиницаИзмереня не надо искать по наименованию, ибо их, кхм, много |
|||
78
myr4ik07
13.10.14
✎
17:09
|
хм, вижу в справочнике КласификаторЕдиницаИзмерений тоже шт, то шо лучше на этот справочник на это шт. ссылаться?)
|
|||
79
myr4ik07
13.10.14
✎
17:10
|
(77) ну, а мне же надо какое то значение внести в НоваяСтрокаТовары.ЕдиницаИзмерения
то может НоваяСтрокаТовары.ЕдиницаИзмерения = Справочник.КласификаторЕдиницаИзмерений.НайтиПоНаименованию("шт")? |
|||
80
myr4ik07
13.10.14
✎
17:14
|
или по кодму
|
|||
81
myr4ik07
13.10.14
✎
17:15
|
ага так ошибка
|
|||
82
myr4ik07
13.10.14
✎
17:16
|
(77) а почему базовая? почему этот справочник?
|
|||
83
Krolik Bezobraznik
13.10.14
✎
17:16
|
(80) Не надо искать ни по коду ни по наименованию единицу измерения. У тебя же уже есть ссылка на записываемую номенклатуру. Вот по этой ссылке и получи базовую единицу хранения.
Я ж тебе ранее написал, вот примерно так: нСтрока.Номенклатура = СтрокаКакойтоТЧ.Номенклатура; нСтрока.ЕдиницаИзмерения = СтрокаКакойтоТЧ.Номенклатура.БазоваяЕдиницаИзмерения; |
|||
84
myr4ik07
13.10.14
✎
17:27
|
(83) капец ) вот спасибо, теперь понял, что в самой номенклатуре есть уже значения Еди.Измерения
|
|||
85
Krolik Bezobraznik
13.10.14
✎
17:28
|
(84) =)) Удачи
|
|||
86
Михаил Козлов
13.10.14
✎
17:32
|
(74), (83) Вас не смущает, что тип реквизита БазоваяЕдиницаИзмерения ссылка не на справочник ЕдиницыИзмерения, а на классификатор?
|
|||
87
myr4ik07
13.10.14
✎
17:37
|
(85) так это почти всегда нужно такой "трюк" выполнять с ед. измерениями?)
я понял где взять значение ед. измерение но почему создается для каждой номенклатуры своя ед. не понял ) а почему? |
|||
88
myr4ik07
13.10.14
✎
17:42
|
(83) хм,
нСтрока.ЕдиницаИзмерения = СтрокаКакойтоТЧ.Номенклатура.БазоваяЕдиницаИзмерения; не заполняется, хотя по отладчикому видно, что СтрокаКакойтоТЧ.Номенклатура.БазоваяЕдиницаИзмерения.Наименование имеет значение "шт" |
|||
89
myr4ik07
13.10.14
✎
17:42
|
Или нужно указывать так
СтрокаКакойтоТЧ.Номенклатура.БазоваяЕдиницаИзмерения.Наименование |
|||
90
Krolik Bezobraznik
14.10.14
✎
08:47
|
(87) Для каждой может существовать единицы измерения с одинаковыми названиями но с разными значениями реквизитов Вес, Коэффициент и т.д. например Чай Липтом, вес 100 г, в коэффициент 1, а есть чай липтон но пачка весит 200 гр и коэффициент 1. И там и там базовая единица штуки но вес разный, потому и надо две разные записи с наименованием Штуки для двух разных номенклатур.
|
|||
91
myr4ik07
14.10.14
✎
09:36
|
(90) большое спасибо, как раз этих простых примеров и не хватает, у меня мозг только так может понять ))), спасибо
А в моем случаи, что то я не мог понять почему раньше так и сейчас, вот по коду Для Каждого эл Из Товары Цикл Для Каждого ТекСтрока Из НовыйДокумент.ТипыЦен Цикл НоваяСтрокаТовары = НовыйДокумент.Товары.Добавить(); НоваяСтрокаТовары.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000015"); НоваяСтрокаТовары.Валюта = Справочники.Валюты.НайтиПоКоду("980"); НоваяСтрокаТовары.Номенклатура = эл.Номенклатура; НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НоваяСтрокаТовары.Цена = эл.Цена; КонецЦикла; НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; делаю и НоваяСтрокаТовары.ЕдиницаИзмерения = НоваяСтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения; и эл.Номенклатура.БазоваяЕдиницаИзмерения; и эл.Номенклатура.БазоваяЕдиницаИзмерения.Наименование; отладчиком вижу, что эл.Номенклатура.БазоваяЕдиницаИзмерения получает "шт", ну, а в НоваяСтрокаТовары.ЕдиницаИзмерения не заноситься. помнится когда то так и не понял почему, вот и сейчас вернулся до того момента где не понял... ) |
|||
92
myr4ik07
14.10.14
✎
09:37
|
а если делаю
НоваяСтрокаТовары.ЕдиницаИзмерения.Наименование = НоваяСтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения; то получаю, что НоваяСтрокаТовары.ЕдиницаИзмерения.Наименование не для записи |
|||
93
pessok
14.10.14
✎
09:45
|
(92) тебе в (86) подсказали правильный ход мыслей. Нужно использовать таки не БазоваяЕдиницаИзмерения а ЕдиницаХраненияОстатков
|
|||
94
myr4ik07
14.10.14
✎
09:46
|
О, посмотрите пожалуйста
НоваяСтрокаТовары.ЕдиницаИзмерения = эл.ЕдиницаИзмерения; я начал получать вот таким образом |
|||
95
myr4ik07
14.10.14
✎
09:47
|
(93) как бы поучилось, а правильно мой вариант?
|
|||
96
myr4ik07
14.10.14
✎
09:49
|
Значит кодом
НоваяСтрокаТовары.ЕдиницаИзмерения = эл.ЕдиницаИзмерения; я и так находился по циклу в Номенклатуре, а теперь мне нужно было просто обратиться к реквизиту номенклатуры, а если я делал НоваяСтрокаТовары.ЕдиницаИзмерения = эл.Номенклатура.БазоваяЕдиницаИзмерений то это куда я заходил?)) Типа номенклатура в номенклатуру?) |
|||
97
pessok
14.10.14
✎
09:55
|
НоваяСтрокаТовары.ЕдиницаИзмерения = эл.Номенклатура.ЕдиницаХраненияОстатков;
И закроем уже вопрос :) |
|||
98
myr4ik07
14.10.14
✎
10:04
|
(97) спасибо :D
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |