|
Заказ покупателя, учет производства часть 2. Оптимизация! | ☑ | ||
---|---|---|---|---|
0
sora_tm
28.01.12
✎
23:35
|
В продолжение темы
v8: Заказ покупателя, учет производства, тч. Создал Справочник "ПроизводствоПродукции", реквизит "Номенклатура" и ТЧ ВидыРабот. Теперь в "Заказе покупателя" заполняется ТЧ "Производство", но код вышел адски кривой, как мне кажется, запрос в цикле некрасиво как то... Может кто подскажет лучший вариант как реализовать? Процедура ЗаполнитьНажатие(Элемент) Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка); Запрос.Текст = " |ВЫБРАТЬ | Док.НомерСтроки, | Док.Номенклатура |ИЗ | Документ.ЗаказПокупателя.Товары КАК Док |ГДЕ | Док.Ссылка = &ТекущийДокумент"; ВыборкаТоваров = Запрос.Выполнить().Выбрать(); Пока ВыборкаТоваров.Следующий() цикл ПередНом = ("" + ВыборкаТоваров.Номенклатура +""); Сообщить(ПередНом); Запрос.УстановитьПараметр("ВТНоменклатура", ПередНом); Запрос.Текст = " |ВЫБРАТЬ | ТЧ.Номенклатура Как Номенклатура, | ПроизводствоПродукции.Ссылка |ИЗ | Справочник.ПроизводствоПродукции КАК ПроизводствоПродукции |ЛЕВОЕ СОЕДИНЕНИЕ | Справочник.ПроизводствоПродукции.ВидыРабот КАК ТЧ | ПО ТЧ.Ссылка = ПроизводствоПродукции.Ссылка |ГДЕ ПроизводствоПродукции.Номенклатура.Наименование = &ВТНоменклатура"; ВыборкаПроизводство = Запрос.Выполнить().Выбрать(); Пока ВыборкаПроизводство.Следующий() цикл Сообщить(ВыборкаПроизводство.Номенклатура); СтрокаТЧ = Производство.Добавить(); СтрокаТЧ.Номенклатура = ВыборкаПроизводство.Номенклатура; СтрокаТЧ.Количество = 1; Конеццикла Конеццикла КонецПроцедуры |
|||
1
sora_tm
28.01.12
✎
23:37
|
"Сообщить" использовал для отладки, чтобы видеть что в переменные попадают.
|
|||
2
Рэйв
28.01.12
✎
23:38
|
(0)
>>но код вышел адски кривой, как мне кажется, запрос в цикле некрасиво как то. бог не любит не тебя ни твоего кода. веревку и мыло могу продать по сходной цене. |
|||
3
Serg_1960
28.01.12
✎
23:46
|
Первый запрос не нужен и даже вреден. У Вас уже есть объект - нет смысла к нему обращаться через запрос к базе. Второй запрос в цикле - тоже не фонтан.
Всё что Вы написали - решается одним запросом и выгрузкой результата в ТЧ. (2) +1 |
|||
4
H A D G E H O G s
28.01.12
✎
23:50
|
(0) Тимур - а кем вы работали до 1С?
|
|||
5
DarKySiK
28.01.12
✎
23:55
|
бррр... аж глаз режет. А "ВТНоменклатура" неспроста))) видимо видел что-то про временные таблицы, но за чем они так и не понял.. Ничего, опыт приходит со временем.
|
|||
6
sora_tm
29.01.12
✎
00:01
|
(4) Да я и не работаю в 1С, это так, скорее увлечение. Нас обслуживает франч, но правлю сам формочки печатные, платформу обновляю. Сейчас я просто пробую как можно улучшить текущий заказ покупателя, но все равно будут делать программисты, и не факт, что так как я. Я сам понимаю, что должны работать профи, чревато самоуправство... Работаю начальником информационно технической службы, изучаю 1С только для собственного развития, не более.
|
|||
7
sora_tm
29.01.12
✎
00:02
|
(5) Угу, завтра еще покумекаю, может дойдет.
|
|||
8
Джинн
29.01.12
✎
00:03
|
(6) Вы сначала суете палец в розетку, а только потом изучаете законы электротехники?
|
|||
9
DarKySiK
29.01.12
✎
00:05
|
(6) Начните с книжек. Полезнее будет.
|
|||
10
H A D G E H O G s
29.01.12
✎
00:06
|
(8) Метод старинного ученого Тыка - очень даже не плох.
|
|||
11
sora_tm
29.01.12
✎
00:08
|
(8) Опыт ничто не заменит! Шутю. Ну мне так нравится колупаться, я же не рабочую базу ворочу.
|
|||
12
sora_tm
29.01.12
✎
00:10
|
(9) Пытаюсь, Радченко потихоньку читаю, и всегда прежде чем пытать вопросами, ищу в книгах которые в комплекте шли. Но в них местами очень скудно все.
|
|||
13
H A D G E H O G s
29.01.12
✎
00:15
|
Как то так
Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ПроизводствоПродукцииВидыРабот.Номенклатура, | СУММА(1) КАК Количество |ИЗ | Справочник.ПроизводствоПродукции.ВидыРабот КАК ПроизводствоПродукцииВидыРабот |ГДЕ | ПроизводствоПродукцииВидыРабот.Ссылка.ПометкаУдаления = ЛОЖЬ | И ПроизводствоПродукцииВидыРабот.Ссылка.Номенклатура В(&МассивНоменклатур) | |СГРУППИРОВАТЬ ПО | ПроизводствоПродукцииВидыРабот.Номенклатура"; Запрос.УстановитьПараметр("МассивНоменклатур",Товары.Выгрузить("Номенклатура")); ТЗ=Запрос.Выполнить().Выгрузить(); Производство.Загрузить(ТЗ); |
|||
14
sora_tm
29.01.12
✎
09:22
|
(13) Спасибо большое, действительно все просто, только не совсем понял
Запрос.УстановитьПараметр("МассивНоменклатур",Товары.Выгрузить("Номенклатура")); ТЗ=Запрос.Выполнить().Выгрузить(); Производство.Загрузить(ТЗ); Товары.выгрузить это мы берем и сразу из ТЧ документа грузим в "МассивНоменклатур" только номенклатуру? А в запросе сравниваем наличие в элементе справочника наличие данной номенклатуры из массива и в конце загружаем в ТЧ "Производство" результат запроса? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |