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

Как лучше реализовать?

Автор onegreyonewhite, 13 янв 2012, 17:34

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

Slin

у 1C есть некоторая поддержка законодательства, в отличие от некоторых
skype: slin-dev

onegreyonewhite

Цитата: Slin от 15 янв 2012, 10:49
у 1C есть некоторая поддержка законодательства, в отличие от некоторых

Лучше бы кодом подсказали, чем беседы разводить :(

onegreyonewhite

Я понять не могу как надо построить запрос и как обойти все элементы из номенклатуры на форме и установить соответствия остаток товара из регистра реквизиту из номенклатуры. Хотел подсмотреть в других конфигурациях, но там всё разбито на функции и пока найдёшь одну функцию из другой постепенно запутываешься. Мне бы увидеть цельным весь алгоритм...

Dethmontt

//Писал на коленке вариант 1
Запрос = Новый Запрос("Выбрать Рег.Склад, Рег.Товар, Рег.Количество Из РегстрНакоплений.ТвойРегистр.Остатки(Дата = &ДатаОстатков, Товар = &Товар) КАК Рег");
Запрос.УстановитьПараметры("ДатаОстатков",ТвояДата);
Запрос.УстановитьПараметры("Товар",Ссылка);
ТЗ = Запрос.Выполнить().Выгрузить();
//ТЗ - будет твоя таблица остатков конкретного товара по всем складам
//Дальше при изменении выбирать из таблицы по складу нужную строку
Строка = ТЗ.Найти(Склад,"Склад");
КоличествоОстатка = 0;
Если Строка <> Неопределено Тогда
КоличествоОстатка = Строка.Количество;
КонецЕсли;
//Количество остатка теперь можно отправлять на форму
Элемент.Надпись.Заголовок = КоличествоОстатка;

Запрос должен исполниться при открытии номенклатуры на сервере если она не новая!!!
Вариант 2
Или же при смене склада каждый раз запросом получать остаток по конкретному складу и товару.
При Смене склада
Запрос = Новый Запрос("Выбрать Рег.Склад, Рег.Товар, Рег.Количество Из РегстрНакоплений.ТвойРегистр.Остатки(Дата = &ДатаОстатков, Товар = &Товар и Склад = &Склад) КАК Рег");
Запрос.УстановитьПараметры("ДатаОстатков",ТвояДата);
Запрос.УстановитьПараметры("Товар",Объект.Ссылка);
Запрос.УстановитьПараметры("Склад",Объект.Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Количество;
КонецЕсли;
Возврат 0;
//Смотри синтаксис
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

onegreyonewhite

Вот что я получил:


Цитировать{Справочник.Номенклатура.Форма.ФормаСписка.Форма(33)}: Итератор для значения не определен
   Для каждого ТекущийЭлемент из Список Цикл

Список, это динамическая таблица со всеми элементами на форме.

Мой вариант кода с поправкой на мою конфу:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
СкладТекущий = ПолучениеПараметров.ПолучитьСклад(); //Обработка возвращает склад пользователя
Для каждого ТекущийЭлемент из Список Цикл
ТекущийЭлемент.Количество = ПолучитьТовар (СкладТекущий, ТекущийЭлемент);
Конеццикла;
КонецПроцедуры

&НаСервере
Функция ПолучитьТовар(Склад, Товар)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиТовараОстатки.Товар,
| ОстаткиТовараОстатки.Склад,
| ОстаткиТовараОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиТовара.Остатки КАК ОстаткиТовараОстатки";

Запрос.УстановитьПараметры("Товар",Товар);
Запрос.УстановитьПараметры("Склад",Склад);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат ВыборкаДетальныеЗаписи.Количество;
КонецЦикла;
КонецФункции


куда копать? где я неправ? :)

den_vrn

А смотреть остатки из справочника номенклатуры ??? Выбираешь номенклатуру и сразу видишь остаток по всем складам !

onegreyonewhite

Цитата: den_vrn от 16 янв 2012, 13:38
А смотреть остатки из справочника номенклатуры ??? Выбираешь номенклатуру и сразу видишь остаток по всем складам !
Не понял вопрос........ и в целом высказывание.

den_vrn

В конфигурации Управление торговлей 10.3 реализована возможность просмотра остатков в справочнике номенклатуры. и не надо форму переделывать.

Dethmontt

Если ты в динамическом списке хочешь видеть остаток. То вообще все просто и код писать не нужно!!! Произвольный запрос для дин. списка.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

gokusa

Чувак, я вот в си не шарю и в регистрах тоже, но не вижу здесь ничего сложного.
Мне кажется ты просто не в тот модуль пишешь процедурку с запросами, поковыряйся с точками останова и помощником(очень удобная штука), а также  разберись с модулями.я вот три дня назад хотел найти разработчика 1с вер.8 и проломит ему черепушку, за столь нелогичное расположение и устройство сего изделия, пока не нашёл помощник - shift+F9 рулят, всё сразу поймёшь
з.ы. копай модули.


Теги:

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

Рейтинг@Mail.ru

Поиск