|
Корректность кода 1С
| ☑ |
0
devochka_1c
15.06.17
✎
22:49
|
Добрый день! 1С 8.
Вопрос по оптимальности кода.
Задача: проверить перед записью есть ли строки в таб частях некоторых документов удовлетворяющие условиям. Таб части документов называются по-разному, реквизиты проверяемые тоже не везде в наименованиях совпадают.
Так вот, как корректно делать проверку: в подписке на событие, естественно:
1. НайденныеСтроки = Источник.ТабЧасть.НайтиСтроки(ПараметрыОтбора);
2. Запрос
3. Иные варианты
?
|
|
1
PiotrLoginov
15.06.17
✎
22:56
|
Добрый вечер. Есть записываемый документ. И есть проверяемый документ. Это один и тот же документ?
И сразу обратите внимание на режимы записи документа. Самое распространенное - документ платформой записывается и тут же проводится. На этот случай в типовых конфигурациях всегда данные о документе получаются запросом. Т.е. данные объекта помещаются в БД и тут же вновь извлекаются оттуда для каких-то нужд.
|
|
2
Лефмихалыч
15.06.17
✎
23:02
|
Если там все на сколько разное, то одну подписку на все мастерить - предельно не оптимально.
Оптимально - сделать одну обобщенную функцию для проверки, которая лишена специфики документов, и на каждый док - своя подписка, код которой вызывает общую функцию для проверки.
|
|
3
Лефмихалыч
15.06.17
✎
23:04
|
Это - если условия проверки для всех документов одинаковые. А, если и условия разные, то смысла в обобщениях и объединениях нет
|
|
4
devochka_1c
15.06.17
✎
23:10
|
(1)Добрый вечер. Да, документ один и тот же.
(2) Нет, там не на столько все разное - типов документов немного
Запрос сделать по вот такому подобию лучше?
Мтд = Док.Метаданные();
Запрос = Новый Запрос();
Текст = "ВЫБРАТЬ Док.* ИЗ Документ.%ИмяДок КАК Док";
Текст = СтрЗаменить(Текст, "%ИмяДок", Мтд.Имя);
|
|
5
Лефмихалыч
16.06.17
✎
10:13
|
(4) слишком мало информации, чтобы сказать, как лучше
|
|
6
DrZombi
гуру
16.06.17
✎
10:17
|
(0) Оптимальней через "Исключение"
Быстрее работает ;)
|
|