Приветствую всех.
Занимаюсь изучением программирование/конфигурирования в 1с и возник такой вопрос.
Ситуация следующая что есть некая мифическая организация купи/продай. И есть необходимость хранить цену закупки, для формирования цены продажи. Цену закупки решил хранить в непериодическом РС. т.к. одна и та же номенклатура может быть закуплена в разное время то и стоимость закупки может быть разная. Для решения данного вопроса решил внести еще одно измерение, партия. Итого регистр имеет два измерения "Номенклатура" и "Партия" и ресурс "Цена закупки". Вроде бы все хорошо, но при формировании документа продажи нужно указать номенклатуру и партию. И вот тут возникает проблема.
Собственно вопросы:
1. корректна ли вообще такая структура работы или же изначально идея плохая.
2. как получить перечень партий для данной номенклатуры, что бы оператор выбрал ту партию из которой хочет отгружать номенклатуру. Хотелось бы в виде списка доступных.
(13)Я старался всегда оглядываться на типовые конфигурации. Смотрел бизнес процесс который мне подходит, а потом пробовал разобраться как он устроен "изнутри". В любом случае бесплатный курс не значит что он плохой.
Порой народ понятия не имея о существующем функционале в типовых изобретает тааакие велосипеды!
Буквально месяц назад здесь обсуждался вопрос по ERP - возможности Характеристик номенклатуры "программист" заменил своим справочником "Варианты исполнения". А мы пытались понять почему отчет хреново выводит данные по остаткам...
Это самописка. Пишу сам конфигурацию, с нуля, дабы понять на опыте что и как работает.
Если мой алгоритм работы в корне не верен, был бы признателен, если бы подсказали как правильнее сделать. Именно логику.
(4) Лучше регистр накопления, и в нем учитывать еще остаток по партии, чтобы оператор не списывал по цене одной и той же партии, пока не надоест. Перечень получать, естественно, запросом, лепить свою форму подбора и в нее выводить.
(5)правильное замечание. На самом деле я это уже учитываю. Разбил на два регистра. Один, как уже указал, с ценами а второй регистр накопления, где ведутся остатки в разрезе партии и номенклатуры. В принципе можно было держать все в одном. А вот насчет как выводить рещультат запроса в отдельную форму, об этом как то не думал. Спасибо за направление, подумаю/почитаю
&НаКлиенте
Процедура ЗИПНаименованиеПриИзменении(Элемент)
ТекущаяНоменклатура=Элементы.ЗИП.ТекущиеДанные.Номенклатура;
ДанныеИзРегистраНакопления=ПолучениеДанныхИзРегистра(ТекущаяНоменклатура);
Элементы.ЗИП.ТекущиеДанные.ЦенаЗакупки=ВыбратьИзМеню(ДанныеИзРегистраНакопления);
КонецПроцедуры
&НаСервере
Функция ПолучениеДанныхИзРегистра(ТекущаяНоменклатура)
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Цена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
|ГДЕ
| ОстаткиНоменклатурыОстатки.Номенклатура.Ссылка = &Ссылка
| И ОстаткиНоменклатурыОстатки.КолличествоОстаток > 0";
Запрос.УстановитьПараметр("Ссылка", ТекущаяНоменклатура);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СписокВыбора=Новый СписокЗначений;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СписокВыбора.Добавить(ВыборкаДетальныеЗаписи);
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецФункции
Показать
По факту выполнения получаю ошибку
{Документ.АктВыполненыхРабот.Форма.ФормаДокумента.Форма(78)}: Ошибка при вызове метода контекста (ВыбратьИзМеню)
Элементы.ЗИП.ТекущиеДанные.ЦенаЗакупки=ВыбратьИзМеню(ДанныеИзРегистраНакопления);
по причине:
Несоответствие типов (параметр номер '1')
(10) Возможно затык в том, что функция возвращает список значений, в ячейку с типом число.
1. корректна ли вообще такая структура работы или же изначально идея плохая.
Цена закупки обычно явно нигде в документах продаж не указывается, а рассчитывается исходя из учетной политики при расчете себестоимости. Цена продажи товара не должна рассчитываться в документе продажи, а должна быть рассчитана заранее (типовая УТ - документ "установка цен номенклатуры"). Вы же в магазине заранее знаете сколько стоит булка хлеба, даже если её еще не начали пробивать на кассе. А уж чтобы сам продавец определил по какой цене продать вам булку - это из разряда сам владелец бизнеса, сам продавец.
2. как получить перечень партий для данной номенклатуры, что бы оператор выбрал ту партию из которой хочет отгружать номенклатуру. Хотелось бы в виде списка доступных.
Если при продаже необходимо указывать партию поступления, то обычно реализуют отдельную форму подбора партий. Для этого должно хватить одного регистра накопления "остатки номенклатуры по партиям". Измерения Партия, Номенклатура. Ресурс Количество, Сумма. Цена, а точнее себестоимость рассчитывается Сумма/Количество.
(11)но функция выбратьизсписка возвращает одно значение. Пробовал писать это значение в промежуточную переменную, и явно указывать что это число, а уже из этой переменной присваивать значение в ячейку. Причем если у ячейки в табличной части сменить тип на строка, то присваивается не список а выбранное значение.