Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Осуществление движения через запрос

DreamMaster
читатель
офлайн
Дата регистрации: 03.08.2012
Сообщений: 21
Пост №1
 
03.08.2012 16:59

Возникла такая проблема: Нужно, чтобы движения по регистрам было реализовано не перебором табличной части, а выполнением единственного запроса. <br><br>Есть регистр накопления "Остатки Товаров". Измерения: СкладКомпании, Номенклатура. Ресурсы: Остаток. <br>Есть документ, через который осуществляется движение. <br><br>С вариантом перебора табличной части всё просто, но как сделать запросом понять не могу, так как только начал осваивать 1С.

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №2
 
03.08.2012 17:46

А зачем?

DreamMaster
читатель
офлайн
Дата регистрации: 03.08.2012
Сообщений: 21
Пост №3
 
03.08.2012 18:56

Чтобы повысть быстродействие. Задача такая поставлена, но в иннете примеров я найти пока не смог.

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №4
 
03.08.2012 20:00

Покажите результат замера производительности текущего алгоритма. По нему подскажу где можно оптимизировать код.

DreamMaster
читатель
офлайн
Дата регистрации: 03.08.2012
Сообщений: 21
Пост №5
 
03.08.2012 20:36

Тут просто задача стоит: "Движения по регистрам должны быть реализованные не перебором табличной части, а выполнением единственного запроса". Когда я спросил: "Зачем так маяться?", мне обьяснили, что при большом кол-ве данных программа, в которой есть табличная часть, будет перебирать большое кол-во значений, и в следствии чего программа будет дольше соображать. В самом модуле документа табличных частей быть не должно, а должны быть только запросы ( в том числе могут быть и по табличным частям).

Bloodwiser
читатель
офлайн
Дата регистрации: 09.05.2010
Сообщений: 712
Пост №6
 
03.08.2012 23:05

"Подойдет?<br><pre>Движения.ОстаткиНаСкладе.Записывать = Истина;<br>Запрос = Новый Запрос;<br>Запрос.Текст =<br> "ВЫБРАТЬ<br> | ДокументПоОстаткамТовары.Номенклатура,<br> | СУММА(ДокументПоОстаткамТовары.Остаток) КАК Остаток,<br> | ДокументПоОстаткамТовары.Ссылка.Дата КАК Период,<br> | ДокументПоОстаткамТовары.Ссылка.СкладКомпании<br> |ИЗ<br> | Документ.ДокументПоОстаткам.Товары КАК ДокументПоОстаткамТовары<br> |ГДЕ<br> | ДокументПоОстаткамТовары.Ссылка = &ТекущийДокумент<br> | И ДокументПоОстаткамТовары.Остаток <> 0<br> | И ДокументПоОстаткамТовары.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)<br> |<br> |СГРУППИРОВАТЬ ПО<br> | ДокументПоОстаткамТовары.Ссылка.СкладКомпании,<br> | ДокументПоОстаткамТовары.Номенклатура,<br> | ДокументПоОстаткамТовары.Ссылка.Дата";Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);Результат = Запрос.Выполнить().Выбрать();Пока Результат.Следующий() Цикл<br> Движение = Движения.ОстаткиНаСкладе.ДобавитьПриход();<br> ЗаполнитьЗначенияСвойств(Движение, Результат);<br>КонецЦикла; </pre><br><br> <br>На форме реквизит склад в шапке, в тч только номенклатура и остаток."

DreamMaster
читатель
офлайн
Дата регистрации: 03.08.2012
Сообщений: 21
Пост №7
 
04.08.2012 15:40

Bloodwiser, огромное вам спасибо! Смог разобраться и переписать под свою конфигурацию. Есть такая проблема, что движение осуществилось, но при просмотра регистра все поля пустые, но думаю смогу разобраться. Ещё раз огромное спасибо!

Bloodwiser
читатель
офлайн
Дата регистрации: 09.05.2010
Сообщений: 712
Пост №8
 
04.08.2012 19:16

Названия измерений/ресурсов регистра не совпадают с названиями в запросе. В синтаксис помошнике смотреть "ЗаполнитьЗначенияСвойств"

DreamMaster
читатель
офлайн
Дата регистрации: 03.08.2012
Сообщений: 21
Пост №9
 
05.08.2012 18:49

"Нашел такую проблему. Во время движения, если выбирать значения из табличной части, то всё нормально и движение в регистр осуществляется.<br>Пример:<br><br> Движения.ВзаиморасчетыСКотрагентами.Записывать = Истина;<br> Движения.ОстаткиТоваров.Записывать = Истина;<br>Запрос = Новый Запрос;<br>Запрос.Текст =<br> "ВЫБРАТЬ<br> | ПоступлениеТоваровПоступлениеТов.Ссылка.Дата КАК Период,<br> | ПоступлениеТоваровПоступлениеТов.Ссылка.Склад КАК СкладКомпании,<br> | ПоступлениеТоваровПоступлениеТов.Номенклатура КАК Номенклатура ,<br> | ПоступлениеТоваровПоступлениеТов.Количество КАК Остаток,<br> | ПоступлениеТоваровПоступлениеТов.Цена КАК Себестоимость,<br> | ПоступлениеТоваровПоступлениеТов.Сумма КАК Сумма,<br> | ПоступлениеТоваровПоступлениеТов.Ссылка.Контрагент КАК Контрагент<br> |ИЗ<br> | Документ.ПоступлениеТоваров.ПоступлениеТов КАК ПоступлениеТоваровПоступлениеТов<br> |ГДЕ<br> | ПоступлениеТоваровПоступлениеТов.Ссылка = &ТекущийДокумент";<br>Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);<br>Результат = Запрос.Выполнить().Выбрать();<br>Пока Результат.Следующий() Цикл<br>      Движение = Движения.ОстаткиТоваров.ДобавитьПриход();<br>      ЗаполнитьЗначенияСвойств(Движение, Результат);<br>КонецЦикла;<br>Движение = Движения.ВзаиморасчетыСКотрагентами.ДобавитьРасход();<br>ЗаполнитьЗначенияСвойств(Движение, Результат);<br><br><br>Но если в документе нет табличной части и задействуются только реквизиты, то выдаёт ошибку, что значение период отсутствует.<br><br>Пример:<br><br><br>Движения.ВзаиморасчетыСКотрагентами.Записывать = Истина;<br> Движения.ОстаткиДенежныхСредств.Записывать = Истина;<br>Запрос = Новый Запрос;<br>Запрос.Текст =<br> "ВЫБРАТЬ<br> | ПКО.Дата КАК Период,<br> | ПКО.Контрагент КАК Контрагент,<br> | ПКО.Касса КАК Кассы,<br> | ПКО.Сумма КАК Сумма,<br> | ПКО.Сумма КАК Долг<br> |ИЗ<br> | Документ.ПКО КАК ПКО<br> |ГДЕ<br> | ПКО.Ссылка = &Ссылка";<br><br>Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);<br>Результат = Запрос.Выполнить().Выбрать();<br>Движение = Движения.ВзаиморасчетыСКотрагентами.ДобавитьРасход();<br>ЗаполнитьЗначенияСвойств(Движение, Результат);<br>Движение = Движения.ОстаткиДенежныхСредств.ДобавитьПриход();<br>ЗаполнитьЗначенияСвойств(Движение, Результат);<br><br><br>Как можно решить данную проблему?"

Вьюн
читатель
офлайн
Дата регистрации: 14.01.2007
Сообщений: 657
Пост №10
 
05.08.2012 22:12

И где во 2-м примере Результат.Следующий()?

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация