Имя: Пароль:
1C
 
Условие
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