Имя: Пароль:
1C
1С v8
Корректность кода 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) Оптимальней через "Исключение"
Быстрее работает ;)