Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 493
от 12.05.2007, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 386, Экспертов: 49
В номере:Вопросов: 2, Ответов: 3


Вопрос № 85925: Доброго времени суток. У меня два вопроса. 1. Объявление переменных. В 1С допускается переменные объявлять как в явном так и неявном виде, я предпочитаю все переменные объявлять в явном виде. Является ли это ошибкой, так как некотрые считают ...
Вопрос № 85928: Доброго времени суток Господа! Подскажите, пож., как по регистрационному номеру 1С узнать, где покупалась программа (фирма), ну и другие детали?...

Вопрос № 85.925
Доброго времени суток. У меня два вопроса.
1. Объявление переменных.
В 1С допускается переменные объявлять как в явном так и неявном виде, я предпочитаю все переменные объявлять в явном виде. Является ли это ошибкой, так как некотрые считают это ошибкой, хотя я с этим не согласен. Для меня удобнее переменные объявлоять в явном виде (привычка после Delphi).
2. Исползование запросов.
Является ли грубой ошибкой выполнение запроса в цикле. в моем случае запрос выполняется по конкретным видам субконто, для каждого вида используется только одно значение субконто по которму необходимо выполнить запрос.
Обрабатываются документы и в начале выполнения обработки заранее неизвестно сколько значений субконто будет использовано. А по каждому полученному значению субконто (из строки документа) необходимо получить итоги на дату документа. Оправдано ли в таком случае использование запроса в цикле. В литературе нигде не нашел запрета на использование запросов в циклах.

В качестве пояснения прилагаю часть кода
По части кода: В таблДокументов загружаются несколько видов документов для обработки, по каждому документу из ТаблДокументов необходимо обработать табличную часть и пересчитать суммы строк в соответствии с итогами на дату документа по каждому значению ОС.

Заранее благодарен.

Приложение:

Отправлен: 07.05.2007, 21:39
Вопрос задал: SergeyMy (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dmitry Stashenko
Здравствуйте, SergeyMy!

1. С одной стороны, объявление переменной явно - это лишняя строка кода, с другой, что по-моему важнее, это уверенность, что она, родимая, ни с какой другой переменной (может быть глобальной?) не пересечется. Так что в принципе я за явное объявление, хотя всякое бывает.

2. А как же тут без цикла, если надо по каждой строке? Хотя я бы написал так:

Перем Ит, Док;

Процедура ОбработкаТабличнойЧастиДокумента()
....
Если Док.Вид() = "ОС_ПринятиеКУчету" Тогда
...
Ит.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, Док.ОбъектВнеоборотныхАктивов, 2);
Ит.ИспользоватьСубконто(ВидыСубконто.ФКР, Док.ФКРКредита, 2);
......
ИначеЕсли Док.Вид() = "ОС_Списание" Тогда
.........
КонецЕсли;
......
КонецПроцедуры;

Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьРазделительУчета(Док.ВыбраннаяФирма);
Пока ТаблДокументов.ПолучитьСтроку() = 1 Цикл
......
ОбработкаТабличнойЧастиДокумента();
ВыполнитьЗапрос(Док,,Док.СчетКредита);
Ит.ВыбратьСубконто(3);
.......
КонецЦикла;
Ответ отправил: Dmitry Stashenko (статус: 1-ый класс)
Ответ отправлен: 07.05.2007, 22:07
Оценка за ответ: 5
Комментарий оценки:
Тоже вариант спасибо.. но цикл тоже остается..

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, SergeyMy!
1.Обявляя переменные, Вы будете уверены, что случайно не зацепите глобальную переменную глобального модуля. Гуд.
2.Не понял приложение. Вы выбираете субконто номер 3, а ИспользоватьСубконто пишете всего 2 раза. Не гуд.
Запрос в цикле это тормоза еще те. Но если производственная необходимость требует рассчета итогов на каждый документ, то деваться некуда, приходится писать запрос в цикле. У меня есть много отчетов, которые делают запрос в цикле. И все они прекрасно работают.
В Вашем примере запрос применяется не ко всем документам цикла, а только к принятиюКУчету, хороший фильтр, хоть запросов будет немного и тормозить будет не шибко. Лучше написать нельзя.
Но есть один глюк. Как я понял, Вам нужно получать результаты не по всем ТМЦ, а только по тем, которые входят в документ. Следует выгрузить интересующие ТМЦ в Сп, и указать ИспользоватьСубконто(ВидыСубконто.ТМЦ,Сп). Таким образом, Вы ускорите выполнение запроса, и вопрос о том, будет ли тормозить запрос в цикле, станет менее актуальным.
Можно, конечно, выполнитьЗапрос один раз перед циклом, с детализацией по проводкам, и в цикле только ПолучитьПериод(Док). Но не факт, что так будет быстрее.
Вывод: Запрос в цикле, если результат особо не тормозит, вполне нормален.
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Студент)
Ответ отправлен: 08.05.2007, 10:03
Оценка за ответ: 5
Комментарий оценки:
В данном коде я не указа все обрабатываемы типы документов, но запрос выполняется для всех типов документов которыхе попали в отбор. Спасибо


Вопрос № 85.928
Доброго времени суток Господа!
Подскажите, пож., как по регистрационному номеру 1С узнать, где
покупалась программа (фирма), ну и другие детали?
Отправлен: 07.05.2007, 22:01
Вопрос задал: Дмитрий Андреевич1 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: ATan
Здравствуйте, Гундырев Дмитрий Андреевич!
Вообще-то данная информация является закрытой, но 1С предоставляет такую информацию своим официальным партнерам, для того чтоб те могли проверить
являются ли их клиенты пользователями лицензионного программного обспечения.
Но даже для них предоставляется информация следующего характера: партнеры отправляют рег. номер и реквизиты фирмы, а 1С им присылает зарегистрирован ли данный номер на эту фирму или нет. Так что выход у вас один ищите друга
во франчайзи конторах.
Удачи.
Ответ отправил: ATan (статус: 3-ий класс)
Ответ отправлен: 08.05.2007, 09:32
Оценка за ответ: 4
Комментарий оценки:
Спасибо


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное