Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 12:51

Как получить цену на товар, если на складе его нет (но в 1с он есть)

Автор mobius07, 29 окт 2014, 09:25

0 Пользователей и 1 гость просматривают эту тему.

mobius07

Здравствуйте, не можете подсказать с кодом!


Процедура ОсновныеДействияФормыОсновныеДействияФормыВыгрузить(Кнопка)

Если ПустаяСтрока(ИмяФайлаВыгрузки) Тогда
Предупреждение("Не указано имя файла выгрузки!");
Возврат;
КонецЕсли;

Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда
Предупреждение("Не указан тип цен!");
Возврат;
КонецЕсли;

ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТипФайла(КодировкаТекста.ANSI);

ТекстЗапроса =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Ссылка,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
| ЦеныНоменклатурыСрезПоследних.Цена
|ПОМЕСТИТЬ ОстаткиЦены
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
| ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
| И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура,
| ЕСТЬNULL(ОстаткиЦены.Количество, 0) КАК Количество,
| ЕСТЬNULL(ОстаткиЦены.Цена, 0) КАК Цена
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиЦены КАК ОстаткиЦены
| ПО Номенклатура.Ссылка = ОстаткиЦены.Ссылка
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа
| [УСЛОВИЕ_ГРУППА]";

Если ЗначениеЗаполнено(ГруппаНоменклатуры) Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"[УСЛОВИЕ_ГРУППА]","И Номенклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)");
КонецЕсли;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"[УСЛОВИЕ_ГРУППА]","");

Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ТипЦен",ТипЦен);
Запрос.УстановитьПараметр("ГруппаНоменклатуры",ГруппаНоменклатуры);

Данные = Запрос.Выполнить().Выгрузить();

Для Каждого ТекСтрока Из Данные Цикл

ОбработкаПрерыванияПользователя();

Текст = СокрЛП(ТекСтрока.Номенклатура.Код)+";"+СокрЛП(ТекСтрока.Номенклатура.Наименование)+";"+Формат(ТекСтрока.Цена,"ЧРД=,; ЧРГ=; ЧН=0; ЧГ=")+";"+Формат(ТекСтрока.Количество,"ЧРД=,; ЧРГ=; ЧН=0; ЧГ=");
ТекстовыйДокумент.ДобавитьСтроку(Текст);

Состояние("Выгружено "+СокрЛП(Данные.Индекс(ТекСтрока))+" из "+СокрЛП(Данные.Количество()));

КонецЦикла;

ТекстовыйДокумент.Записать(ИмяФайлаВыгрузки);

КонецПроцедуры

Процедура ИмяФайлаВыгрузкиНачалоВыбора(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.ПолноеИмяФайла = ИмяФайлаВыгрузки;
Диалог.Расширение = "txt";
Диалог.Фильтр = "Текстовый файл (*.txt)|*.txt";
Если Диалог.Выбрать() Тогда
ИмяФайлаВыгрузки = Диалог.ПолноеИмяФайла;
КонецЕсли;

КонецПроцедуры

Процедура ПриОткрытии()

ИмяФайлаВыгрузки = ВосстановитьЗначение("ВыгрузкаНоменклатуры_ИмяФайлаВыгрузки");
ТипЦен = ВосстановитьЗначение("ВыгрузкаНоменклатуры_ТипЦен");

КонецПроцедуры

Процедура ПриЗакрытии()

СохранитьЗначение("ВыгрузкаНоменклатуры_ИмяФайлаВыгрузки",ИмяФайлаВыгрузки);
СохранитьЗначение("ВыгрузкаНоменклатуры_ТипЦен",ТипЦен);

КонецПроцедуры



Создается файл для выгрузки на сайт - наименование товара, цена, количество. Если на складе нет товара, то в файл записывается 0-количество и 0-цена, хотя цены все есть (отличные от нуля). Не подскажите как сделать чтобы даже если на складе нет товара (но в базе он конечно есть), чтобы и на него в файл записывалась цена, а не ноль как в этом коде!

cska-fanat-kz

Сделайте отдельную временную таблицу с остатками и отдельную с ценами, которые затем соединяйте с таблицей справочника и будет вам счастье )
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

mobius07

Спасибо!
Добавлено: 29 окт 2014, 11:41


А как-нибудь можно реализовать это в этом коде?

cska-fanat-kz

Цитата: mobius07 от 29 окт 2014, 10:11А как-нибудь можно реализовать это в этом коде?

Ну. Запрос переделайте! Остальной код - ваще не меняется!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

mobius07

Спасибо! Просто я 1с начал неделю назад заниматься :)

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск