Имя: Пароль:
1C
 
V8: розница 2.2.5 добавить реквизит остаток на форму выбора товаров с идентичным ШК
0 andrewrocker
 
03.08.17
20:36
Всем привет!

На кассе, если кассир пикнул "Березовая на Бруньках", то мы решили, что у нас будет столько карточек Номенклатуры "Березовая на Бруньках", сколько у нас заводов, выпускающих "Березовую на Бруньках", чтобы в алкашных декларациях не обламываться.

Делаю через расширение, чтобы обновлять розницу без проблем, и не могу решить ошибку "итератор не определен". На самом начале, когда открываю первый цикл.

Пытаюсь обойти ТЧ общей формы через нажатие дополнительной кнопки. И и не могу обойти - т.к. как будто в форме нет массива, хотя он там логически есть.




    Для Каждого СтрочкаВыбора Из ЭтаФорма.ДеревоВыбора Цикл
        НоменклатураОстатка = СтрочкаВыбора.Номенклатура;
        ХарактеристикаОстатка = СтрочкаВыбора.Характеристика;
        СкладОстатка = Справочники.Склады.СкладПоУмолчанию(ПользователиИнформационнойБазы.ТекущийПользователь());
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    ТоварыНаСкладахОстаткиИОбороты.Склад,
        |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
        |    ТоварыНаСкладахОстаткиИОбороты.Характеристика,
        |    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
        |    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
        |    ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот,
        |    ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
        |    ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
        |    ТоварыНаСкладахОстаткиИОбороты.РезервНачальныйОстаток,
        |    ТоварыНаСкладахОстаткиИОбороты.РезервКонечныйОстаток,
        |    ТоварыНаСкладахОстаткиИОбороты.РезервОборот,
        |    ТоварыНаСкладахОстаткиИОбороты.РезервПриход,
        |    ТоварыНаСкладахОстаткиИОбороты.РезервРасход
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        |ГДЕ
        |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура = &НоменклатураОстатка
        |    И ТоварыНаСкладахОстаткиИОбороты.Склад = &СкладОстатка
        |    И ТоварыНаСкладахОстаткиИОбороты.Характеристика = &ХарактеристикаОстатка"
        ;
        Запрос.УстановитьПараметр("НоменклатураОстатка",НоменклатураОстатка);
        Запрос.УстановитьПараметр("СкладОстатка",СкладОстатка);
        Запрос.УстановитьПараметр("ХарактеристикаОстатка",ХарактеристикаОстатка);
        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        
        Пока РезультатЗапроса.Следующий() Цикл
            ДеревоВыбора.Остаток = РезультатЗапроса.КоличествоКонечныйОстаток;
        КонецЦикла;
        
    КонецЦикла;
1 andrewrocker
 
03.08.17
20:37
отдельное большое спасибо будет за идею, как сделать автозапуск этой процедуры именно из этой же формы.
2 lenochka-semicova
 
07.08.17
13:15
Начать с того, что
ЭлементыДерева = ЭтаФорма.ДеревоВыбора.ПолучитьЭлементы();
Для Каждого ЭлементДерева Из ЭлементыДерева Цикл
...
3 lenochka-semicova
 
07.08.17
13:16
Ну и запрос в цикле, это конечно же ужасно.
4 IVT_2009
 
07.08.17
15:51
Знакомая тема, как смогли расширение подключить если до самого последнего релиза стоял режим совместимости ?
5 andrewrocker
 
08.08.17
03:54
(4) странно, но проблем не возникло.
6 andrewrocker
 
08.08.17
19:35
Спасибо, я значительно продвинулся. Осталось дать дереву значений - непосредственно значение.

Пишу вот что:
Пока РезультатЗапроса.Следующий() Цикл
ЭлементыДерева.Остаток = РезультатЗапроса.КоличествоКонечныйОстаток;
КонецЦикла;

Получаю ошибку:
Поле объекта не обнаружено (Остаток)

Работаю из расширения. На старте пишу вот это:
ЭлементыДерева = ЭтаФорма.ДеревоВыбора.ПолучитьЭлементы();