|
v7: Почему перестает работать запрос после "ИспользоватьВладельца()" | ☑ | ||
---|---|---|---|---|
0
Gugolovski
22.05.17
✎
05:13
|
Пытаюсь учесть ассортимент, включаю метод "ИспользоватьВладельца()" перестает работать запрос. Отчего так?
//************************************* .... СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); Запрос = СоздатьОбъект("Запрос"); СпрАссортименты = СоздатьОбъект("Справочник.Ассортимент"); Если СпрНоменклатура.Выбрать("Выбираем товар","ДляВыбора") = 1 Тогда ТекНоменклатура = СпрНоменклатура.ТекущийЭлемент(); иначе возврат; КонецЕсли; ТекстЗапроса = " |Товар = Регистр.ОстаткиТМЦ.Номенклатура; |Склад = Регистр.ОстаткиТМЦ.Склад; |Колво = Регистр.ОстаткиТМЦ.Количество; |Цена = Регистр.ОстаткиТМЦ.ЦенаПрод; |Функция Количество = КонОст(Колво); |Группировка Колво; |Условие (Товар = ТекНоменклатура); |Условие(Склад = ВыбСклад); |"; ... Пока Запрос.Группировка(1) = 1 Цикл Количество = Запрос.Количество; КонецЦикла; СпрАссортименты.ИспользоватьВладельца(ТекНоменклатура); ... //*************************** после включения последней строки переменная "Количество" начинает выдавать нули |
|||
1
VladZ
22.05.17
✎
05:20
|
|Группировка Колво; - что это?
|
|||
2
VladZ
22.05.17
✎
05:21
|
Что в итоге нужно "перебирать"? Номенклатуру? Значит пиши "Группировка Номенклатура"
|
|||
3
Gugolovski
22.05.17
✎
05:33
|
Да перебираем номенклатуру, а ответом должно быть количество.
я исправил группировку на: |Группировка Товар ; , но это ничего не меняет. |
|||
4
Chameleon1980
22.05.17
✎
05:38
|
Как тут принято говорить - чудес не бывает.
Автор что-то не договаривает. |
|||
5
Chameleon1980
22.05.17
✎
05:39
|
добавить период попробуй
|
|||
6
Chameleon1980
22.05.17
✎
05:43
|
СпрАссортименты.ИспользоватьВладельца(ТекНоменклатура);
это тут вообще никак не повлияет автор давай больше кода что за смысл просто в цикле: Пока Запрос.Группировка(1) = 1 Цикл Количество = Запрос.Количество; КонецЦикла; ? |
|||
7
Gugolovski
22.05.17
✎
05:58
|
Хотелось бы передать в переменную количество товара.
А потом эту переменную везде подставлять. Пока в код не прописано: "СпрАссортименты.ИспользоватьВладельца(ТекНоменклатура);" количество из регистра подхватывалось. ЗЫ. Я очень смутно понимаю запросы |
|||
8
Мимохожий Однако
22.05.17
✎
07:24
|
Делай запрос сразу по СпрАссортименты с выводом и ассортимента и Владельца.
|
|||
9
Gugolovski
22.05.17
✎
07:27
|
Весь код выглядит так:
//************************************** Процедура Склад() перем ШтрихкодИз, строкаНомер, СтавкаНДС,МаркерАлкоголя, МаркерКрепкого, Товар; перем Запрос, КодВида, Ёмкость, Маркировка, Алкоголь, Крепость, СпрНоменклатура, ТекстОстРозн; перем ВыбКасса, Цена, Количество; перем СпрАссортименты; ОчиститьОкноСообщений(); //выбрали склад Т.зал Продукты СпрСклады = СоздатьОбъект("Справочник.Склады"); СпрСклады.НайтиПоКоду("00004"); ВыбСклад = СпрСклады.ТекущийЭлемент(); Количество = 100; //не могу количество из запроса выдернуть СпрАссортименты = СоздатьОбъект("Справочник.Ассортимент"); СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); Запрос = СоздатьОбъект("Запрос"); Если СпрНоменклатура.Выбрать("Выбираем товар","ДляВыбора") = 1 Тогда ТекНоменклатура = СпрНоменклатура.ТекущийЭлемент(); иначе возврат; КонецЕсли; //********************************************* флаг = СоздатьОбъект("Текст"); текст = СоздатьОбъект("Текст"); текст.ДобавитьСтроку("##@@&&"); текст.ДобавитьСтроку("#"); текст.ДобавитьСтроку("$$$DELETEWARESBYWARECODE"); текст.ДобавитьСтроку(СпрНоменклатура.Код); текст.ДобавитьСтроку("$$$ADDQUANTITY"); КодВида = 10; Ёмкость = 1; Маркировка = 0; Алкоголь = 1; Крепость = 0.1; ТекстЗапроса = " |Товар = Регистр.ОстаткиТМЦ.Номенклатура; |Склад = Регистр.ОстаткиТМЦ.Склад; |Колво = Регистр.ОстаткиТМЦ.Количество; |Цена = Регистр.ОстаткиТМЦ.ЦенаПрод; |Функция Количество = КонОст(Колво); |Группировка Товар; |Группировка Колво; |Условие (Товар = ТекНоменклатура); |Условие(Склад = ВыбСклад); |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Сообщить("не работает"); Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл Количество = Запрос.Количество; КонецЦикла; КонецЦикла; //ищем весовой товар ШтрихкодИз = СпрНоменклатура.Штрихкод; Если СпрНоменклатура.Весовой = 1 Тогда Если СтрДлина(ШтрихкодИз) = 4 Тогда ШтрихкодИз = "0"+ШтрихкодИз; КонецЕсли; ШтрихкодИз = "29"+ШтрихкодИз; КонецЕсли; //**********/ //Определяем группу НДС Если Число(Лев(СпрНоменклатура.СтавкаНДС,2)) = 10 Тогда СтавкаНДС = 1 ; Иначе СтавкаНДС = 2; КонецЕсли; //**********/ Если СпрНоменклатура._АлкогольЕмкость_НИН > 0 Тогда МаркерАлкоголя = 1; иначе МаркерАлкоголя = 0; МаркерКрепкого = 0; КонецЕсли; Если (СпрНоменклатура._АлкогольМаркировка_НИН = 1) и (МаркерАлкоголя = 1) Тогда МаркерКрепкого = 1; иначе МаркерКрепкого = 0; КонецЕсли; Цена = глВернутьЦенуПродажи(СпрНоменклатура.БазоваяЕдиница,ВыбСклад, ТекущаяДата()); текст.ДобавитьСтроку( СпрНоменклатура.Код + ";" + // 1 - код товара (Идентификатор товара) Далее в скобках информация из документации Фронтол 5 //ИНН СокрП(ШтрихкодИз) + ";" + // 2 - штрихкод товара штрихкоды товаров через запятую //+ СокрП(СпрНоменклатура.Наименование) + ";" + // 3 - наименование СокрП(СпрНоменклатура.ЧековоеИмя) + ";" + // 4 - наименование для кассы СокрЛП(Формат(Цена,"Ч15.2")) +";"+//Формат(Цена,"Ч15.2"))+";"+ // 5 - цена СокрЛП(Формат(Количество,"Ч10.3"))+";"+ // 6 - количество (Остаток) "0;" + // 7 - вседа 0 (-) "0;" + // 8 - скидка на товар (Флаги через запятую: дробное количество (весовой); продажа; возврат; отрицательные остатки; без ввода количества; списание остатков; редактирование цены; ввод количества вручную; печатать в документе; наливаемый товар; скидки; запрос цены; запрос штрихкода; округление ) "0;" + // 9 - максимальная скидка (Минимальная цена) "0;" + // 10 - дата начала действия скидки (Срок годности) "0;" + // 11 - дата окончания действия скидки (Код схемы разрезов. Значение по умолчанию: ? 1 – если в поле №19 задано значение, отличное от 0; ? 0 – если в поле №19 задано значение = 0) "0;" + // 12 - время начала действия скидки (Вариант использования разрезов: ? 0 – полный список; ? 1 – заданный список; ? 2 – заданный список с остатком. Значение по умолчанию = 0. ) "0;" + // 13 - время окончания действия скидки (-) "1;" + // 14 - коэффициент пересчета всегда 1 (Коэффициент штрихкода) "0;" + // 15 - код товара с базовой единицей (-) СпрНоменклатура.Родитель.Код + ";" + // 16 - код родительской группы "1;"+ // 17 - выгружаем товар (1) или группу (0) СпрНоменклатура.Уровень()+";"+//Номенклатура.Уровень + ";" + // 18 - номер уровня иерархического списка (-) "0;" + // 19 - номер секции (-) ";" + // 20 - (Серия) ";" + // 21 - (Сертификат) ";" + // 22 - (-) СтавкаНДС+";" + // 23 - (Код налоговой группы) ";" + // 24 - (Код весов с ПЭ. Значение по умолчанию = 0 ) ";" + // 25 - (Код товара в весах ПЭ.) ";" + // 26 - (Артикул) ";" + // 27 - (Тип скидки: ? 0 – процентная. ) ";" + // 28 - (Значение скидки) ";" + // 29 - (Максимальная скидка, %) ";" + // 30 - (-) ";" + // 31 - (Файл *.bmp, *.jpg, *.jpeg, *.wmf, *.ico, *.emf, *.svg, *.png с картинкой) ";" + // 32 - (Описание) ";" + // 33 - (Кратность количества) ";" + // 34 - ";" + // 35 - ";" + // 36 - ";" + // 37 - ";" + // 38 - ";" + // 39 - ";" + // 40 - ";" + // 41 - ";" + // 42 - ";" + // 43 - ";" + // 44 - ";" + // 45 - ";" + // 46 - ";" + // 47 - ";" + // 48 - ";" + // 49 - ";" + // 50 - "0;" + // 51 - (Тип товара: ? 0 – товар является товаром (значение по умолчанию); ? 1 – товар является тарифицируемой услугой. ) ";" + // 52 - (Код тарифицируемой услуги) ?(МаркерАлкоголя = 1,СпрНоменклатура.ВидАлкоголя,КодВида) + ";" + // 53 - (Код вида продукции Значение по умолчанию: 10) ?(МаркерАлкоголя = 1,СпрНоменклатура._АлкогольЕмкость_НИН,Ёмкость) + ";" + // 54 - (Ёмкость тары, л Значение по умолчанию: 1 ) ?(МаркерАлкоголя = 1,1,Маркировка) + ";" + // 55 - (Алкогольная продукция: ? 0 – нет; ? 1 – алкогольная продукция. Значение по умолчанию: 0) ?(МаркерКрепкого = 1,0,Алкоголь)+";" + // 56 - (Маркировка алкогольной продукции ? 0 – с маркой; ? 1 – без марки. Значение по умолчанию: 0) ?(МаркерАлкоголя = 1,СпрНоменклатура._АлкогольКрепость_НИН,Крепость) + ";" + // 57 - (Крепость алкогольной продукции, %. Значение по умолчанию: 0,1) ";;" // - ); //если есть ассортимент СпрАссортименты.ИспользоватьВладельца(ТекНоменклатура); СпрАссортименты.ВыбратьЭлементы(); Пока СпрАссортименты.ПолучитьЭлемент()=1 Цикл Если СпрАссортименты.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; текст.ДобавитьСтроку( СпрНоменклатура.Код + ";" + // 1 - код товара (Идентификатор товара) Далее в скобках информация из документации Фронтол 5 //ИНН СокрП(СпрАссортименты.Штрихкод) + ";" + // 2 - штрихкод товара штрихкоды товаров через запятую //+ СокрП(СпрНоменклатура.Наименование) + ";" + // 3 - наименование СокрП(СпрНоменклатура.ЧековоеИмя) + ";" + // 4 - наименование для кассы СокрЛП(Формат(Цена,"Ч15.2")) +";"+//Формат(Цена,"Ч15.2"))+";"+ // 5 - цена СокрЛП(Формат(Количество,"Ч10.3"))+";"+ // 6 - количество (Остаток) "0;" + // 7 - вседа 0 (-) "0;" + // 8 - скидка на товар (Флаги через запятую: дробное количество (весовой); продажа; возврат; отрицательные остатки; без ввода количества; списание остатков; редактирование цены; ввод количества вручную; печатать в документе; наливаемый товар; скидки; запрос цены; запрос штрихкода; округление ) "0;" + // 9 - максимальная скидка (Минимальная цена) "0;" + // 10 - дата начала действия скидки (Срок годности) "0;" + // 11 - дата окончания действия скидки (Код схемы разрезов. Значение по умолчанию: ? 1 – если в поле №19 задано значение, отличное от 0; ? 0 – если в поле №19 задано значение = 0) "0;" + // 12 - время начала действия скидки (Вариант использования разрезов: ? 0 – полный список; ? 1 – заданный список; ? 2 – заданный список с остатком. Значение по умолчанию = 0. ) "0;" + // 13 - время окончания действия скидки (-) "1;" + // 14 - коэффициент пересчета всегда 1 (Коэффициент штрихкода) "0;" + // 15 - код товара с базовой единицей (-) СпрНоменклатура.Родитель.Код + ";" + // 16 - код родительской группы "1;"+ // 17 - выгружаем товар (1) или группу (0) СпрНоменклатура.Уровень()+";"+//Номенклатура.Уровень + ";" + // 18 - номер уровня иерархического списка (-) "0;" + // 19 - номер секции (-) ";" + // 20 - (Серия) ";" + // 21 - (Сертификат) ";" + // 22 - (-) СтавкаНДС+";" + // 23 - (Код налоговой группы) ";" + // 24 - (Код весов с ПЭ. Значение по умолчанию = 0 ) ";" + // 25 - (Код товара в весах ПЭ.) ";" + // 26 - (Артикул) ";" + // 27 - (Тип скидки: ? 0 – процентная. ) ";" + // 28 - (Значение скидки) ";" + // 29 - (Максимальная скидка, %) ";" + // 30 - (-) ";" + // 31 - (Файл *.bmp, *.jpg, *.jpeg, *.wmf, *.ico, *.emf, *.svg, *.png с картинкой) ";" + // 32 - &nb |
|||
10
Gugolovski
22.05.17
✎
07:35
|
Удалить текст нельзя? Так может будет читабельнее:
//****************************************** Процедура Склад() перем ШтрихкодИз, строкаНомер, СтавкаНДС,МаркерАлкоголя, МаркерКрепкого, Товар; перем Запрос, КодВида, Ёмкость, Маркировка, Алкоголь, Крепость, СпрНоменклатура, ТекстОстРозн; перем ВыбКасса, Цена, Количество; перем СпрАссортименты; ОчиститьОкноСообщений(); //выбрали склад Т.зал Продукты СпрСклады = СоздатьОбъект("Справочник.Склады"); СпрСклады.НайтиПоКоду("00004"); ВыбСклад = СпрСклады.ТекущийЭлемент(); Количество = 100; //не могу количество из запроса выдернуть СпрАссортименты = СоздатьОбъект("Справочник.Ассортимент"); СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); Запрос = СоздатьОбъект("Запрос"); Если СпрНоменклатура.Выбрать("Выбираем товар","ДляВыбора") = 1 Тогда ТекНоменклатура = СпрНоменклатура.ТекущийЭлемент(); иначе возврат; КонецЕсли; //********************************************* флаг = СоздатьОбъект("Текст"); текст = СоздатьОбъект("Текст"); текст.ДобавитьСтроку("##@@&&"); текст.ДобавитьСтроку("#"); текст.ДобавитьСтроку("$$$DELETEWARESBYWARECODE"); текст.ДобавитьСтроку(СпрНоменклатура.Код); текст.ДобавитьСтроку("$$$ADDQUANTITY"); КодВида = 10; Ёмкость = 1; Маркировка = 0; Алкоголь = 1; Крепость = 0.1; ТекстЗапроса = " |Товар = Регистр.ОстаткиТМЦ.Номенклатура; |Склад = Регистр.ОстаткиТМЦ.Склад; |Колво = Регистр.ОстаткиТМЦ.Количество; |Цена = Регистр.ОстаткиТМЦ.ЦенаПрод; |Функция Количество = КонОст(Колво); |Группировка Товар; |Группировка Колво; |Условие (Товар = ТекНоменклатура); |Условие(Склад = ВыбСклад); |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Сообщить("не работает"); Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл Количество = Запрос.Количество; КонецЦикла; КонецЦикла; //ищем весовой товар ШтрихкодИз = СпрНоменклатура.Штрихкод; Если СпрНоменклатура.Весовой = 1 Тогда Если СтрДлина(ШтрихкодИз) = 4 Тогда ШтрихкодИз = "0"+ШтрихкодИз; КонецЕсли; ШтрихкодИз = "29"+ШтрихкодИз; КонецЕсли; Цена = глВернутьЦенуПродажи(СпрНоменклатура.БазоваяЕдиница,ВыбСклад, ТекущаяДата()); текст.ДобавитьСтроку( СпрНоменклатура.Код + ";" + СокрП(ШтрихкодИз) + ";" + СокрП(СпрНоменклатура.Наименование) + ";" + СокрП(СпрНоменклатура.ЧековоеИмя) + ";" + СокрЛП(Формат(Цена,"Ч15.2")) +";"+//Формат(Цена,"Ч15.2"))+";"+ СокрЛП(Формат(Количество,"Ч10.3"))+";"+); //если есть ассортимент СпрАссортименты.ИспользоватьВладельца(ТекНоменклатура); СпрАссортименты.ВыбратьЭлементы(); Пока СпрАссортименты.ПолучитьЭлемент()=1 Цикл Если СпрАссортименты.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; текст.ДобавитьСтроку( СпрНоменклатура.Код + ";" + СокрП(СпрАссортименты.Штрихкод) + ";" + СокрП(СпрНоменклатура.Наименование) + ";" + СокрП(СпрНоменклатура.ЧековоеИмя) + ";" + СокрЛП(Формат(Цена,"Ч15.2")) +";"+//Формат(Цена,"Ч15.2"))+";"+ СокрЛП(Формат(Количество,"Ч10.3"))+";"+ ); КонецЦикла; Для Инд = 1 По глККМOffLine.КоличествоСтрок() Цикл Если глККМOffLine.ПолучитьЗначение(Инд, "Вкл") = 1 Тогда текст.Записать(глККМOffLine.ПолучитьЗначение(Инд,"КаталогВыгрузки")+"\goods.txt"); флаг.Записать(глККМOffLine.ПолучитьЗначение(Инд,"КаталогВыгрузки")+"\goods.f"); Сообщить("Касса: "+ глККМOffLine.ПолучитьЗначение(Инд, "ККМ") + " загружена"); КонецЕсли; КонецЦикла; Сообщить("========================================"); Сообщить(ТекущееВремя()+" - Окончена Загрузка ККМ"); конецпроцедуры |
|||
11
Gugolovski
22.05.17
✎
07:37
|
Если в товаре 1 штрихкод все работает, если их несколько, то количество обнуляется
|
|||
12
cw014
22.05.17
✎
07:39
|
СпрАссортименты.ИспользоватьВладельца(ТекНоменклатура.ТекущийЭлемент()); - пробовал?
|
|||
13
VladZ
22.05.17
✎
07:55
|
Так и не могу врубиться, зачем тебе "|Группировка Колво;"
|
|||
14
Chameleon1980
22.05.17
✎
07:55
|
еще раз.
викинуть нах Группировка Количество что за ересь? |
|||
15
Gugolovski
22.05.17
✎
08:02
|
Странная штука. Запустил процедуру как есть в рабочей базе, плюнув на количество (оно не принципиально), а оно работает. Подхватывает количество со склада.
А вот в копии БД, где ковырялся - нет. (12)СпрАссортименты.ИспользоватьВладельца(ТекНоменклатура.ТекущийЭлемент()); - попробовал не лечит (14)Группировку количество выкину. |
|||
16
Gugolovski
22.05.17
✎
08:08
|
А нет, рано радовался. 2 товара с ассортиментом верно прогрузило, а потом, после загрузки товара без ассортимента, перестала выдавать количество.
|
|||
17
Смотрящий
22.05.17
✎
08:12
|
(16) Тимвьювер или аммиадмин есть ?
|
|||
18
Gugolovski
22.05.17
✎
08:15
|
сейчас поставлю
|
|||
19
Мимохожий Однако
22.05.17
✎
08:15
|
(16) Сделать запрос по ассортименту кто запрещает?
|
|||
20
Zmich
22.05.17
✎
08:16
|
(15). Попробуй
|Группировка Товар без групп; Нули могут идти из-за вышестоящих групп для данной номенклатуры. |
|||
21
cw014
22.05.17
✎
08:17
|
А точно справочник Ассортимент подчинен справочнику Номенклатура?
|
|||
22
Смотрящий
22.05.17
✎
08:18
|
(19) Выборкой быстрее будет
|
|||
23
Gugolovski
22.05.17
✎
08:28
|
(17) здесь можно отправить сообщение в личку?
|
|||
24
Смотрящий
22.05.17
✎
08:28
|
(23) В почту ИД слей
|
|||
25
Смотрящий
22.05.17
✎
08:29
|
и парол
|
|||
26
Gugolovski
22.05.17
✎
08:30
|
(25) скинул
|
|||
27
Ёпрст
22.05.17
✎
09:04
|
(9) всё в топку.
|
|||
28
Ёпрст
22.05.17
✎
09:05
|
если че, запрос там не нужен.
Поиск по коду для склада - тоже. |
|||
29
Ёпрст
22.05.17
✎
09:08
|
>>>СпрНоменклатура.Выбрать
это тоже выкинуть |
|||
30
Ёпрст
22.05.17
✎
09:08
|
Объявление переменных тоже выкинуть
|
|||
31
Ёпрст
22.05.17
✎
09:09
|
>>>Число(Лев(СпрНоменклатура.СтавкаНДС,2))
Это тоже полный ПЭ. |
|||
32
Gugolovski
22.05.17
✎
09:12
|
Смотритель помог. Спасибо. Самое смешное (или глупое), что количество, по той позиций, что я все время пытался получить было на и остатках нулевое. Обработка работала, а я тупил.
|
|||
33
Gugolovski
22.05.17
✎
09:12
|
Зато увидел работу профессионала, что тоже будет полезным))
|
|||
34
Ёпрст
22.05.17
✎
09:14
|
(33) выкладывай работу, на посмотреть
|
|||
35
Gugolovski
22.05.17
✎
09:30
|
(34) чуть ранее пытался выложить, весь код не помещается
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |