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

Остаток на складе в переменную

Автор alex.kruglov, 23 мая 2018, 08:35

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

alex.kruglov

Здравствуйте. 
Имеем: 1С 7.7, ТиС 9.2. Справочник "номенклатура". 
Вопрос: Как по конкретной (номенклатура1) номенклатуре получить/записать остаток на складе в переменную? 
И, наверняка можно, зная ЧАСТЬ наименования номенклатуры, получить в переменную/массив остатки на складе всех номенклатур в наименовании которых есть эта ЧАСТЬ?

alex0402

Цитата: alex.kruglov от 23 мая 2018, 08:35И, наверняка можно, зная ЧАСТЬ наименования номенклатуры, получить в переменную/массив остатки на складе всех номенклатур в наименовании которых есть эта ЧАСТЬ?

в 7.7 остатки можно получать только запросом. список номенклатуры можно получить выборкой,
ВыбратьЭлементы();
Пока ПолучитьЭлементы() = 1 Цикл

КонецЦикла;

В Запросе использовать констукцию (Условие .. В ()).

если база большая то работать будет очень долго.
Спасибо за Сказать спасибо

alex.kruglov

Алекс, будьте добры конкретный пример, пожалуйста. (к примеру: есть номенклатура с наименованием "номенклатура1")
Добавлено: 23 мая 2018, 09:35


"записать", в первом посте = "записать в переменную, для дальнейшей работы с этой переменной".

alexandr_ll

Цитата: alex.kruglov от 23 мая 2018, 08:35
Здравствуйте. 
Имеем: 1С 7.7, ТиС 9.2. Справочник "номенклатура". 
Вопрос: Как по конкретной (номенклатура1) номенклатуре получить/записать остаток на складе в переменную? 
И, наверняка можно, зная ЧАСТЬ наименования номенклатуры, получить в переменную/массив остатки на складе всех номенклатур в наименовании которых есть эта ЧАСТЬ?
Получение остатков реализовано в форме справочника "Номенклатура" для подбора. Можно посмотреть задание переменной там, для этого используется метод регистра "СводныйОстаток".  Поиск по части наименования - используется обработка "Выбор из справочника по подстроке", в ее таблицу значений тоже можно добавить показ остатков.

alex.kruglov

По наименованию номенклатуры получить остаток я могу?
например, через Регистр.ОстаткиТМЦ.СводныйОстаток
если да, напишите, пожалуйста, полный правильный вызов функции.

alexandr_ll

Цитата: alex.kruglov от 23 мая 2018, 10:48
По наименованию номенклатуры получить остаток я могу?
например, через Регистр.ОстаткиТМЦ.СводныйОстаток
если да, напишите, пожалуйста, полный правильный вызов функции.
Функция ДатьОстаток()
Остаток=0;
Н=СоздатьОбъект("Справочник.Номенклатура");
Если Н.НайтиПоНаименованию(Наименование)=1 Тогда
Остаток=
ОстаткиТМЦ.СводныйОстаток(,Н.ТекущийЭлемент(),,,"Количество");
КонецЕсли;
Возврат Остаток;
КонецФункции


Возможно, в сводный остаток следует добавить измерения Фирма и Склад

alex.kruglov

Александр, спасибо! Но,

{Документ.ЗаявкаПокупателяГИ.Форма.Модуль(2181)}: Переменная не определена (ОстаткиТМЦ)

и еще, забегая вперед, что использовать в вашей функции вместо "Н.НайтиПоНаименованию", чтобы искать по ЧАСТИ наименования (понятно, что возможно найдено будет несколько позиций)?

alex0402

Цитата: alex.kruglov от 23 мая 2018, 13:20по ЧАСТИ наименования (понятно, что возможно найдено будет несколько позиций)?

в 7.7 нет встроенных средств поиска по части строки.

Добавлено: 23 мая 2018, 13:31


Цитата: alex.kruglov от 23 мая 2018, 13:20{Документ.ЗаявкаПокупателяГИ.Форма.Модуль(2181)}: Переменная не определена (ОстаткиТМЦ)

не хватает строки
ОстаткиТМЦ = СоздатьОбъкт("Регистр.СводныйОстаток");

или как то так. Почитайте СП.
Спасибо за Сказать спасибо

alex.kruglov

Алексей, версия 1С у меня без справки. (может у вас под рукой есть ссылка на документацию по теме?)

После добавления вашей строки:

ОстаткиТМЦ = СоздатьОбъект("Регистр.СводныйОстаток");
Неудачная попытка создания объекта (Регистр.СводныйОстаток)
Добавлено: 23 мая 2018, 14:07


Регистр.ОстаткиТМЦ.СводныйОстаток(,Н.ТекущийЭлемент(),,,"Количество");

так вроде работает, но! возвращает ноль всегда. может быть функция смотрит не там? Склад, Фирму указать не надо? (если надо, то где?)
Добавлено: 23 мая 2018, 15:18


н.НайтиПоКоду, вот если по коду - получается. сейчас попробуем добиться ПоНаименованию.

в номенклатуре есть наименования: "наим_1", "наим_2", "наим_87" (то есть, до "нижнего подчеркивания" названия совпадают).
Подскажите, пожалуйста, как, имея "наим_" получить все "наим_"-ы? - уверен, что можно.
Добавлено: 23 мая 2018, 16:13


Н.НайтиПоНаименованию(наименование, 0, 1) - так работает. Но вопрос: 2-й и 3-й что за параметры?

alexandr_ll

Действительно, функцию писал второпях, неточно
Должно быть
Функция ДатьОстаток()
Остаток=0;
ОстаткиТМЦ=СоздатьОбъект("Регистр.ОстаткиТМЦ")
Н=СоздатьОбъект("Справочник.Номенклатура");
Если Н.НайтиПоНаименованию(Наименование)=1 Тогда
Остаток=
ОстаткиТМЦ.СводныйОстаток(,Н.ТекущийЭлемент(),,,"Количество");
КонецЕсли;
Возврат Остаток;
КонецФункции

Вообще в методе СводныйОстаток можно указать все измерения в том порядке, как они заданы в регистре, то есть
СводныйОстаток(Фирма,Номенклатура,Склад,ЦенаПрод,"Количество"), а можно какие-либо пропускать, оставляя только запятые
Предварительно регистр должен быть расчитан, пример можно посмотреть в форме списка справочника "Номенклатура" для подбора
Что касается поиска по наименованию,
то смотри синтакс-помощник
ЦитироватьНайтиПоНаименованию(<?>,,);
Синтаксис:
НайтиПоНаименованию(<Наименование>,<Режим>,<ФлагПоиска>)
Назначение:
Найти элемент справочника по наименованию.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<Наименование> - строка с наименованием искомого элемента справочника,
<Режим> - необязательный параметр. Число: 1 - поиск внутри установленного подчинения (родителя); 0 - поиск во всем справочнике вне зависимости от родителя. Значение по умолчанию - 1.
<ФлагПоиска> - необязательный параметр. Число: 1 - найти точное соответствие наименования; 0 - найти наименование по первым символам. Значение по умолчанию - 0.
Замечание:
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.
Естественно, вернется ссылка только на первый найденный элемент.
Если нужен список всех позиций с вхождением строки, то смотри встроенную обработку "Выбор из справочника по подстроке"

Теги:

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

Рейтинг@Mail.ru

Поиск