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

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

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

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

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

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

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

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

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

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

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

КонецЕсли;

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

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

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>


Оффлайн Luzer1C

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

Оффлайн vitasw

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

Оффлайн Luzer1C

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

Оффлайн vitasw

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

Оффлайн Luzer1C

  • ****
  • Сообщений: 411
  • РЕПУТАЦИЯ: 40
  • КПД: 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
Просмотров: 4037
Последний ответ 25 Ноя 2008, 10:43
от DDD
Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
155 Сообщений
alex0402
118 Сообщений
Norfolk
51 Сообщений
LexaK
48 Сообщений
MuI_I_Ika MuI_I_Ika
44 Сообщений
AsadRoman
22 Сообщений
друган
21 Сообщений
SlimShady
19 Сообщений
alexandr_ll
19 Сообщений
Константин5825
18 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal