|
Добавление группы номенклатуры в реализацию | ☑ | ||
---|---|---|---|---|
0
R0m1n
18.03.13
✎
10:45
|
УТ 10.2. Потребовалось добавить в реализацию товаров/услуг добавление разом всей группы из справочника "Номенклатура" в табличную часть "Товары". сделал по аналогии с документом "Установка скидок номенклатуры" - из командной панели открываем форму модально, делаем запрос, результат как бы должен перенестись в "Товары". но у меня почему то перенос не срабатывает. не пойму даже к каким "Товарам" из этой формы обращается - добавляю для проверки несколько позиций номенклатуры, а Товары.Количество() - выдает ноль почему то.
|
|||
1
Галахад
гуру
18.03.13
✎
10:47
|
Иллюстрации собственным кодом повышают карму.
|
|||
2
ZaprosMan
18.03.13
✎
10:48
|
Давай запрос.
|
|||
3
R0m1n
18.03.13
✎
10:52
|
// Процедура вызывается при нажатии кнопки "ОК",
// заполняет табличную часть документа. // Процедура ОКНажатие(Элемент) ТекстЗапроса = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура, | &ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки, | &ОграничениеСкидкиНаценки КАК ОграничениеСкидкиНаценки |ИЗ | Справочник.Номенклатура КАК Номенклатура | |ГДЕ | (НЕ(Номенклатура.Ссылка.ЭтоГруппа)) И | (НЕ(Номенклатура.Ссылка.Набор)) И | Номенклатура.Ссылка В ИЕРАРХИИ(&Группы) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | КомплектующиеНоменклатуры.Комплектующая, | &ПроцентСкидкиНаценки, | &ОграничениеСкидкиНаценки |ИЗ | РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры | |ГДЕ | (НЕ(КомплектующиеНоменклатуры.Номенклатура.Ссылка.ЭтоГруппа)) И | ((КомплектующиеНоменклатуры.Номенклатура.Ссылка.Набор)) И | (КомплектующиеНоменклатуры.Номенклатура.Ссылка В ИЕРАРХИИ (&Группы))"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("Группы", Группы); Запрос.УстановитьПараметр("ПроцентСкидкиНаценки", ПроцентСкидкиНаценки); Запрос.УстановитьПараметр("ОграничениеСкидкиНаценки", ОграничениеСкидкиНаценки); ТаблицаТоваров = Запрос.Выполнить().Выгрузить(); Добавить = Ложь; мСтруктураПараметров.Свойство("Добавить", Добавить); КачествоПустой = Справочники.Качество.ПустаяСсылка(); Если Добавить = Неопределено Или НЕ Добавить Тогда ТаблицаТоваров.Колонки.Добавить("Качество"); ТаблицаТоваров.ЗаполнитьЗначения(КачествоПустой, "Качество"); Товары.Загрузить(ТаблицаТоваров); Иначе ТаблицаПроверкиДублей = Товары.Выгрузить(); Сообщить(Товары.Количество()); Для Каждого СтрокаДобавления ИЗ ТаблицаТоваров Цикл Если ТаблицаПроверкиДублей.Найти(СтрокаДобавления.Номенклатура, "Номенклатура") = Неопределено Тогда СтрокаТовара = Товары.Добавить(); СтрокаТовара.Номенклатура = СтрокаДобавления.Номенклатура; СтрокаТовара.Качество = КачествоПустой; Сообщить("добавление"); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
4
R0m1n
18.03.13
✎
10:55
|
код тупо скопирован с обработки заполнения документа "Установка скидок номенклатуры", как и вся форма заполнения. Просто убрал чтобы переносились только строки без процентов наценки пока. Строки в таблице товаров есть проверял: сообщить("добавление").
|
|||
5
Maxus43
18.03.13
✎
10:55
|
Добавить = Ложь;
Если Добавить = Неопределено Или НЕ Добавить Тогда это вот зачем вобще? З.ы. Товары.Загрузить(ТаблицаТоваров) - Товары там не ТЧ реализации. Форма другая же |
|||
6
pessok
18.03.13
✎
10:58
|
(5) ему б не загружать, а все же в цикле Добавить(), скорее всего
|
|||
7
Reset
18.03.13
✎
11:00
|
(4) >> тупо скопирован с обработки
В той обработке так и написано: |ГДЕ | (НЕ(Номенклатура.Ссылка.ЭтоГруппа)) И | (НЕ(Номенклатура.Ссылка.Набор)) И |
|||
8
R0m1n
18.03.13
✎
11:02
|
(7) Ну и что? я вообще смысла не вижу запрос обсуждать - там все нормально, строки выбираются как надо. Мне непонятно почему я к ТЧ "Товары" не могу обратиться?
|
|||
9
pessok
18.03.13
✎
11:03
|
(8) ВладелецФормы.Товары.Загрузить(ТаблицаТоваров)
|
|||
10
Галахад
гуру
18.03.13
✎
11:04
|
Попробуй так:
// ТаблицаТоваров.Колонки.Добавить("Качество"); // ТаблицаТоваров.ЗаполнитьЗначения(КачествоПустой, "Качество"); |
|||
11
ZaprosMan
18.03.13
✎
11:06
|
В результате запроса есть что то?
Данные есть? выбирает запрос? |
|||
12
Reset
18.03.13
✎
11:10
|
(8) Нет, в запросе просто характерен подход - через опу, без понимания происходящего и без желания понять.
|
|||
13
R0m1n
18.03.13
✎
11:10
|
(11) есть. я же говорю проблема не в этом. проблема в том что я к "Товары" вообще не могу обратиться. в документе "Установка скидок номенклатуры" при использовании аналогичной обработки Сообщить(Товары.Количество())выдает количество строк в табличной части документа. А в реализации у меня 0 выкидывает, даже если что то там есть. в этом проблема.
|
|||
14
pessok
18.03.13
✎
11:11
|
(13) ты (9) пробовал?
|
|||
15
R0m1n
18.03.13
✎
11:12
|
(14) значение не явяется значением объектного типа(Товары)
|
|||
16
Reset
18.03.13
✎
11:13
|
(15) Вот этот код покажи
"из командной панели открываем форму модально, " и где находится эта командна панель, не мешало бы |
|||
17
Reset
18.03.13
✎
11:14
|
и что такое Товары в (3), поясни
|
|||
18
pessok
18.03.13
✎
11:15
|
(17) меня тоже смутило, такое ощущение, что в (3) никаких кривых форм не открывается, а просто идет обработчик, как везде
|
|||
19
R0m1n
18.03.13
✎
11:15
|
(17) Табличная часть "Товары" документа "реализация товаров услуг"
|
|||
20
Reset
18.03.13
✎
11:15
|
Зря я воелз, я даже проблему непонимаю :)
"проблема в том что я к "Товары" вообще не могу обратиться" tt |
|||
21
Reset
18.03.13
✎
11:16
|
(19) Процедура из (3) где находится?
|
|||
22
R0m1n
18.03.13
✎
11:17
|
Процедура КоманднаяПанельТоварыДобавитьИзГруппы(Кнопка)
// Процедура вызывается при нажатии кнопки "Заполнить" командной панели // табличного поля "Товары". // ЗаполнитьТовары(Истина, "Группа"); КонецПроцедуры // Осуществляет вызов формы заполнения табличной части документа // // Параметры: // Добавить - Истина - добавить, Ложь - заполнить с предворительной очисткой, // ОснованиеЗаполнения - строка "Группа" или "Поставщик". // Процедура ЗаполнитьТовары(Добавить, ОснованиеЗаполнения) Если Товары.Количество() > 0 И НЕ Добавить Тогда ТекстВопроса = "Перед заполнением табличная часть будет очищена. Заполнить?"; Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да, Метаданные().Представление()); Если Ответ <> КодВозвратаДиалога.Да Тогда Возврат; КонецЕсли; КонецЕсли; Если ОснованиеЗаполнения = "Группа" Тогда // Теперь нужно выбрать группу, по которой будем заполнять. ФормаЗаполнения = ПолучитьФорму("ФормаЗаполнения"); ФормаЗаполнения.мСтруктураПараметров = Новый Структура("Добавить", Добавить); ФормаЗаполнения.Заголовок = "Выберите группу справочника ""Номенклатура"" для заполнения табличной части документа ""Установка скидок"""; Группа = ФормаЗаполнения.ОткрытьМодально(); КонецЕсли; КонецПроцедуры // ЗаполнитьТовары() |
|||
23
R0m1n
18.03.13
✎
11:17
|
(21) в модуле формы, той которую модально открываю
|
|||
24
pessok
18.03.13
✎
11:18
|
(23) а в первоначальном варианте где находилась?
|
|||
25
R0m1n
18.03.13
✎
11:18
|
там же
|
|||
26
pessok
18.03.13
✎
11:18
|
(22) воооооот. не было там никакой кривой формы, а ты придумал свой велосипед. раз открываешь новую форму, то делай как в (9). А лучше тупо откажись от ненужной лишней сущности
|
|||
27
pessok
18.03.13
✎
11:19
|
(26) а, была форма. притом форма добавлена в сам документ, жуть какая
|
|||
28
cw014
18.03.13
✎
11:19
|
ТС, если в группе - товары, тогда можешь сделать через набор и не париться
|
|||
29
R0m1n
18.03.13
✎
11:20
|
(26) так не работает же - я написал.
|
|||
30
R0m1n
18.03.13
✎
11:21
|
(28) в 10.2 наборов вроде и нету
|
|||
31
cw014
18.03.13
✎
11:22
|
(30) Дааа, древностью балуетесь
|
|||
32
pessok
18.03.13
✎
11:22
|
(29) потому что при получении формы не задал владельца
|
|||
33
R0m1n
18.03.13
✎
11:25
|
(32) так он же вроде автоматом назначается - я же форму модально открываю из другой, разве нет?
|
|||
34
cw014
18.03.13
✎
11:25
|
(33) Разве нет...
|
|||
35
pessok
18.03.13
✎
11:25
|
(33) что у тебя в ВладелецФормы по отладчику?
|
|||
36
R0m1n
18.03.13
✎
11:28
|
пусто
|
|||
37
R0m1n
18.03.13
✎
11:28
|
почему пусто-то?
|
|||
38
Reset
18.03.13
✎
11:29
|
Если хочушь тупо, как ты любишь - указывай владельца при создании формы и (9)
|
|||
39
R0m1n
18.03.13
✎
11:29
|
из за этого связь и не устанавливается с товарами
|
|||
40
cw014
18.03.13
✎
11:29
|
(37) Ааааааааааа, почему пусто? Кошмар....
Потому что не указал, смотри в СП синтаксис ПолучитьФорму и ОткрытьФорму |
|||
41
Reset
18.03.13
✎
11:30
|
Еще загадка - должно было в (3) говорить что переменная Товары не определена
|
|||
42
Reset
18.03.13
✎
11:31
|
(39) Форма, в которой процедура (3) - создавалась как "форма документа" или как "произвольная форма"
|
|||
43
Reset
18.03.13
✎
11:31
|
?
|
|||
44
pessok
18.03.13
✎
11:31
|
(41) да не открывается там форма наверняка, идет форма выбора номенклатуры по группам и сразу обработка, как пить дать
|
|||
45
R0m1n
18.03.13
✎
11:32
|
я её вообще тупо с установки скидок номенклатуры перетащил прямо и все. так она произвольная сама по себе
|
|||
46
Reset
18.03.13
✎
11:33
|
(45) kek
|
|||
47
Reset
18.03.13
✎
11:37
|
Поэтому и (41).
Скопировалась как форма документа-объекта установки скидок (оттуда и товары) |
|||
48
Reset
18.03.13
✎
11:37
|
Копипастеры хреновы
|
|||
49
pessok
18.03.13
✎
11:37
|
+(47) а ДокументОбъект само собой пустой
|
|||
50
Reset
18.03.13
✎
11:38
|
(49) Ну да, новый. Его автор самоотверженно и заполняет
|
|||
51
R0m1n
18.03.13
✎
11:43
|
короче в коде установил владельца, запахало
ФормаЗаполнения = ПолучитьФорму("ФормаЗаполнения", ЭтаФорма); только все равно не пойму почему в установке скидок номенклатуры все нормально работает? где то там привязка выставлена? |
|||
52
pessok
18.03.13
✎
11:44
|
(51) потому что гладиолус. когда ты скопировал форму, у тебя и Объект-основание скопировался. Можно изменить объект-основание самой формы и не юзать владельца
|
|||
53
Галахад
гуру
18.03.13
✎
11:45
|
(51) Зайди в "Свойства" формы.
|
|||
54
R0m1n
18.03.13
✎
11:45
|
я заходил - ничё не увидел. щас еще раз проверю
|
|||
55
pessok
18.03.13
✎
11:46
|
ты там должен был увидеть Объект: ДокументОбъект.УстановкаСкидокНоменклатуры
|
|||
56
R0m1n
18.03.13
✎
11:49
|
блин все равно не вижу. щелкаю правой кнопкой по "ФормаЗапонения" - свойства, правильно? Там только Имя, Синоним, Комментарий и ТипФормы. нету больше ничё
|
|||
57
R0m1n
18.03.13
✎
11:50
|
да и вообще, я поиск ссылок на другие объекты сделал перед тем как копировать - он мне ничё не выдал. чё за шляпа? где эти скрытые реквизиты?
|
|||
58
cw014
18.03.13
✎
11:50
|
(56) А теперь попробуй внизу формы ткнуть "реквизиты"
|
|||
59
cw014
18.03.13
✎
11:50
|
(56) Иногда помогает
|
|||
60
Галахад
гуру
18.03.13
✎
11:55
|
(56) Ну тыкне по форме еще раз или два.
|
|||
61
R0m1n
18.03.13
✎
11:55
|
(59) нашел, спасибо всем. в свое оправдание могу сказать, что я сразу написал что копировал подчистую всю форму. так и знал что реквизит какой нибудь поганый где нибудь не выставлен. а поиск ссылок сейчас нормально сработал почему-то - видимо руки выпрямились)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |