8.х И снова запросы.....

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем serega2671, 13 ноя 2010.

  1. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ПриОткрытии()
    
    Запрос = Новый Запрос;				   
    Запрос.Текст = "ВЫБРАТЬ
    |	ОстаткиПодбор.Магазин,
    |	ОстаткиПодбор.Номенклатура,
    |	ОстаткиПодбор.ХарактеристикаНоменклатуры,
    |	СУММА(ОстаткиПодбор.Цена) КАК Цена,
    |	СУММА(ОстаткиПодбор.Остаток) КАК Остаток
    |ИЗ
    |	(ВЫБРАТЬ
    |		ОстаткиПоМагазину.Магазин КАК Магазин,
    |		ОстаткиПоМагазину.Номенклатура КАК Номенклатура,
    |		ОстаткиПоМагазину.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |		0 КАК Цена,
    |		ОстаткиПоМагазину.Остаток КАК Остаток
    |	ИЗ
    |		(";
    Если  ПроцедурыОбменаДаннымиПоКассе.ЭтоУзелКассы() Тогда
    Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ
    |	ИнформативныеОстаткиТоваровПоСкладам.Склад.Магазин КАК Магазин,
    |	ИнформативныеОстаткиТоваровПоСкладам.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |	ИнформативныеОстаткиТоваровПоСкладам.Номенклатура КАК Номенклатура,
    |	СУММА(ИнформативныеОстаткиТоваровПоСкладам.Количество) КАК Остаток
    |ИЗ
    |	РегистрСведений.ИнформативныеОстаткиТоваровПоСкладам КАК ИнформативныеОстаткиТоваровПоСкладам
    |ГДЕ
    |	ИнформативныеОстаткиТоваровПоСкладам.Склад.Магазин = &Магазин
    |	И ИнформативныеОстаткиТоваровПоСкладам.Номенклатура = &Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    |	ИнформативныеОстаткиТоваровПоСкладам.Склад.Магазин,
    |	ИнформативныеОстаткиТоваровПоСкладам.ХарактеристикаНоменклатуры,
    |	ИнформативныеОстаткиТоваровПоСкладам.Номенклатура";
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе	</span> 
    Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ
    |	ТоварыНаСкладахОстатки.Склад.Магазин КАК Магазин,
    |	ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |	ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    |	СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток
    |ИЗ
    |	РегистрНакопления.ТоварыНаСкладах.Остатки(
    |			&Дата,
    |			Номенклатура = &Номенклатура
    |				И Склад.Магазин = &Магазин) КАК ТоварыНаСкладахОстатки
    |   
    |СГРУППИРОВАТЬ ПО
    |	ТоварыНаСкладахОстатки.Склад.Магазин,
    |	ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
    |	ТоварыНаСкладахОстатки.Номенклатура";
    КонецЕсли;			   
    Запрос.Текст = Запрос.Текст + ") КАК ОстаткиПоМагазину
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ЦеныНоменклатуры.Магазин,
    |		ЦеныНоменклатуры.Номенклатура,
    |		ЦеныНоменклатуры.ХарактеристикаНоменклатуры,
    |		ЦеныНоменклатуры.Цена,
    |		0
    |	ИЗ
    |		РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
    |				&Дата,
    |				Номенклатура = &Номенклатура
    |					И Магазин = &Магазин) КАК ЦеныНоменклатуры) КАК ОстаткиПодбор
    |      [b]Где  ОстаткиПодбор.Остаток > 0[/b]
    |
    |СГРУППИРОВАТЬ ПО
    |	ОстаткиПодбор.Магазин,
    |	ОстаткиПодбор.Номенклатура,
    |	ОстаткиПодбор.ХарактеристикаНоменклатуры";
    
    
    
    
    Запрос.УстановитьПараметр("Магазин",      Магазин);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("Дата",         КонецДня(ОбщегоНазначения.ПолучитьРабочуюДату()));
    
    мТаблицаЦенХарактеристик = Запрос.Выполнить().Выгрузить();
    запрос.Выполнить().Выгрузить().ВыбратьСтроку();
    
    
    Суть в следующем: Открываю форму регистрации продаж ---- нажимаю на кнопку "подбор" ---- открывается форма подбора номенклатуры----встаю на строку с товаром раз клацаю и открывается форма выбора характеристик(на скрине). В этой форме показан размер,цена, количество. Необходимо чтобы товары с 0 количеством не отображались в данной форме.

    Попробовал в запрос засунуть Где ОстаткиПодбор.Остаток > 0 и в конце проверить запрос.Выполнить().Выгрузить().ВыбратьСтроку();
    в таблицу выгружает без нулей, а вот далее опять в форме с 0 выдает. Подскажите как можно сделать!?

    Вложения:

  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Код:
    	СГРУППИРОВАТЬ ПО
    ОстаткиПодбор.Магазин,
    ОстаткиПодбор.Номенклатура,
    ОстаткиПодбор.ХарактеристикаНоменклатуры
    ИМЕЮЩИЕ
    СУММА(ОстаткиПодбор.Остаток) > 0
    
    
  3. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26

    Не получилось так. Поставил в конец запроса , проверил. Ошибок никаких не выдал , но продолжает с нулями выдавать все-равно!
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Покажите итоговый текст запроса, который получается. Лень гадать, что у вас в итоге из-за условий выходит...
  5. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВЫБРАТЬ
    ОстаткиПодбор.Магазин,
    ОстаткиПодбор.Номенклатура,
    ОстаткиПодбор.ХарактеристикаНоменклатуры,
    СУММА(ОстаткиПодбор.Цена) КАК Цена,
    СУММА(ОстаткиПодбор.Остаток) КАК Остаток
    ИЗ
    (ВЫБРАТЬ
    ОстаткиПоМагазину.Магазин КАК Магазин,
    ОстаткиПоМагазину.Номенклатура КАК Номенклатура,
    ОстаткиПоМагазину.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    0 КАК Цена,
    ОстаткиПоМагазину.Остаток КАК Остаток
    ИЗ
    (ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад.Магазин КАК Магазин,
    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(
    &Дата,
    Номенклатура = &Номенклатура
    И Склад.Магазин = &Магазин) КАК ТоварыНаСкладахОстатки
    
    СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Склад.Магазин,
    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
    ТоварыНаСкладахОстатки.Номенклатура
    ) КАК ОстаткиПоМагазину
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    ЦеныНоменклатуры.Магазин,
    ЦеныНоменклатуры.Номенклатура,
    ЦеныНоменклатуры.ХарактеристикаНоменклатуры,
    ЦеныНоменклатуры.Цена,
    0
    ИЗ
    РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
    &Дата,
    Номенклатура = &Номенклатура
    И Магазин = &Магазин) КАК ЦеныНоменклатуры) КАК ОстаткиПодбор
    
    СГРУППИРОВАТЬ ПО
    ОстаткиПодбор.Магазин,
    ОстаткиПодбор.Номенклатура,
    ОстаткиПодбор.ХарактеристикаНоменклатуры
    
    ИМЕЮЩИЕ
    СУММА(ОстаткиПодбор.Остаток) > 0
    
    
  6. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    А зачем Вы объединяете первый запрос со вторым, в котором все остатки заведомо нулевые?
  7. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Это не я объединил, а разработчики 1С. Это родной запрос из конфигурации. Им виднее зачем они так сделали?=)
  8. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Это что за конфигурация такая странная?
    Выкидывайте нафиг второй запрос, если Вам надо остатки больше 0.
  9. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Конфигурация 1с РОЗНИЦА: магазин одежды и обуви.
    Какой именно второй запрос. Как я понял второй запрос объединяет с первым потому что во втором получается цена товаров СрезПоследних().

    Какой есть вариант как написать запрос без второго?
  10. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Это можете смело удалять:
    Код:
    	ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    ЦеныНоменклатуры.Магазин,
    ЦеныНоменклатуры.Номенклатура,
    ЦеныНоменклатуры.ХарактеристикаНоменклатуры,
    ЦеныНоменклатуры.Цена,
    0
    ИЗ
    РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
    &;Дата,
    Номенклатура = &;Номенклатура
    И Магазин = &;Магазин) КАК ЦеныНоменклатуры) КАК ОстаткиПодбор
    
    
  11. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Сори, нет, Вы тогда цены потеряете....
    Чего-то здесь много накручено...
    Попробуйте такой запрос, проверить не могу, конфигурации нет, пишу так:
    Код:
    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад.Магазин КАК Магазин,
    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ЦеныНоменклатуры.Цена КАК Цена
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(
    &;Дата,
    Номенклатура = &Номенклатура
    И Склад.Магазин = &Магазин) КАК ТоварыНаСкладахОстатки
    ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
    &;Дата,
    Номенклатура = &Номенклатура
    И Магазин = &Магазин) КАК ЦеныНоменклатуры
    ПО ТоварыНаСкладахОстатки.Склад.Магазин = ЦеныНоменклатуры.Магазин 
    И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
    И ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатуры.Номенклатура
    ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0
    
  12. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Код:
    Запрос = Новый Запрос;				   
    Запрос.Текст = "ВЫБРАТЬ
    |	ОстаткиПодбор.Магазин,
    |	ОстаткиПодбор.Номенклатура,
    |	ОстаткиПодбор.ХарактеристикаНоменклатуры,
    |	СУММА(ОстаткиПодбор.Цена) КАК Цена,
    |	СУММА(ОстаткиПодбор.Остаток) КАК Остаток
    |ИЗ
    |	(ВЫБРАТЬ
    |		ОстаткиПоМагазину.Магазин КАК Магазин,
    |		ОстаткиПоМагазину.Номенклатура КАК Номенклатура,
    |		ОстаткиПоМагазину.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |		0 КАК Цена,
    |		ОстаткиПоМагазину.Остаток КАК Остаток
    |	ИЗ
    |		(";
    Если  ПроцедурыОбменаДаннымиПоКассе.ЭтоУзелКассы() Тогда
    Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ
    |	ИнформативныеОстаткиТоваровПоСкладам.Склад.Магазин КАК Магазин,
    |	ИнформативныеОстаткиТоваровПоСкладам.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |	ИнформативныеОстаткиТоваровПоСкладам.Номенклатура КАК Номенклатура,
    |	СУММА(ИнформативныеОстаткиТоваровПоСкладам.Количество) КАК Остаток
    |ИЗ
    |	РегистрСведений.ИнформативныеОстаткиТоваровПоСкладам КАК ИнформативныеОстаткиТоваровПоСкладам
    |ГДЕ
    |	ИнформативныеОстаткиТоваровПоСкладам.Склад.Магазин = &Магазин
    |	И ИнформативныеОстаткиТоваровПоСкладам.Номенклатура = &Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    |	ИнформативныеОстаткиТоваровПоСкладам.Склад.Магазин,
    |	ИнформативныеОстаткиТоваровПоСкладам.ХарактеристикаНоменклатуры,
    |	ИнформативныеОстаткиТоваровПоСкладам.Номенклатура
    |";
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">Иначе	</span> 
    Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ
    |	ТоварыНаСкладахОстатки.Склад.Магазин КАК Магазин,
    |	ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |	ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    |   ЦеныНоменклатурыМагазинов.Цена КАК Цена,
    |	ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
    | ИЗ
    |			РегистрНакопления.ТоварыНаСкладах.Остатки(
    |		&Дата,
    |		Номенклатура = &Номенклатура
    |			И Склад.Магазин = &Магазин) КАК ТоварыНаСкладахОстатки
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |			РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
    |				&Дата,
    |				Номенклатура = &Номенклатура
    |					И Магазин = &Магазин) КАК ЦеныНоменклатуры
    |ПО ТоварыНаСкладахОстатки.Склад.Магазин = ЦеныНоменклатуры.Магазин 
    |И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
    |И ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатуры.Номенклатура) КАК ОстаткиПодбор
    |ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0
    |";
    КонецЕсли;    	    
    
    Запрос.УстановитьПараметр("Магазин",      Магазин);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("Дата",         КонецДня(ОбщегоНазначения.ПолучитьРабочуюДату()));
    
    мТаблицаЦенХарактеристик = Запрос.Выполнить().Выгрузить();
    


    Попробовал но не получилось, выдает ошибку:



    Код:
    {Документ.ЧекККМ.Форма.ФормаВыбораХарактеристикНоменклатуры(102)}: Ошибка при вызове метода контекста (Выполнить): {(35, 1)}: Ожидается выражение ")"
    мТаблицаЦенХарактеристик = Запрос.Выполнить().Выгрузить();
    по причине:
    {(35, 1)}: Ожидается выражение ")"
    
    Скобку пробовал ставить, после нее потеребует псевдоним и так и пошло поехало
  13. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Вместо всего запроса, подставляете то, что написал я.
  14. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26

    Попробовал как написали, работает, НО ВСЕ РАВНО С ПУСТЫМИ ЗНАЧЕНИЯМИ ВЫДАЕТ=(
  15. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    
    Если мКолонки.Цена.Видимость Тогда
    СтрокаЦены = мТаблицаЦенХарактеристик.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка, "ХарактеристикаНоменклатуры");
    Если СтрокаЦены <> Неопределено Тогда
    ОформлениеСтроки.Ячейки.Цена.Значение = СтрокаЦены.Цена;
    Иначе
    СтрокаЦены = мТаблицаЦенХарактеристик.Найти(Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка(), "ХарактеристикаНоменклатуры");
    Если СтрокаЦены <> Неопределено Тогда
    ОформлениеСтроки.Ячейки.Цена.Значение = СтрокаЦены.Цена;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    Если мКолонки.Остаток.Видимость Тогда
    СтрокаОстатка = мТаблицаЦенХарактеристик.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка, "ХарактеристикаНоменклатуры");
    Если СтрокаОстатка <> Неопределено Тогда
    ОформлениеСтроки.Ячейки.Остаток.Значение = СтрокаОстатка.Остаток;
    КонецЕсли;
    КонецЕсли;
    
    КонецЦикла;
    
    РМК.СписокПриПолученииДанных(ОформленияСтрок, ЭлементыФормы.СправочникСписок, мНажатаяКнопка);
    
    КонецПроцедуры
    
    Вот не здесь ли мне исправлять нужно? В запросе все нормально получает, а вот дальше уже пошло - поехало.
  16. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Закомментируйте эту процедуру
  17. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Закомментировал: в итоге выдал туже самую форму и все характеристики, но только без цены и кроличества - они пустые

    Скидываю полностью модуль формы, вдруг там чего недосмотрел:

    Код:
    Перем мКолонки;
    Перем мНажатаяКнопка;
    Перем мТаблицаЦенХарактеристик;
    
    ////////////////////////////////////////////////////////////////////////////////
    // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
    
    // Процедура - обработчик события "ПередОткрытием" формы.
    //
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
    // Получим количество товаров в таблице
    ПостроительЗапроса                = Новый ПостроительЗапроса;
    ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(СправочникСписок);
    ПостроительЗапроса.Выполнить();
    
    Выборка   = ПостроительЗапроса.Результат.Выбрать();
    
    Если Выборка.Количество() = 1 Тогда
    
    Выборка.Следующий();
    
    ВыбранноеЗначение = Выборка.Ссылка;
    //Сообщить(ВыбранноеЗначение);
    Отказ = Истина;
    Возврат;
    
    ИначеЕсли Выборка.Количество() = 0 Тогда
    
    Отказ = Истина;
    Возврат;
    
    КонецЕсли;
    
    КонецПроцедуры
    
    // Процедура - обработчик события "ПередОткрытием" формы.
    //
    Процедура ПриОткрытии()
    
    Запрос = Новый Запрос;				   
    Запрос.Текст = "ВЫБРАТЬ
    |ТоварыНаСкладахОстатки.Склад.Магазин КАК Магазин,
    |ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    |ЦеныНоменклатуры.Цена КАК Цена,
    |ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
    |ИЗ
    |РегистрНакопления.ТоварыНаСкладах.Остатки(
    |&Дата,
    |Номенклатура = &Номенклатура
    |И Склад.Магазин = &Магазин) КАК ТоварыНаСкладахОстатки
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
    |&Дата,
    |Номенклатура = &Номенклатура
    |	И Магазин = &Магазин) КАК ЦеныНоменклатуры
    |ПО ТоварыНаСкладахОстатки.Склад.Магазин = ЦеныНоменклатуры.Магазин 
    |И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
    |И ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатуры.Номенклатура
    |ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0 И ЦеныНоменклатуры.Цена > 0 ";
    
    
    Запрос.УстановитьПараметр("Магазин",      Магазин);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("Дата",         КонецДня(ОбщегоНазначения.ПолучитьРабочуюДату()));
    
    мТаблицаЦенХарактеристик = Запрос.Выполнить().Выгрузить();
    
    КонецПроцедуры
    
    
    ////////////////////////////////////////////////////////////////////////////////
    // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ РЕКВИЗИТОВ ШАПКИ
    
    // Процедура - обработчик события "Нажатие" кнопки " КнопкаВверх".
    //
    Процедура КнопкаВверхНажатие(Элемент)
    
    мНажатаяКнопка = "Вверх";
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.СправочникСписок;
    
    КонецПроцедуры
    
    // Процедура - обработчик события "Нажатие" кнопки "КнопкаВниз".
    //
    Процедура КнопкаВнизНажатие(Элемент)
    
    мНажатаяКнопка = "Вниз";
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.СправочникСписок;
    
    КонецПроцедуры
    
    // Процедура - обработчик события "Нажатие" кнопки "КнопкаЗакрыть".
    //
    Процедура КнопкаВыборНажатие(Элемент)
    
    мНажатаяКнопка = "Выбор";
    
    ТекущаяСтрока = ЭлементыФормы.СправочникСписок.ТекущаяСтрока;
    
    Если ТекущаяСтрока = Неопределено Тогда
    Возврат;
    КонецЕсли;
    
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.СправочникСписок;
    
    ВыбранноеЗначение = ТекущаяСтрока;
    
    Закрыть();
    
    КонецПроцедуры
    
    // Процедура - обработчик события "Нажатие" кнопки "КнопкаЗакрыть".
    //
    Процедура КнопкаЗакрытьНажатие(Элемент)
    
    мНажатаяКнопка = "Закрыть";
    
    Закрыть();
    
    КонецПроцедуры
    
    
    ////////////////////////////////////////////////////////////////////////////////
    // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЧНОЙ ЧАСТИ
    
    // Процедура - обработчик события "Выбор" табличной части "СправочникСписок".
    //
    Процедура СправочникСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ВыбранноеЗначение = ВыбраннаяСтрока;
    
    Закрыть();
    
    КонецПроцедуры
    
    // Процедура - обработчик события "ПриПолученииДанных" табличной части "СправочникСписок".
    //
    Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    
    Если мКолонки.Цена.Видимость Тогда
    СтрокаЦены = мТаблицаЦенХарактеристик.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка, "ХарактеристикаНоменклатуры");
    Если СтрокаЦены <> Неопределено Тогда
    ОформлениеСтроки.Ячейки.Цена.Значение = СтрокаЦены.Цена;
    Иначе
    СтрокаЦены = мТаблицаЦенХарактеристик.Найти(Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка(), "ХарактеристикаНоменклатуры");
    Если СтрокаЦены <> Неопределено Тогда
    ОформлениеСтроки.Ячейки.Цена.Значение = СтрокаЦены.Цена;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    Если мКолонки.Остаток.Видимость Тогда
    СтрокаОстатка = мТаблицаЦенХарактеристик.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка, "ХарактеристикаНоменклатуры");
    Если СтрокаОстатка <> Неопределено Тогда
    ОформлениеСтроки.Ячейки.Остаток.Значение = СтрокаОстатка.Остаток;
    КонецЕсли;
    КонецЕсли;
    //Если СтрокаОстатка = неопределено тогда
    //	ОформлениеСтроки.Ячейки
    КонецЦикла;
    
    РМК.СписокПриПолученииДанных(ОформленияСтрок, ЭлементыФормы.СправочникСписок, мНажатаяКнопка);
    
    КонецПроцедуры
    
    
    мНажатаяКнопка = "";
    мКолонки = ЭлементыФормы.СправочникСписок.Колонки;
    
Похожие темы
  1. American
    Ответов:
    1
    Просмотров:
    507
Загрузка...

Поделиться этой страницей