Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Количество товара в упаковке (подчиненный справочник)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
NukeHate
Здравствуйте. Установлена1С 7.7 "Торговля+Склад для Украины" (7.70.020)
Я только учусь программировать и не могу решить одну задачу уже второй день. Дело в том, что мне нужно, чтобы на печать в расходную накладную помимо штук выводило также количество в упаковке. Товар штучный, удиница по умолчанию - шт. Однако в каждом товаре в единицах (Справочники-товар-единица) помимо значения "шт", указано также значение "уп". Берется оно из "Справочники - Единицы" который подчинен номенклатуре (Справочник-Номенклатура), и имеет поля "Вес, коэффициент, единица, штрихкод" . Если я правильно понимаю, мне нужно выбрать из этого справочника значение "Коэффициент" по значению "Единица=уп". Однако совсем не пойму как это сделать. Пробовал много разных манипуляций с процедурами "НайтиПоНаимеованию" и "НайтиПоРеквизиту".
Для выборки из подчиненного справочника использую код:
// ПечатьУп1 - Вывод на печать
ПечатьУп = СоздатьОбъект ("Справочник.Единицы");
ПечатьУп.ИспользоватьВладельца(товар);
ПечатьУп.ВыбратьЭлементы();
Пока ПечатьУп.ПолучитьЭлемент() = 1 Цикл
    ПечатьУп1 = ПечатьУп.ТекущийЭлемент();
КонецЦикла;


Но совсем не знаю, что сюда вставить, чтобы перебирало элементы по упаковкам. Помогите пожалуйста, заранее спасибо
Ardi
В справочник номенклатура добавить поле
Название: КвоВУпаковке
Тип: Число.

Без всяких подчинённых.
Домовик
ну ну ну. зачем изменять конфугурацию под одну печ форму? в лабе это может не прокатить.
NukeHate
Мне кажется, есть какие-то другие варианты, без добавления в номенлатуру. Я надеюсь)
Домовик
что значит у вас количество в упаковке? количество упаковок?

в коде Вы не показали, как определили переменную Товар. в отладчике в цикл заходите? можете в цикле поставить сообщить (печатьУп1); и посмотреть.
NukeHate
Товар я не определял, он в расходной накладной добавляется подбором. Количество в упаковке - это количество штук в ящике(упаковке). Т.е. подбором мы указываем что выбиваем допустим 5 штук, а в другом поле выводится на печать что в ящике например 24. При выводе (ПечатьУп1) выходит "шт." для каждого товара, т.е. название единицы по умолчанию.
Домовик
торговли и склад конфигурации у меня под рукой сейчас нет.

Там основная идея в том, что справочников по Единице измерения - две штуки. Дословно названия не помню. Один вы нашли, он подчинен справочнику Номенклатура, в нем реквизит Единица он имеет тип второго искомого справочника. От не помню названия.


Вы создаете объект типа искомый справочник. НайтиПоНАименованию() - находите элемент Упаковка (или как-то так). присваиваете переменной .... Упаковка.

При обходе по циклу, кот у вас в коде сравниваете реквизит ПечатьУп.Единица с переменной Упаковка. Если равно, значит нашли!! Берете В ПечатьУП.Коээфициент - значение коэффициента.
NukeHate
Домовик, спасибо большое, помогло. Там и правда был справочник КлассификаторЕдИзм, я на него раньше обращал внимание, но не додумался использовать, и думал что при поиске по наименованию найдется значение полного наименования.

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

дважды используете метод
//ВыборУп.НайтиПоНаименованию("уп.");



этот кусок отдельно, перед циклом обхода по табл части. док-та

ПечатьУп = СоздатьОбъект ("Справочник.Единицы"); 
ВыборУп = СоздатьОбъект ("Справочник.КлассификаторЕдИзм");
Если ВыборУп.НайтиПоНаименованию("уп.") = 1 тогда
    Упаковка = ВыборУп.ТекущийЭлемент();
КонецЕсли;



Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.