Установка цен номенклатуры

Sangitam

Well-Known Member
04.02.2008
90
0
40
Киев-Минск
#1
Вот такой блочок работал себе, работал, и вдруг перестал.
тз -- таблица, заполняемая из Екселя. По циклу в отладчике все прекрасно, но результат:
В документ установке цен номенклатуры добавляется только одна строка из допустим ста.

Докум=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
СпрТЦ = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("ЦенаБезНДС");
СтрТипов = Докум.ТипыЦен.Добавить();
СтрТипов.ТипЦен = СпрТЦ;
СпрТЦ1 = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("ЦенаСНДС");
СтрТипов = Докум.ТипыЦен.Добавить();
СтрТипов.ТипЦен = СпрТЦ1;
Докум.Дата=ТекущаяДата();
Для Каждого Стртз из тз Цикл
Если Стртз.Наименование = Неопределено Тогда
Продолжить;
КонецЕсли;
НовСтрок = Докум.Товары.Добавить();
СпрТМЦ = Справочники.Номенклатура.НайтиПоНаименованию(Стртз.Наименование,Истина);
НовСтрок.Номенклатура = СпрТМЦ.Наименование;
НовСтрок.ТипЦен = СпрТЦ;
Едизм = Справочники.ЕдиницыИзмерения.НайтиПоКоду("000000010");
НовСтрок.ЕдиницаИзмерения = Едизм;
НовСтрок.Цена = Стртз.ЦенаБезНДС;
СпрВал = Справочники.Валюты.НайтиПоНаименованию("грн");
НовСтрок.Валюта= СпрВал;
НовСтрок = Докум.Товары.Добавить();
НовСтрок.Номенклатура = СпрТМЦ.Наименование;
НовСтрок.ТипЦен = СпрТЦ1;
НовСтрок.ЕдиницаИзмерения = Едизм;
НовСтрок.Цена = Стртз.ЦенаСНДС;
НовСтрок.Валюта= СпрВал;
КонецЦикла;
Докум.Записать();
 

Sangitam

Well-Known Member
04.02.2008
90
0
40
Киев-Минск
#2
Magic какой-то: поковырял сам документ УЦН, поковырял блочок, все "ковыряки" вернул на место -- теперь грузится адекватный список товаров, однако только с ценойСНДС.
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#3
Однако, Изящный текст. Ты вот примеру, не проверяешь НайтиПоНаименованию("ЦенаСНДС") нашло или нет? Не знаю структуру до-та, но понимаю, что логика заполнения чудная: на каждую строку исходной ТЗ в док-т две строки.
 

puh14

Well-Known Member
11.07.2008
1 412
0
НеРезиновая
#4
Ну единственное что может порезать количество в таб чсати товары строк это Стртз.Наименование = Неопределено . Где-то тут копать надо.
 

Sangitam

Well-Known Member
04.02.2008
90
0
40
Киев-Минск
#5
Пришлось в итоге делать два документа по одному на каждый тип цен.
Самое интересное, что, вышеприведенный код, как я говорил, долгое время заполнял УЦН двумя типами цен без проблем. Просто однажды он взял и заполнил только одной пустой строкой.
Вопрос в общем-то сейчас перешел больше в теорию -- например, может ли такое быть из-за, допустим, апгрейда релиза платформы?

Вот окончательный вариант


Докум=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
СпрТЦ = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("ЦенаБезНДС");
СтрТипов = Докум.ТипыЦен.Добавить();
СтрТипов.ТипЦен = СпрТЦ;
Докум.Дата=ТекущаяДата();
Докум.Товары.Очистить();
Для Каждого Стртзз из тз Цикл
Если Стртзз.Наименование = Неопределено Тогда
Продолжить;
КонецЕсли;
СпрТМЦ = Справочники.Номенклатура.НайтиПоНаименованию(Стртзз.Наименование,Истина);
Если СпрТМЦ <> Справочники.Номенклатура.ПустаяСсылка() Тогда
НовСтрок = Докум.Товары.Добавить();
НовСтрок.Номенклатура = СпрТМЦ;
НовСтрок.ТипЦен = СпрТЦ;
Едизм = Справочники.ЕдиницыИзмерения.НайтиПоКоду("000000010");
НовСтрок.ЕдиницаИзмерения = Едизм;
НовСтрок.Цена = Стртзз.ЦенаБезНДС;
СпрВал = Справочники.Валюты.НайтиПоНаименованию("UAH");
НовСтрок.Валюта= СпрВал;
КонецЕсли;
КонецЦикла;
Докум.Записать();