8.х Логика

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Koliusha, 24 дек 2008.

  1. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Существует регистр накопления в который стикается информация по движению товаров. Допутим пришел паллет с 4 бочками (паллет-1 КолМест-4) после этого увезли 2 бочки (соответственно везли их не в авоське, а на паллете) получается, что теоретически паллетов не осталось, а по факту он стоит да еще и с 2 бочками. :unsure:
    Как выйти из этой ситуации подскажите пожалуйста.
  2. DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    по факту откуда-то взялся 2-й паллет на котором уехали бочки
  3. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    нет по факту палет никуда не убирали а забрали 2 бочки. Это конфигурация считает, что единственный паллет отобрали
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Конфигурация ничего сама не считает. Стоит уточнить, что за конфигурация, для начала.
  5. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Пардон. Нет так выразился :unsure:
    УТ
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Тогда палет должен проходить как ТАРА.
    Покажите документ прихода и расхода.
    Сделайте скриншоты и приложите к сообщению. Только не вздумайте выкладывать в виде BMP-файлов и DOC-файлов. Сохраните в формате PNG.
  7. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Они одинаковые

    Вложения:

  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Итак:
    1. Конфигурация у вас самописная - поэтому ничем, пока не покажете код, помочь нельзя.
    2. Вы показали ПУСТЫЕ документы, а нужно показать ЗАПОЛНЕННЫЕ
    Толку-то от пустых форм? :) Правда, в вашем случае и от заполненных толку нет, т.к. все равно методика не типовая и что там твориться знает только тот, кто писал.
  9. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Надо какуюто конкретную процедуру или показать все?
    Из модуля объекта или формы? Там еще есть некоторые процедуры (есть в общем модуле но они на проведение не влияют)
  10. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Необходимо сделать так, чтобы колво паллетов расчитывались исходя из количества занятых мест, а не просто сложением вычитанием.
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Честно говоря, мне сейчас некогда этим заниматься. Там надо видеть структуру хранения...
    Хотя, может быть, и кода проведения хватит...
  12. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ЗаполнитьСтруктуруПроведенияПоРегистрамНакопления(СтруктураПроведенияПоРегистрамНакопления, ВыборкаПоШапкеДокумента)
    СтруктураПроведенияПоРегистрамНакопления = Новый Структура();
    СтруктураПроведенияПоРегистрамНакопления.Вставить("Секции");
    КонецПроцедуры // ЗаполнитьСтруктуруПроведенияПоРегистрамНакопления()
    
    Процедура ДобавитьСтрокуВДвиженияПоРегистрамНакопления(ВыборкаПоШапкеДокумента, ВыборкаПоСтрокамДокумента, 
    СтруктураПроведенияПоРегистрамНакопления, СтруктураПараметров)
    ИмяРегистра = "Секции";
    Если СтруктураПроведенияПоРегистрамНакопления.Свойство(ИмяРегистра) Тогда
    Движение = Движения[ИмяРегистра].Добавить();
    // Свойства
    Движение.Период                     = ВыборкаПоШапкеДокумента.Дата;
    Движение.ВидДвижения				= ВидДвиженияНакопления.Расход;
    Движение.Регистратор                = ВыборкаПоШапкеДокумента.Ссылка;
    // Измерения
    Движение.Проект						= ВыборкаПоШапкеДокумента.Проект;
    Движение.Склад                      = ВыборкаПоШапкеДокумента.Склад;
    Движение.Номенклатура               = ВыборкаПоСтрокамДокумента.Номенклатура;
    Движение.ХарактеристикаНоменклатуры	= ВыборкаПоСтрокамДокумента.ХарактеристикаНоменклатуры;
    Движение.Тара                       = ВыборкаПоСтрокамДокумента.Тара;
    Движение.КолВТаре	                = ВыборкаПоСтрокамДокумента.КолВТаре;
    Движение.СерияНоменклатуры          = ВыборкаПоСтрокамДокумента.СерияНоменклатуры;
    // Ресурсы
    Движение.Количество                 = ВыборкаПоСтрокамДокумента.КоличествоЕдиницХранения;
    Движение.КолМест 					= ?(ВыборкаПоСтрокамДокумента.КолВТаре = 0, 0, Окр(ВыборкаПоСтрокамДокумента.КоличествоЕдиницХранения/ВыборкаПоСтрокамДокумента.КолВТаре, 0,1));
    КонецЕсли;
    КонецПроцедуры
    
    Процедура ОбработкаПроведения(Отказ, Режим)
    Перем СтруктураПроведенияПоРегистрамНакопления;
    Перем СтруктураПроведенияПоРегистрамСведений;	
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Для Каждого ТекСтрокаТовары Из Товары Цикл
    // регистр Секции Расход
    Движение = Движения.Секции.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Проект = Проект;
    Движение.Склад = Склад;
    Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
    Движение.ХарактеристикаНоменклатуры = ТекСтрокаТовары.ХарактеристикаНоменклатуры;
    Движение.Тара = ТекСтрокаТовары.Тара;
    Движение.КолВТаре = ТекСтрокаТовары.КолВТаре;
    Движение.СерияНоменклатуры = ТекСтрокаТовары.СерияНоменклатуры;
    Движение.Количество = ТекСтрокаТовары.Количество;
    Движение.КолМест = ТекСтрокаТовары.КолМест;
    Движение.Паллеты = ТекСтрокаТовары.Паллетов;
    Движение.Вес = ТекСтрокаТовары.Вес;
    КонецЦикла;
    // записываем движения регистров
    Движения.Секции.Записать();
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    КонецПроцедуры
    
  13. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Мне кажется в принципе нелогично спроектировано.
    Ведь можно ж было сделать основной единицей бочку, а паллет для измерения мест и чисто информативно.

    В любом случае - конфигурация явно самописная и разбираться с логикой ее работы надо с постановщиками задач и разработчиками системы.
  14. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Тут проблема в том, что кроме бочек есть еще, и мешки, и коробки и т.п, а также есть просто весовой товар. Когда тара есть он расчитывает по одному алгоритму вес, паллеты и цену, а года нет по другому
  15. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Значит структура построение системы единиц измерения имеющаяся не подходит. Подумайте, как ее перепроектировать.
  16. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Я предполагаю что нужно сделать соответствующее измерение и создать еще 1 документ перемещения товара с паллете на паллет но это слишком сложно, не подскажите ли вы какого способа попроще или логику как это должно происходить ?
  17. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Сначала давайте разберемся.
    - У вас в регистре Паллеты и места хранятся?
    - Вам нужно отдельно отслеживать где находятся паллеты как таковые (тупо - где стоит ящик - на складе или поехал уже)
    - Какие еще есть нюансы
  18. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Мне нужно чтоб правенльно расчитывалось количество оставшихся паллетов.

    Вложения:

  19. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Вводите количество паллет новым реквизитом в документе (табличной части) и если физически паллета не уехала никуда - пусть юзер и ставит в колонке "Паллет" - 0. И движения по регистру делайте так как в ТЧ записаны.
  20. TopicStarter Overlay
    Koliusha
    Offline

    Koliusha Опытный в 1С

    Регистрация:
    21 окт 2008
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Количество паллетов вводится не от руки а расчитывается исходя из данных карточки товара или из емкости тары :

    Код:
    Процедура ТоварыКолМестПриИзменении(Элемент)
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    СтрокаТабличнойЧасти.Количество = Окр(СтрокаТабличнойЧасти.КолМест*СтрокаТабличнойЧасти.КолВТаре*СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент/СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент,2,1);
    СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Количество*ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.ЕдиницаИзмерения.Цена;
    Если ПустаяСтрока(СтрокаТабличнойЧасти.Тара)  Тогда                                                                                                       
    СтрокаТабличнойЧасти.Паллетов = Окр(СтрокаТабличнойЧасти.КолМест/СтрокаТабличнойЧасти.ЕдиницаИзмерения.ТарыНаПолете+0.5,0,0);
    СтрокаТабличнойЧасти.Вес =СтрокаТабличнойЧасти.Количество*ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.ЕдиницаИзмерения.Вес;
    Возврат 
    Иначе
    СтрокаТабличнойЧасти.Паллетов = Окр(СтрокаТабличнойЧасти.КолМест/СтрокаТабличнойЧасти.Тара.ЕдиницаХраненияОстатков.ТарыНаПолете+0.5,0,0);
    СтрокаТабличнойЧасти.Вес =СтрокаТабличнойЧасти.Количество;	
    КонецЕсли; 	
    
    КонецПроцедуры
    
    Я наверно изначально не очень конкретно сформулировал вопрос. На основе регистра накоплений формируется отчет в котором и происходит эта путаница с паллетами, но все поля и данные попадают автоматически конкретно не прописывается каждое поле.

    [warn=Читайте правила!]Используйте тэг CODE[/warn]

Поделиться этой страницей