Имя: Пароль:
1C
1С v8
Заполнение ТЗ по другой ТЗ
0 Bigbro
 
19.11.13
08:31
Я плохо знаю 8ку, прошу подскажите у кого опыта побольше.
Ситуация - есть регистр сведений, периодический. в нем хранятся свойства объектов. различные. требуется для тех объектов у которых задано одно из свойств - задать другое (в соответствии с таблицей), на текущую дату.
Запрос я сваял, данные вытащил, а вот как эффективно теперь подменить в ТЗ одно свойство и значение свойства другими по моей табличке? Тупой перебор делать не охота, чувствую что в 8ке для этого должны быть методы.
1 Bigbro
 
19.11.13
08:32
да, из ТЗ потом обратно набор записей создается, тут уже проблем быть не должно.
2 chelentano
 
19.11.13
08:34
(1) если значения могут быть разными, тогда без перебора не обойтись, если новое значение только одно - смотри метод ЗаполнитьЗначения()
3 Bigbro
 
19.11.13
08:39
среди значения свойства конечно будут и повторяющиеся. количество различных значений думаю на пару порядков меньше чем все количество значений. исходя из этого хочется оптимизировать.
4 Bigbro
 
19.11.13
09:11
пока вижу только вариант для каждой строки из ТЗ соответствия сделать .найтиСтроки() по основной таблице, внести изменения. Затем .Заполнить() поставлю нужную дату и после этого грузим тз в набор записей.
5 Cube
 
19.11.13
09:13
(4) Ничего не понятно. И непонятно, почему зпрос не может тебе соединить эти две ТЗ?
6 Bigbro
 
19.11.13
09:20
про запрос пожалуйста подробнее.
попробую пояснить, вот тз основная:
01-01-2013 проц_i3 комп1
01-02-2013 проц_i5 комп2
01-03-2013 проц_i3 комп3
вот тз соответствия
проц_i3 4
проц_i5 5
проц_core2_2600 3
и т.д.
нужно сформировать
19-11-2013 комп1 4
19-11-2013 комп2 5
19-11-2013 комп3 4
для записи в регистр сведенйи другого свойства.
7 Cube
 
19.11.13
09:22
(6) Ты давай код, что ты нам тут белиберду свою суешь)))
8 Bigbro
 
19.11.13
09:24
так если бы у меня был код я бы не задавал вопрос)
или тебе какой код нужен? запроса который тз получает? он простейший вот он

     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ
                    |    ЗначенияСвойствОбъектовСрезПоследних.Период,
                    |    ЗначенияСвойствОбъектовСрезПоследних.Объект,
                    |    ЗначенияСвойствОбъектовСрезПоследних.Свойство,
                    |    ЗначенияСвойствОбъектовСрезПоследних.Значение
                    |ИЗ
                    |    РегистрСведений.ЗначенияСвойствОбъектов.СрезПоследних КАК ЗначенияСвойствОбъектовСрезПоследних
                    |ГДЕ
                    |    ЗначенияСвойствОбъектовСрезПоследних.Свойство = &ТипПроцессора
                    |    И ЗначенияСвойствОбъектовСрезПоследних.Объект В иерархии (&ГруппаНоменклатуры)";
     Запрос.УстановитьПараметр("ТипПроцессора",_типПроц);
     Запрос.УстановитьПараметр("ГруппаНоменклатуры",_грНом);
    
     рез=Запрос.Выполнить();
9 Рэйв
 
19.11.13
09:26
(0)да сделай ты перебором одной ТЗ через .НайтиСтроки() во второй.

Акция разовая я так понимаю.Чего мудрить то?
10 Bigbro
 
19.11.13
09:27
сделаю конечно. но думал есть другие методы. 8ка ж мощнее. по крайней мере запросы мне в ней нравятся. очень.
11 el7cartel
 
19.11.13
09:27
(0) а если попробовать соединить все в запросе! т.е. тянешь данные из регистра сведений, и из ТЗ!
12 Рэйв
 
19.11.13
09:28
(10)Ну если хочется поизвращаться, то можешь загнать обе ТЗ в запрос в ВТ и соединить
13 Bigbro
 
19.11.13
09:28
(11) можно пример для моего случая?
14 Cube
 
19.11.13
09:29
(8) Ну вот, суй в этот запрос свою ТЗ (а может её тоже из какого-нить РС можно дернуть?) и соединяй их в запросе...
15 Cube
 
19.11.13
09:30
(13) Вторая ТЗ откуда появилась? Как ты её получил?
16 el7cartel
 
19.11.13
09:31
(12) а зачем извращаться, если есть поле соединения, то никаких проблем!
17 Bigbro
 
19.11.13
09:32
вторая тз на форме табличного документа задается - просто из экселя копируются данные.

я не знаю как в запрос передать тз извне, научите)
18 Bigbro
 
19.11.13
09:33
если бы в базе было соответствия я бы выдернул и сделал внутреннее соединение по процессору.
19 Лодырь
 
19.11.13
09:35
(17) Засосать в таблицу значений, загрузить запросом во временную таблицу
20 Cube
 
19.11.13
09:36
(17) Как-то так:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    МояТЗ.Колоночка1,
|    МояТЗ.Колоночка2
|ПОМЕСТИТЬ МояТЗ
|ИЗ
|    &МояТЗ КАК МояТЗ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    МояТЗ.Колоночка1,
|    МояТЗ.Колоночка2
|ИЗ
|    МояТЗ КАК МояТЗ";
Запрос.УстановитьПараметр("МояТЗ", );
21 el7cartel
 
19.11.13
09:36
(17) ну а связь эих данных с данными из регистра сведений есть? если да, то делайте через запрос! посмотрите про менеджер временных таблиц, нужно чтобы данные из ТЗ в запрос отправить
22 Cube
 
19.11.13
09:41
(21) Если в одном запросе всё делать, то менеджер временных таблиц не нужен.
23 Bigbro
 
19.11.13
10:30
всем спасибо) как то в голову не пришло что в параметры и тз можно передать и в ней потом обращаться.
сейчас сделаем все как у людей)
24 Bigbro
 
21.11.13
13:32
еще немного помучался с временными таблицами, типизацией ТЗ для загрузки, но в итоге получилось.
вывод - надо больше и чаще писать под 8ку ))