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

ПОМОГИТЕ!!!

Автор iMaximus, 05 дек 2015, 17:17

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

iMaximus

Здравствуйте, я только учусь 1С, поэтому прошу строго не судить.

Есть Информационная система "Проката компакт дисков", в которой есть:

Справочник:
Диски (Реквизиты: Наименование, ЦенаЗакупки и ЦенаАренды)

Документы:
ПриёмТовара и ПрокатДисков с Табличными частями (Наименование, ЦенаЦенаЗакупки/ЦенаАренды, колличество и стоимость)

Регистр накопления:
КоличествотТоваровНаСкладе и соответственно из обоих документов количество считается под приход и под расход.

ЗАДАЧА: Необходимо сделать возможность заполнения табличной части документа ЦенаАренды (в столбец наименование) дисками из справочника, но только теми, которые есть на складе.

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

Вот код с Модуля формы документа ПрокатДисков:
&НаКлиенте
Процедура ТоварыНаименованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   ДанныеВыбора = РезультатВыбора();
КонецПроцедуры

&НаСервере
Функция РезультатВыбора()
   Запрос = Новый Запрос();
   Запрос.Текст = ("ВЫБРАТЬ
                  |   Диски.Наименование,
                  |   ТоварыНаСкладеОстатки.КолличествоОстаток
                  |ИЗ
                  |   Справочник.Диски КАК Диски
                  |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки КАК ТоварыНаСкладеОстатки
                  |      ПО Диски.Наименование = ТоварыНаСкладеОстатки.Наименование");
               //|ГДЕ
               //|   ТоварыНаСкладеОстатки.КолличествоОстаток = 0"
//Не знаю как количество сравнить с нулём. Поэтому оставил строчу в комментариях.
   РезультатЗапроса = Запрос.Выполнить();            
   НужныеДанные = Новый СписокЗначений;
   ВыборкаИтоги = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   ВыборкаИтоги.Следующий();
   Выборка = ВыборкаИтоги.Выбрать(ОбходРезультатаЗапроса.Прямой);
   Пока Выборка.Следующий() Цикл
   НужныеДанные.Добавить(Выборка.Ссылка);
   КонецЦикла;   
   Возврат НужныеДанные;
КонецФункции;


cska-fanat-kz

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

cska-fanat-kz

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

cska-fanat-kz

зачем цены в справочнике Диски?
они не меняются?

Цитата: iMaximus от 05 дек 2015, 17:17Регистр накопления:
КоличествотТоваровНаСкладе и соответственно из обоих документов количество считается под приход и под расход

Цитата: iMaximus от 05 дек 2015, 17:17|      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки КАК ТоварыНаСкладеОстатки

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

cska-fanat-kz

Цитата: iMaximus от 05 дек 2015, 17:17ВыборкаИтоги = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   ВыборкаИтоги.Следующий();
   Выборка = ВыборкаИтоги.Выбрать(ОбходРезультатаЗапроса.Прямой);

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

Maximoshka

Цитата: cska-fanat-kz от 07 дек 2015, 06:19
у вас в регистре "Наименование" - не ссылка на справочник а строка?!
глупость!

В регистре "Наименование" у меня ссылка на табличную часть документа, а в документе у меня табличная часть - это ссылка на справочник. В табличной части у меня ещё цена подвязывается из справочника. Да, цены не меняются, по крайней мере в поставленной задачи об этом ни слова.
Добавлено: 07 дек 2015, 06:30


Цитата: cska-fanat-kz от 07 дек 2015, 06:23
Цитата: iMaximus от 05 дек 2015, 17:17ВыборкаИтоги = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   ВыборкаИтоги.Следующий();
   Выборка = ВыборкаИтоги.Выбрать(ОбходРезультатаЗапроса.Прямой);

WTF?? зачем нужны итоги?

я просто сам немного запутался, как вывести результаты запроса обратно в форму, при заполнении табличной части?

cska-fanat-kz

Цитата: Maximoshka от 07 дек 2015, 06:28В регистре "Наименование" у меня ссылка на табличную часть документа

ссылки на табличную часть не может быть в принципе :befhbt:

Цитата: Maximoshka от 07 дек 2015, 06:28в документе у меня табличная часть - это ссылка на справочник

табличная часть может максимум что содержать колонку типа ссылка на справочник :befhbt:

Цитата: Maximoshka от 07 дек 2015, 06:28Да, цены не меняются, по крайней мере в поставленной задачи об этом ни слова

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

cska-fanat-kz

Цитата: Maximoshka от 07 дек 2015, 06:28я просто сам немного запутался, как вывести результаты запроса обратно в форму, при заполнении табличной части?

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

Maximoshka

Цитата: cska-fanat-kz от 07 дек 2015, 06:22
зачем цены в справочнике Диски?
они не меняются?

Цитата: iMaximus от 05 дек 2015, 17:17Регистр накопления:
КоличествотТоваровНаСкладе и соответственно из обоих документов количество считается под приход и под расход

Цитата: iMaximus от 05 дек 2015, 17:17|      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки КАК ТоварыНаСкладеОстатки

так как все таки регистр называется?

Прошу прощения, что ввёл в заблуждение, из-за невнимательности. Называется "ТоварыНаСкладе".

Теги: Помогите 

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

Рейтинг@Mail.ru

Поиск