Поступление товаров - ошибка распределения суммы дополнительных расходов

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Поступление товаров - ошибка распределения суммы дополнительных расходов
 
Добрый день!
Создал товар и указал ему вес:

Создал Услугу и указал способ распределения по весу:

Создал Приход товара и добавил созданный товар и услугу, указал стоимость товару и услуге:

При попытке проведения, система пишет вот такую ошибку:
Цитата
При проведении <Поступление товаров ST00000012 от 18.08.2010 10:35:22> обнаружены ошибки:
Вес прихода равен нулю. Распределение суммы дополнительных расходов на себестоимость прихода невозможно.
Подскажите, пожалуйста, в чем может быть проблема?
 
Данный реквизит не зря имеет постфикс "старый". Данный реквизит оставлен для переноса информации о весе из карточки номенклатуры в единицы измерения при обновлении релиза. В дальнейшем данный реквизит будет удален. Вес требуется указывать в единицах измерения номенклатуры. Вес у штуки товара и коробки может различаться. В соответствии с этим весом и осуществляется распределение допрасходов.
 
Цитата
Александр Яблочкин пишет:
...Вес требуется указывать в единицах измерения номенклатуры. Вес у штуки товара и коробки может различаться. В соответствии с этим весом и осуществляется распределение допрасходов.
Подскажите тогда, пожалуйста, где можно установить: "Вес требуется указывать в единицах измерения номенклатуры" - это где такое?
 
Смотря чему подчинены единицы измерений (см. справочник типов номенклатуры). Если подчинение номенклатуре Перейти-Единицы измерения. Если типам номенклатуры, то аналогично из типа номенклатуры (или по гиперссылке в типе номенклатуры).
 
Какая-то белиберда получается. Не могли бы вы привести, пожалуйста, примеры со скриншотами, как установить разную массу для разных деталей, и по возможности, чтобы её можно было видеть где-то сверху, а не проходить 10 уровней меню.
----------------------------------------------------------------------------------
что у меня получается: в вышестоящем примере если у номенклатуры в "основная единица измерения" - отредактировать массу, а потом добавить ещё деталь, то у этих деталей будет одинаковая масса... Обе детали имеют тип Штучный - "единицы измерения, подчинены, данному типу номенклатуры".
Если же пробовать зайти из формы Номенклатуры "Перейти->Единицы измерения" и попробовать добавить новую единицу измерения - то пишет, что не соответствует отбору и не будет отображено.

Пробовал ставить у типа номенклатуры "подчинены номенклатурным позициям" - тоже белиберда получается.
----------------------------------------------------------------------------------
Объясните, пожалуйста, как правильно выставить параметры у типа номенклатуры, и у самой номенклатуры, а также где конкретно задается вес именно для данной позиции номенклатуры (если возможно, то приведите, пожалуйста, скриншоты)?

Сразу вопрос в продолжении: как данный Вес вывести на форме Номенклатуры, на форме списка Номенклатуры?
 
Задача не простая. Не при всяких настройках типа номенклатуры можно учитывать вес:)
Вес можно учесть только в том случае - когда единицы подчинены номенклатуре.

Для вывода веса в списке или на форме - нужно выводить по номенклатуре связанный список единиц измерения.

Обслуживать реквизит МассаСтарый было намного проще. Преимущества которые дает возможность учитывать вес для разных единиц не всегда оправдывает сложность обслуживания такой схемы и увеличение базы данных (связанное с ведением единиц для каждой единицы).
 
Единицы измерения подчинены типу номенклатуры. В этом случае для всех номенклатурных позиций данного типа единицы измерения будут общими (и вес соответственно).
В типе номенклатуры указываем что единицы измерения подчинены типу номенклатуры.

По гиперссылке можно открыть список единиц измерения данного типа номенклатуры и его редактировать (и вес каждой единицы задать).


Единицы измерения могут быть подчинены и каждой номенклатурной позиции в отдельности. Для этого в типе номенклатуры указываем это.

В этом случае редактирование списка единиц измерения осуществляется уже из самого элемента номенклатуры.
А в открывшемся списке уже редактируем единицы измерения именно данной номенклатуры (и вес указываем).


При распределении допрасходов вес номенклатуры будет браться согласно веса единицы измерения.
На скринах красным цветом отмечены поля, на которые надо обратить внимание (в т.ч. и ссылки на то, кому принадлежит единица измерения).
 
Цитата
Владимир Гаврилов пишет:
Обслуживать реквизит МассаСтарый было намного проще. Преимущества которые дает возможность учитывать вес для разных единиц не всегда оправдывает сложность обслуживания такой схемы и увеличение базы данных (связанное с ведением единиц для каждой единицы).
Так почему бы тогда не оставить 2 механизма: через старую массу и через единицу измерения?
Если у нас по приходу нужно взвешивать каждую деталь, то вместо того, чтобы в поле карточки номенклатуры ввести вес и сохранить, нужно перейти в меню, создать новую ед.изм. и потом закрыть 2 окна (само окно номенклатуры уже не считаю)...
 
Александр Яблочкин,
Спасибо, работает.
Если возможно, то как пожелание - вынести массу товара в более доступное место в карточке номенклатуры.
 
Цитата
Владимир Гаврилов пишет:
Для вывода веса в списке или на форме - нужно выводить по номенклатуре связанный список единиц измерения.
Подскажите, пожалуйста, а можно ли стандартными средствами как-то вывести "ОсновнаяЕдиницаИзмерения.Вес" в список номенклатуры?
При "добавлении новой колонки" или "Размещении данных" - доступно только "ОсновнаяЕдиницаИзмерения"...
 
чтобы не начинать новую тему, продолжу тут:

Всё-равно есть ошибки - Задал нескольким позициям вес через Перейти->ЕдиницыИзмерения.
Если заходить таким методом - то вес отображается корректно для каждой из деталей.
А если пробовать из любых документов или самой карточки товара программно достучаться до веса
Код
Tmp = Ссылка.ОсновнаяЕдиницаИзмерения.Вес;
то всегда возвращает вес, который был введен первый раз (для первой детали с весом). Т.е. если ввели весДетали1 = 0,75кг, весДетали2 = 1,00кг, весДетали3 = 1,50кг, то при программном обращении(как из самой карточки, так и из ТЧ Товары других документов) для этих товаров будет возвращать 0,75кг...
В чем может быть ошибка?

P.S. кажись новый метод учета веса детали, всё-таки не доработанный :(
 
Цитата
Александр Тугаенко пишет:
Подскажите, пожалуйста, а можно ли стандартными средствами как-то вывести "ОсновнаяЕдиницаИзмерения.Вес" в список номенклатуры?
При "добавлении новой колонки" или "Размещении данных" - доступно только "ОсновнаяЕдиницаИзмерения"...
Такой возможности платформа не предоставляет. Динамические списки появились только в платформе 8.2.
 
Цитата
Александр Тугаенко пишет:
чтобы не начинать новую тему, продолжу тут:

Всё-равно есть ошибки - Задал нескольким позициям вес через Перейти->ЕдиницыИзмерения.
Если заходить таким методом - то вес отображается корректно для каждой из деталей.
А если пробовать из любых документов или самой карточки товара программно достучаться до веса
Код
Tmp = Ссылка.ОсновнаяЕдиницаИзмерения.Вес;
то всегда возвращает вес, который был введен первый раз (для первой детали с весом). Т.е. если ввели весДетали1 = 0,75кг, весДетали2 = 1,00кг, весДетали3 = 1,50кг, то при программном обращении(как из самой карточки, так и из ТЧ Товары других документов) для этих товаров будет возвращать 0,75кг...
В чем может быть ошибка?

P.S. кажись новый метод учета веса детали, всё-таки не доработанный  

А причем тут учет веса? (а что это вообще такое?)
Понятно, что в приведенном фрагменте всегда получается вес основной единицы измерения.
Если получать вес (например в ТЧ документа), то надо получать вес той единицы измерения, которая выбрана в табличной части документа, а не вес основной единицы измерения.
 
Цитата
Александр Яблочкин пишет:
А причем тут учет веса? (а что это вообще такое?)
Понятно, что в приведенном фрагменте всегда получается вес основной единицы измерения.
Если получать вес (например в ТЧ документа), то надо получать вес той единицы измерения, которая выбрана в табличной части документа, а не вес основной единицы измерения.

1. УчетВеса - это наша добавка - учитывать ли отдельно стоимость веса в реализации товара...
2. "...Вес основной единицы" - Стоп, если у меня тип номенклатур с подчинением ед.изм. номеклатурным позициям, т.е. вес для каждой номенклатуры отдельно, при этом родителем является номенклатура, то если я обращаюсь к конкретной номенклатуре, и её основной единице измерения, и её весу - то должен получать ед.изм. этой номенклатуры и её вес... Или не так?
Подскажите, тогда, пожалуйста, как программно обратиться к весу номенклатуры, зная, например ссылку на номенклатуру?
---------
Или надо в справочнике ЕдиницыИзмерения искать запись, у которой владельцем является интересующая нас номенклатура?

P.S. эмоции просто переполняют :D чтобы достучаться до веса товара надо совершить столько действий и написать столько кода... Может всё-таки вернуть МассуСтарую - риторический вопрос.
Изменено: Александр Тугаенко - 19.08.2010 14:52:45 (уточнение.)
 
Кого интересует программной доступ к Весу номенклатуры (упрощённо):
Код
Единица = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");//"шт"
ВесДетали = Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",Единица,,ПНоменклатура).Вес;
где ПНоменклатура - ссылка на Номенклатуру, вес которой нужно узнать.
Изменено: Александр Тугаенко - 19.08.2010 15:21:13
 
Если я правильно понимаю, то вес получается для номенклатуры из табличной части товаров некоего документа? Так и брать вес из единицы измерения, та что в этой табличной части в настоящее время для данной строки и выбрана. Зачем еще что то искать?
 
Нет, не совсем так.
Есть док.ЗаказПокупателя, на его основании вводим РеализациюТоваров, надо для всех позиций номенклатуры ТЧ Товары
просмотреть определённое поле в ТЧ ЗаказПокупателя, и при определенном его значении - сделать расчеты, на основании веса номенклатуры.
Так вот за весом и приходится лазить в "Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту"...
Я бы использовал МассуСтарую, которую можно просто кинуть на форму номенклатуры и достучаться до которой  через ссылку на номенклатуру, однако с ней не работает распределение расходов по весу в ПоступлениеТовара...
Поэтому и приходится так извращаться с весом.

относительно
Цитата
брать вес из единицы измерения, та что в этой табличной части в настоящее время для данной строки и выбрана. Зачем еще что то искать
- если знаете, то подскажите, как имея ссылку на номенклатуру или текущую строку получить вес без поиска?

я же писал выше - если просто обращаться - то получаем постоянно одно и то же первое значение...
 
Цитата
Александр Тугаенко пишет:
если знаете, то подскажите, как имея ссылку на номенклатуру или текущую строку получить вес без поиска?
Если есть некая строка документа, то в этой строке есть колонка с единицей измерения. Вот из этой единицы измерения и получаем вес.
ВесНоменклатуры = СтрокаДокумента.ЕдиницаИзмерения.Вес;
 
Александр Яблочкин,
Александр, если использовать код, как Вы его написали (в ТЧ Товары ПриПолученииДанных):
Код
Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
   ОформлениеСтроки.ДанныеСтроки.ВесДетали = ОформлениеСтроки.ДанныеСтроки.ЕдиницаИзмерения.Вес;
КонецЦикла;
то, как писал выше - получаем вес 0,75 для всех деталей... Если это не так - приведите, пожалуйста полностью рабочий кусочек кода.
Так что, пока код с поиском по справочнику ЕдиницыИзмерения, остается единственно работающим кодом, для программного доступа к весу детали.
 
Цитата
Александр Тугаенко пишет:
Код
Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
   ОформлениеСтроки.ДанныеСтроки.ВесДетали = ОформлениеСтроки.ДанныеСтроки.ЕдиницаИзмерения.Вес;
КонецЦикла;
Неужели при выборе любой единицы измерения всегда получается вес одной и той же единицы?
Все правильно написано. В данном случае получается вес той единицы измерения, которая выбрана в строке.
Если выбрать другую единицу измерения, то этот фрагмент кода будет получать уже ее вес (той единицы что мы выберем.
А поиск по коду ... по какому коду ищется? Откуда он взялся?
А в этом случае все нормально.
 
Александр Яблочкин,
у меня сейчас работает с поиском по справочнику ЕдиницыИзмерения и другого работающего решения, пока что не нашёл или неправильно обращаюсь к строкам ТЧ. При этом всё-таки интересно как правильно.

Давайте попробуем сначала.
1. Да, получается один и тот же вес, т.е. не работает.
2. "... по какому коду ищется" -
Код
Единица = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");//"шт"
ВесДетали = Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",Единица,,ПНоменклатура).Вес;
а вот так работает.

Привожу скриншот Реализации товара и функцию, в которой используется предложенный Вами способ получения веса. Как видно по артикулу номенклатуры - строки перебираются корректно, только вот вес, постоянно одинаковый...
В чем ошибка?!
Данная функция вызывается в ТЧ Товары "ПриПолученииДанных" после стандартной.



Код
   Процедура дкТоварыВесПриПолученииДанных(ЭтаФорма, Элемент, ОформленияСтрок, ПраваПользователяИзОбъекта=Неопределено,ДокументОснование=Неопределено,ХозОперация=Неопределено) Экспорт
      Если ДокументОснование<>Неопределено И ХозОперация=Справочники.ХозОперации.РеализацияТоваров Тогда   
         ПЗаказ = ДокументОснование;
         Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
            Если ОформлениеСтроки.ДанныеСтроки.FlagУчетВеса<>Истина Тогда
               ОформлениеСтроки.ДанныеСтроки.FlagУчетВеса = Истина;
               ПНоменклатура = ОформлениеСтроки.ДанныеСтроки.Номенклатура;
               Сообщить("номенклатура="+ПНоменклатура);
               ТекстЗапроса = "ВЫБРАТЬ
               |   ЗаказПокупателяТовары.УчетВеса,
               |   ЗаказПокупателяТовары.Номенклатура КАК Номенклатура
               |ИЗ
               |   РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
               |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
               |      ПО ЗаказыПокупателейОстатки.Заказ = ЗаказПокупателяТовары.Ссылка
               |         И ЗаказыПокупателейОстатки.Номенклатура = ЗаказПокупателяТовары.Номенклатура
               |         И ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры = ЗаказПокупателяТовары.ХарактеристикаНоменклатуры
               |ГДЕ
               |   ЗаказыПокупателейОстатки.Заказ = &Заказ1
               |   И ЗаказыПокупателейОстатки.Номенклатура = &Номенклатура1
               |
               |УПОРЯДОЧИТЬ ПО
               |   ЗаказПокупателяТовары.Ссылка";
               Запрос = Новый Запрос(ТекстЗапроса);
               Запрос.УстановитьПараметр("Заказ1", ПЗаказ);
               Запрос.УстановитьПараметр("Номенклатура1", ПНоменклатура);
               РезультатЗапроса = Запрос.Выполнить();
               ВесДетали = ОформлениеСтроки.ДанныеСтроки.ЕдиницаИзмерения.Вес;
               Если Не РезультатЗапроса.Пустой() Тогда
                  ТЗ = РезультатЗапроса.Выгрузить();
                  Если ОформлениеСтроки.ДанныеСтроки.УчетВеса<>ТЗ[0].УчетВеса ИЛИ ОформлениеСтроки.ДанныеСтроки.ВесДетали<>ВесДетали ТОГДА
                     Сообщить("Артикул="+ПНоменклатура.Артикул+" Вес детали="+ВесДетали);
                     ОформлениеСтроки.ДанныеСтроки.УчетВеса = ТЗ[0].УчетВеса;
                     ОформлениеСтроки.ДанныеСтроки.ВесДетали = ВесДетали;
                  КонецЕсли;
               КонецЕсли;
            КонецЕсли;
         КонецЦикла;
      КонецЕсли;
   КонецПроцедуры // дкТоварыВесПриПолученииДанных() 
 
1. Чему в типе номенклатуры подчинены единицы измерения?
2. Каков вес единицы измерения, который на скриншете выбран в ТЧ?
 
1. Единицы измерения подчинены номенклатурным позициям.
2. вес активной строки - 2кг.
  0,75кг - это самый первый введенный вес.

вот так должно быть:


тип номенклатуры:
 
Теперь кажется понял о чем речь. Вес в реализации товаров отображается не согласно своим единицам измерений, а тем единицам измерения, которые были указаны в заказе покупателя. Тогда понятно что придется соединять табличные части реализации и заказа для получения единицы измерения из самого заказа.
К приведенному фрагменту кода пара замечаний только.
1. Точечный запрос в цикле не есть хорошо. Лучше сразу выгрузить всю номенклатуру в параметры запроса и все скопом получить. А искать уже в результатах запроса.
2. Коль уж получаем единицу измерения из ТЧ заказа, то и сразу там же ее вес получать. Обращение ЕдиницаИзмерения.Вес это фактически скрытый запрос к базе. Лучше уж сразу в запросе.
Быстрее работать будет.
 
Относительно оптимизации запросов - огромное спасибо.
У меня сейчас основная задача - запустить конфигурацию. Потом, по мере возможности, заниматься оптимизацией.
Рекомендации обязательно учту. Ещё раз спасибо!
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С