v7: Повторное использование вида субконто #590026


#0 by alex_reglament
привет всем немогу найти ошибку в коде помогите пожалуйста
#1 by alex_reglament
БИ_.ИспользоватьСубконто(ВидыСубконто.Сотрудники,спрсотр.ТекущийЭлемент);     {D:1СКОНФИГУРАЦИИ  1СV7ДЛЯ ИСПРАВЛЕНИЯ КОСЯКА НА ТБЗ.ERT}: Повторное использование вида субконто "Сотрудники" в запросе!
#2 by alex_reglament
Если спр.НайтиПоКоду(ВидКод_) = 0 Тогда // это строка 220
#3 by PuhUfa
БИ_.ИспользоватьСубконто(ВидыСубконто.Сотрудники,спрсотр.ТекущийЭлемент); у тебя в цикле
#4 by Дядя Васька
БИ_.ИспользоватьСубконто(ВидыСубконто.НачисленияУдержания,спр.ТекущийЭлемент);
#5 by alex_reglament
и что что в цикле а что нельзя в цикл пихать?
#6 by alex_reglament
как с этим бороться?
#7 by alex_reglament
выходит что  мне наоборот сделать сночало формировать би а потом в цикле тз???
#8 by alex_reglament
а без этого ни как?
#9 by Дядя Васька
Ну вообще запрос в цикле это моветон... Чтобы заработало достаточно перед ,  БИ_ = СоздатьОбъект("БухгалтерскиеИтоги"), но по уму код надо оптимизировать чтобы в ИспользоватьСубконто передавался список элементов и запрос выполнялся один раз, а не столько сколько строк в таблице.
#10 by alex_reglament
не смотрел но скорее всего около 400
#11 by PuhUfa
упростим твой код до: сколько раз будет применяться использоватьсубконто? или выноси использоватьсубконто из цикла или вноси в него СоздатьОбъект("БухгалтерскиеИтоги")
#12 by alex_reglament
хотя вру 4000
#13 by 1Сергей
тогда вообще нет смысла его фильтровать
#14 by 1Сергей
+ ВыбратьСубконто и алга
#15 by alex_reglament
так
#16 by 1Сергей
ПолучитьСубконто(<?>,,) GetSubconto(<?>,,) Синтаксис: ПолучитьСубконто(<Индекс>,<Номер>,<Значение>) Назначение: Получить из выборки следующее субконто. Выборка должна быть предварительно открыта при помощи метода ''ВыбратьСубконто''. Возвращает 1 - следующее субконто выбрано успешно; 0 - следующе субконто не выбрано (отсутствует). Параметры: <Индекс> - число: порядковый номер вызова метода ''ИспользоватьСубконто''. <Номер> - число - номер выборки. Необязательный параметр. <Значение> - значение субконто, на которое нужно спозиционироваться.
#17 by alex_reglament
а как мне получить то что мне нужно?
#18 by 1Сергей
см
#19 by Дядя Васька
Так-то так, но так будет работать в 4000 раз медленнее чем запрос за циклом )
#20 by alex_reglament
а как мне его за циклом сделать  подскажите ато у меня оброзования не хватает
#21 by alex_reglament
а понял нужно вынести из цикла использоватьсубконто затем фильтровать по условию если  равно так??
#22 by Дядя Васька
В цикле собираешь два списка значений, сотрудников и видов начислений, за циклом ИспользоватьСубконто с условием на вхождение в список, потом сам ВыполнитьЗапрос и еще один цикл с обходом результатов запроса.
#23 by 1Сергей
Если БИ_.ПолучитьСубконто(1,,СпрСотр.ТекущийЭлемент) = 1 Цикл                    Если БИ_.ПолучитьСубконто(2,,спр.ТекущийЭлемент) = 1 Цикл кактотак, не помню уже
#24 by alex_reglament
за циклом ИспользоватьСубконто с условием на вхождение в список с условием на вхождение в список//это как?
#25 by Дядя Васька
Вместо БИ_.ИспользоватьСубконто(ВидыСубконто.Сотрудники,спрсотр.ТекущийЭлемент); БИ_.ИспользоватьСубконто(ВидыСубконто.Сотрудники,СписокСотрудников,2); как-то так...
#26 by alex_reglament
в этом коде я получу точные данные и он будет бустрей работать?
#27 by alex_reglament
но при этом после мне нужно будет дополнительно условия типа если Сотрудник = СписокСотрудников тогда так????
#28 by 1Сергей
обрати внимание Если БИ_.ПолучитьСубконто(1,,СпрСотр.ТекущийЭлемент) = 1
#29 by Дядя Васька
Ну немного не такого типа, но да, если нужна например зарплата и премия по иванову и только зарплата по петрову, то он вернет и зарплату и премию по обоим и лишнее надо будет пропустить при обходе. Но все же с отбором по спискам отработает быстрее чем вообще по всем, ну если конечно по условиям задачи у тебя в те списки все не попадают, тогда одинаково.
#30 by alex_reglament
све ок со старым тоже не долго формируется но советы к сведению приняты
#31 by alex_reglament
спасибо всем
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С