Имя: Пароль:
1C
 
Автоматическое заполнение табличной части
0 RomanKR
 
09.08.12
21:37
Добрый день, уважаемые эксперты!
Подскажите пожалуйста, как решить данную ситуацию?





Идея:

Есть табличная часть "Блюда" в документе "Расходная накладная". При добавлении в неё какого-либо блюда, нужно взять составляющие этого блюда и записать
Во 2ю табличную часть этого же документа. Перечень составляющих находится в справочнике блюда. Нужно как-то при помощи запроса выбрать составляющие, относящиеся к выбранным блюдам.


Буду примного благодарен за помощь.
Задача выглядит очень простой, и то, что у меня не получается сделать даже ее, совсем опускаются руки.
1 Error pro
 
09.08.12
21:41
(0) При добавлении получай список этих самых составляющих и загружай во вторую табличку. Если руками то ОбработкаВыбора.
2 Hans
 
09.08.12
21:46
(0) что именно не получается?
3 Hostess_
of_Love
 
09.08.12
21:48
(0)у Вас уже пятница?
4 RomanKR
 
09.08.12
22:40
Я сделал запрос но он не работает

&НаСервере
Процедура БлюдаНаименованиеБлюдаПриИзменении(Элемент)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|Блюда.Компоненты.Наименование КАК Наименование ,
|Блюда.Компоненты.Норма КАК Норма,
|ИЗ
|Справочник.Блюда
|ГДЕ
|Блюда.Наименование = &Блюдо";
Запрос.УстановитьПараметр("Блюдо", Элементы.Блюдо.ТекущаяСтрока.ПолеБлюдо);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
НоваяСтрока = Элементы.Составляющие.ДобавитьСтроку();
НоваяСтрока.Поле1 = Выборка.Поле1;
НоваяСтрока.Поле2 = Выборка.Поле2;
КонецПроцедуры

при изменении блюда ничего не происходит я просто новичок в этом!!!
5 Error pro
 
09.08.12
22:45
(4) Ого, еще и на УФ. Если новичок то лучше почитай книги или вызови специалиста. Объяснять тут долго
6 RomanKR
 
09.08.12
22:51
ответ ясен!
7 RomanKR
 
09.08.12
22:54
Может можно как то попроще это реализовать? К примеру вот это  При добавлении получай список этих самых составляющих и загружай во вторую табличку
8 Hostess_
of_Love
 
09.08.12
22:55
помогла бы, но 1с дома нет
9 Hostess_
of_Love
 
09.08.12
22:57
>>Запрос.УстановитьПараметр("Блюдо", Элементы.Блюдо.ТекущаяСтрока.ПолеБлюдо);
Элементы = элемент формы? о_О
10 Hostess_
of_Love
 
09.08.12
22:58
(7)у тебя управляемые формы или обычные?
11 hhhh
 
09.08.12
22:59
(7) логически подумай: вот ты пишешь при изменении наименования блюда - выполнять эти действия. Вопрос: как часто повар меняет у вас наименования блюд?
12 Error pro
 
09.08.12
23:01
(7) Это на обычных формах, на уф нужно каждый раз вызывать серверную фукнцию.

Процедура ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|Блюда.Компоненты.Наименование КАК Наименование ,
|Блюда.Компоненты.Норма КАК Норма,
|ИЗ
|Справочник.Блюда
|ГДЕ
|Блюда = &Блюдо";
Запрос.УстановитьПараметр("Блюдо", ВыбранноеЗначение);
МояТЧ.Загрузить(Запрос.Выполнить.Выгрузить());  
КонецПроцедуры
13 Hostess_
of_Love
 
09.08.12
23:07
(11)Блюда - это ТЧ, НаименованиеБлюда - реквизит ТЧ
14 RomanKR
 
09.08.12
23:10
Я хочу чтобы при изменении блюда во 2 ТЧ выводились те ингридиенты из которых оно состоит! Формы управляемые! я же написал я ещё не разбираюсь в этом! Блюда это справочник а Наименование это стандартный реквизит справочника Блюда!
15 Hostess_
of_Love
 
09.08.12
23:11
(14) ответь на (9)
16 RomanKR
 
09.08.12
23:11
Блюда храняться с ингридиентами храняться в другом справочнике и из него уже я выбираю в расходную накладную это блюдо и его состовляющие для списания по регистру накопления!
17 Hostess_
of_Love
 
09.08.12
23:11
(16)курсовик на 8.2 клепаешь?
18 RomanKR
 
09.08.12
23:12
(9) Да это так Элементы = элемент формы так как в УФ используеться Элементы
19 RomanKR
 
09.08.12
23:12
Диплом
20 Hostess_
of_Love
 
09.08.12
23:14
(18)ингридиенты в справочнике как хранятся?
21 Hostess_
of_Love
 
09.08.12
23:14
реквизиты или ТЧ?
22 RomanKR
 
09.08.12
23:15
ТЧ компоненты
23 Hostess_
of_Love
 
09.08.12
23:30
&НаКлиенте
Процедура БлюдаНаименованиеБлюдаПриИзменении(Элемент)
    СписокИнгридентов = ПолучитьИнгридиенты(Элементы.Блюдо.ТекущиеДанные);
    Для Каждого СтрокаСпискаИнгридиентов Из СписокИнгридиентов Цикл
         НоваяСтрокаИнгридиентов = Составляющие.ДобавитьСтроку();
         НоваяСтрокаИнгридиентов.Поле1 = СтрокаСпискаИнгридиентов.Наименование;
новаястрокаингридиентов.поле2 = СтрокаСпискаИнгридиентов.Норма;
конеццикла
КонецПроцедуры


&НаСервере
Функция ПолучитьИнгридиенты(Блюдо)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|Блюда.Компоненты.Наименование КАК Наименование ,
|Блюда.Компоненты.Норма КАК Норма,
|ИЗ
|Справочник.Блюда Как Блюда
|ГДЕ
|Блюда.Наименование = &Блюдо";
Запрос.УстановитьПараметр("Блюдо", Блюдо.ПолеБлюдо);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
СписокИнгридиентов = Новый ТаблицаЗначений;
НоваяСтрока = СписокИнгридиентов.ДобавитьКолонку("Наименование");
НоваяСтрока = СписокИнгридиентов.ДобавитьКолонку("Норма");
пока выборка.следующий цикл
НоваяСтрока = СписокИнгридиентов.ДобавитьСтроку();
НоваяСтрока.Наименование = Выборка.Наименование;
НоваяСтрока.Норма = Выборка.Норма;
конеццикла;
Возврат СписокИнгридиентов
КонецФункции


Попробуй так
24 Hostess_
of_Love
 
09.08.12
23:31
хотя не совсем уверена в правильности. но то что пытаешься обратиться к элементам формы с сервера....
25 RomanKR
 
09.08.12
23:33
Хорошо спасибо за помощь попробую!
26 Hostess_
of_Love
 
09.08.12
23:34
пробуй.потом камнями закидаешь
27 RomanKR
 
09.08.12
23:38
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(39,46)}: Переменная не определена (СписокИнгридиентов)
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(40,37)}: Переменная не определена (Составляющие)
28 RomanKR
 
09.08.12
23:38
ты хотя бы помогаешь а не нравоучаешь
29 Hostess_
of_Love
 
09.08.12
23:40
(27)процитируй строки из кода
(28)сама такой же была
30 RomanKR
 
09.08.12
23:41
(27) Для Каждого СтрокаСпискаИнгридиентов Из СписокИнгридиентов Цикл

НоваяСтрокаИнгридиентов = Составляющие.ДобавитьСтроку();
31 Hostess_
of_Love
 
09.08.12
23:42
НоваяСтрокаИнгридиентов = Элементы.Составляющие.ДобавитьСтроку();
32 Hostess_
of_Love
 
09.08.12
23:43
Ты просто скопировал код? у меня там одна буква пропущена
33 Hostess_
of_Love
 
09.08.12
23:44
+(32)СписокИнгридентов = ПолучитьИнгридиенты(Элементы.Блюдо.ТекущиеДанные);
    Для Каждого СтрокаСпискаИнгридиентов Из СписокИнгридиентов Цикл

попробуй найти где именно
34 RomanKR
 
09.08.12
23:46
Нашёл где только во 2 ТЧ ничего не переноситься ничего не происходит когда я выбираю блюдо!
35 RomanKR
 
09.08.12
23:46
во 2 ТЧ документа расходная накладная которая называеться Состовляющие
36 Hostess_
of_Love
 
09.08.12
23:46
вторая ТЧ как называется?
37 RomanKR
 
09.08.12
23:50
Вообщем чтобы понятно было При выборе блюда в расходной накладной у меня в этом документе 2 ТЧ Блюда в 1 ТЧ один реквизит ТЧ НАименование блюда  которой привязан к справочнику Блюда а во 2 ТЧ Состовляющие 2 реквизита Наименование и Норма которые есть в справочники Блюда! И вот при выборе блюда в в 1 ТЧ из вызываемой формы мне надо чтобы состовляющие перенеслись во 2ТЧ
38 Hostess_
of_Love
 
09.08.12
23:52
как бэ это было понятно. я  без конфигуратора больше пока ничем не могу помочь
39 Hostess_
of_Love
 
09.08.12
23:52
а зачем вообще 2 ТЧ?
40 RomanKR
 
09.08.12
23:53
чтобы там хранить данные ингридиентов! если я не прав я согласен сделать оп доугому если можно попроще!
41 RomanKR
 
09.08.12
23:54
чтобы потом с помощью них сделать остатки
42 Hostess_
of_Love
 
09.08.12
23:56
ммм... понятно. отладчиком умеешь пользоваться?
43 RomanKR
 
09.08.12
23:57
ну примерно понимаю что это такое ты про точку остановы?
44 Hostess_
of_Love
 
09.08.12
23:59
да-да. поставь точку перед Запрос = Новый Запрос;
а потом проверь Выборка.Следующий() (выделить и нажать shift+f9)
45 RomanKR
 
09.08.12
23:59
Есть ещё к тебе вопрос вдруг знаешь ты

Нужно составить меню а меню может состоять из нескольких блюд и блюда выбираюсться из Вызываемая форма которая иерархическая! Вопрос состоит в том что как сделать так чтобы Вызываемая форма не закрывалась до тех пор пока не выберешь все нужные блюда, а не сразу после выбора 1 блюда?
46 Hostess_
of_Love
 
10.08.12
00:00
только не сразу, сначала дойди до строки НоваяСтрока = СписокИнгридиентов.ДобавитьСтроку();
47 Hostess_
of_Love
 
10.08.12
00:00
(45)Вызываемая форма это форма списка справочника?
48 RomanKR
 
10.08.12
00:01
не двигаеться он по запросу вообще точка остановы на месте стоит и все как блюдо выбираю на этом все и заканчиваеться и пошагово не идент по коду просит перезапустить приложение и вычисление выражения не доступно
49 RomanKR
 
10.08.12
00:03
Вызываемая форма справочник Блюда!
50 RomanKR
 
10.08.12
00:06
ты извини если я буду некомпитентен в своих высказываниях
51 Hostess_
of_Love
 
10.08.12
00:09
(48)о_О хм... Слушай, а ты с какого города?
(49)для такого надо делать форму подбора, если не ошибаюсь
52 RomanKR
 
10.08.12
00:10
(48) Киров
(49) как ещё бы её делать знать
53 Hostess_
of_Love
 
10.08.12
00:11
(52)жаль не из Мск
могу сказать "Посмотри в типовых", но для тебя это роскошь))))
54 Hostess_
of_Love
 
10.08.12
00:12
я сама сейчас просто без своего ноута, а на ПК линуха стоит, и 1с тут не ставится
55 RomanKR
 
10.08.12
00:12
(52) Почему?

Слово роскошь Значило Что это сложно для меня будет?
56 Hostess_
of_Love
 
10.08.12
00:13
так бы проще было помочь, ибо уже бы накидала и справочник и документ
57 Hostess_
of_Love
 
10.08.12
00:13
(55)слово "роскошь" означает, что тебе их не достать просто так
58 RomanKR
 
10.08.12
00:14
я понимаю это через общие модули надо делать а там уже произвольную форму состовлять из нескольких обьектов и ты на (52) не ответила
59 Hostess_
of_Love
 
10.08.12
00:16
зачем общие модули? они нужны дабы по двести раз не писать в модулях разных форм и объектов один и тот же кусок кода длиной n строк
60 RomanKR
 
10.08.12
00:16
ладно с (52) я отстану раз отвечать не хочешь! а как тогда это реализовать?
61 Hostess_
of_Love
 
10.08.12
00:17
(60)я не не хочу, я с этим не разбиралась, знаю что в типовых конфигурациях есть такие формы, а как их делать - хз
62 RomanKR
 
10.08.12
00:18
Спасибо и на этом за помощь ОГРОМНОЕ СПАСИБО!!!
63 Hostess_
of_Love
 
10.08.12
00:19
(62) если что - в аську напиши