• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Sangitam
  • Дата начала
S

Sangitam

Вот такой блочок работал себе, работал, и вдруг перестал.
тз -- таблица, заполняемая из Екселя. По циклу в отладчике все прекрасно, но результат:
В документ установке цен номенклатуры добавляется только одна строка из допустим ста.

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

Sangitam

Magic какой-то: поковырял сам документ УЦН, поковырял блочок, все "ковыряки" вернул на место -- теперь грузится адекватный список товаров, однако только с ценойСНДС.
 
Д

Дайнеко

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

puh14

Ну единственное что может порезать количество в таб чсати товары строк это Стртз.Наименование = Неопределено . Где-то тут копать надо.
 
S

Sangitam

Пришлось в итоге делать два документа по одному на каждый тип цен.
Самое интересное, что, вышеприведенный код, как я говорил, долгое время заполнял УЦН двумя типами цен без проблем. Просто однажды он взял и заполнил только одной пустой строкой.
Вопрос в общем-то сейчас перешел больше в теорию -- например, может ли такое быть из-за, допустим, апгрейда релиза платформы?

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


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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!