Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
21 Июл 2017, 07:37
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Почему медленно записывается документ  (Прочитано 580 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Оксана Мороз

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-03-02
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте ! Наверно избитая тема, но искала и так и не нашла ответа на мой вопрос. Из excel выгружаю в ТаблицуЗначений порядка 8000 строк номенклатуры с артикулом и ценой, после этого программно создаю документ Установка цен номенклатуры (УТ 10.3) и заполняю его из ТЗ!. Все нормально заполняется быстро, НО как только я добавляю условие сравнения цены из тз и цены из запроса сразу начинаются тормоза. Я понимаю что идет сравнение построчно, но не знаю как сделать по другому. :( Помогите пожалуйста.
Док=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); 
Док.Дата = ТекущаяДата();
Док.НеПроводитьНулевыеЗначения=Истина;

НоваяЦена = Док.ТипыЦен.Добавить();
НоваяЦена.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочная");
НоваяЦена = Док.ТипыЦен.Добавить();
НоваяЦена.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
Док.Ответственный = Пользователи.ТекущийПользователь();
Док.Комментарий = "Ввод цен из прайса поставщика";

//Для каждого СтрокаТабличной Из Товары Цикл
////******************************************
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.ТипЦен,
| ЦеныНоменклатурыСрезПоследних.Цена
|ПОМЕСТИТЬ ЦеныНоменклатурыСрезПоследних
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦены
| И ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул = &Артикул
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаЗначений.Артикул,
| ТаблицаЗначений.Цена
|ПОМЕСТИТЬ ТаблицаЗначений
|ИЗ
| &Товары КАК ТаблицаЗначений
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаЗначений.Артикул КАК Артикул,
| ТаблицаЗначений.Цена,
| ЦеныНоменклатурыСрезПоследних.Цена КАК СтараяЦена,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Наценка,
| ЦеныНоменклатурыСрезПоследних.Номенклатура
|ИЗ
| ЦеныНоменклатурыСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗначений КАК ТаблицаЗначений
| ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул = ТаблицаЗначений.Артикул)
|
|УПОРЯДОЧИТЬ ПО
| Артикул";

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

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтараяЦена = Выборка.СтараяЦена;
КонецЦикла;
//***************************************************************
//Добавляем цену закупки в установку цен номенклатуры

Если Строка(Выборка.Цена) <> Строка(Выборка.СтараяЦена) Тогда //вот если убираю эту строку то все нормально со скоростью
Стр                       =  Док.Товары.Добавить();
Стр.Номенклатура          =  Выборка.Номенклатура;
Стр.ТипЦен                =  Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочная");
Стр.Цена                  =  Выборка.Цена;
Стр.Валюта                =  Форма.ВыбВалюта.Ссылка;
Стр.ЕдиницаИзмерения      =  Выборка.Номенклатура.ЕдиницаХраненияОстатков.Ссылка;

//Добавляем цену продажи в установку цен номенклатуры
Стр                       =  Док.Товары.Добавить();
Стр.Номенклатура          =  Выборка.Номенклатура;
Стр.ТипЦен                =  Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
Стр.Валюта                =  Форма.ВыбВалюта.Ссылка;
Стр.ЕдиницаИзмерения      =  Выборка.Номенклатура.ЕдиницаХраненияОстатков.Ссылка;
Стр.ПроцентСкидкиНаценки  =  Выборка.НоменклатураНаценка;
Стр.СпособРасчетаЦены     =  Перечисления.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип;

КонецЕсли;

//КонецЦикла;
            КонецЦикла;

Последний раз редактировалось: Оксана Мороз; 02 Мар 2016, 10:31


Оффлайн Luzer1C

  • ****
  • Сообщений: 411
  • РЕПУТАЦИЯ: 41
  • КПД: 10%
  • Регистрация: 2014-02-17
  • Сайт: 
  • Профессия: Программист 1С
Вот тут:
Для каждого СтрокаТабличной Из Товары Цикл
        Запрос.УстановитьПараметр("Артикул",СтрокаТабличной.Артикул);
        КонецЦикла;
Зачем так писать? Каждый раз подставлять Артикул из 8000 позиций таблицы?
Не проще ли сделать в запросе так: "И ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул В (&Артикул)"
А потом так:
Запрос.УстановитьПараметр("Артикул", Товары.ВыгрузитьКолонку("Артикул"));
Помочь мне очень сложно. Но можно.
Помогаю просто так...
Матёрый разработчик УПП + Бит Финанс

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
"ВЫБРАТЬ
      |   ТаблицаЗначений.Артикул,
      |   ТаблицаЗначений.Цена
      |ПОМЕСТИТЬ ТаблицаЗначений
      |ИЗ
      |   &Товары КАК ТаблицаЗначений
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ
      |   ВложенныйЗапрос.Цена,
      |   ВложенныйЗапрос.ТипЦен,
      |   ВложенныйЗапрос.Номенклатура
      |ИЗ
      |   (ВЫБРАТЬ
      |      ТаблицаЗначений.Цена КАК Цена,
      |      ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен,
      |      ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
      |      ЦеныНоменклатурыСрезПоследних.Цена КАК СтараяЦена
      |   ИЗ
      |      ТаблицаЗначений КАК ТаблицаЗначений
      |         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Закупочная) КАК ЦеныНоменклатурыСрезПоследних
      |         ПО ТаблицаЗначений.Артикул = ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул) КАК ВложенныйЗапрос
      |ГДЕ
      |   ВложенныйЗапрос.Цена <> ВложенныйЗапрос.СтараяЦена";

Оффлайн Luzer1C

  • ****
  • Сообщений: 411
  • РЕПУТАЦИЯ: 41
  • КПД: 10%
  • Регистрация: 2014-02-17
  • Сайт: 
  • Профессия: Программист 1С
vitasw, лучше было бы, если человек сам бы дошёл до данного решения.;)
Помочь мне очень сложно. Но можно.
Помогаю просто так...
Матёрый разработчик УПП + Бит Финанс

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Вы серьезно? считаете что ваше мнение "более правильное"?

Оффлайн Luzer1C

  • ****
  • Сообщений: 411
  • РЕПУТАЦИЯ: 41
  • КПД: 10%
  • Регистрация: 2014-02-17
  • Сайт: 
  • Профессия: Программист 1С
Я не говорил, что моё мнение правильное.
Но текст запроса лучше было бы новичку не выдавать.
Помочь мне очень сложно. Но можно.
Помогаю просто так...
Матёрый разработчик УПП + Бит Финанс

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Но текст запроса лучше было бы новичку не выдавать.

:D И на чем же основано такое глубокое заключение?

Оффлайн Оксана Мороз

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-03-02
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо всем, я и не предполагала что в самом запросе можно получить именно ту цену которая нужна, а не сравнивать ее потом из запроса. Так что иногда бывает нужно показать именно правильный запрос! Еще раз СПАСИБО что помогли :zebzdr:
Теперь все заполняется вот так -вжик


Теги:
 

Какова взаимосвязь объектов конфигурации "Договоры" и "Документ"?

Автор DDDРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 4221
Последний ответ 25 Ноя 2008, 10:43
от DDD
Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.

Автор Елена6666666666Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 8224
Последний ответ 24 Окт 2014, 13:30
от cska-fanat-kz
не могу вывести отображение цен в "подборе" документ "Заявка покупателя" УТ 10.3

Автор Виталий ЕмельяновРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 3019
Последний ответ 05 Окт 2015, 19:22
от Виталий Емельянов
Как программно открыть документ программно

Автор СерьезныйЧеловекРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 17339
Последний ответ 10 Ноя 2010, 14:08
от Lexius
Документ "Сторно" в 1с 8.2 бух 2.0

Автор cannabis_86Раздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 11941
Последний ответ 09 Июн 2011, 12:57
от defers

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
122 Сообщений
alex0402
104 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
73 Сообщений
ilyay ilyay
50 Сообщений
Golickoff Golickoff
49 Сообщений
AIFrame
46 Сообщений
ab30ru
38 Сообщений
wise wise
36 Сообщений
Амал
32 Сообщений
Dethmontt Dethmontt
25 Сообщений

* Кто онлайн

  • Точка Гостей: 357
  • Точка Скрытых: 0
  • Точка Пользователей: 15
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal