Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как это сделать?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Пользователю 1С 7.7 > 1С Торговля и Склад 7.7 для Украины
2510506
Доброе время суток)
Подскажите плз как сделать такую штуку



там есть такое поле как "КОЛ-ВО МЕСТ"
и там указано "уп.6+шт.0"
Я только внедряю 1с
есть склад на котором нужно все переписать и внести в 1с торговля и склад
допустим в остатках у меня есть 6 коробок по 12 рулонов и есть отдельно 10 рулонов
как мне реализовать это на моей конфигурации?

товар - обои
У меня есть коробки (допустим в них рулоны)
упаковки (допустим в них рулоны)
как мне сделать так чтобы когда я формирую расходную накладную, я мог выбрать сколько коробок, одного вида, взял человек и + некоторое кол-во рулонов этого же вида.
спасибо)
Batchir
не помню, можно ли в 7.7, но пробовали разными строками бить один и тот же товар. В одной списывать упаковки, в другой штуки?
Flexy
Думаю так не получиться.1С-ка ругнется, что "Обнаружены одинаковые товары в строках 1 и 2".
Нужно думать другой способ.
Batchir
Если честно то мне всегда казалось что это настраиваемая функция - контроль дублей строк, а так хз, давно ТиС не ковырял и под рукой нет
Acid
Кво 6,3 уп. не прокатит?
Batchir
Цитата(Acid @ 17.02.11, 11:24) необходимо зарегистрироваться для просмотра ссылки
Кво 6,3 уп. не прокатит?

Не катит такой подход
А если в упаковке 13 рулонов и списать надо 3?
1. Вычислять с калькулятором нужно
2. Бесконечная дробь
Flexy
Цитата(Batchir @ 17.02.11, 11:24) необходимо зарегистрироваться для просмотра ссылки
Если честно то мне всегда казалось что это настраиваемая функция - контроль дублей строк, а так хз, давно ТиС не ковырял и под рукой нет

Так и есть
Функция глПроверкаДублейСтрок(Конт,Обязательно=0) Экспорт
    Если (Константа.ПроверятьДублиСтрок = Нет) и (Обязательно = 0) Тогда
        Возврат 1;
    КонецЕсли;
    СписокТМЦ = СоздатьОбъект("СписокЗначений");
    Конт.ВыбратьСтроки();
    Пока Конт.ПолучитьСтроку() = 1 Цикл
        Товар = Конт.Товар;
        Зн = ЗначениеВСтроку(Товар);
        Позиция = СписокТМЦ.НайтиЗначение(Зн);
        Если Позиция <> 0 Тогда
            СтараяСтрока = "";
            тмп = СписокТМЦ.ПолучитьЗначение(Позиция,СтараяСтрока);
            глТрассировка("Обнаружены одинаковые товары в строках "+СтараяСтрока+" и "+Конт.НомерСтроки, 0);
            Возврат 0;
        КонецЕсли;
        СписокТМЦ.ДобавитьЗначение(Зн,""+Конт.НомерСтроки);
    КонецЦикла;
    Возврат 1;
КонецФункции
Flexy
Вывод: Константы=> Проверять Дубли строк = Нет. wink.gif
2510506
Цитата(Flexy @ 17.02.11, 11:30) необходимо зарегистрироваться для просмотра ссылки
Вывод: Константы=> Проверять Дубли строк = Нет. wink.gif

Спасибо)) с этим понял
но как сделать следущее
1 ящик = 10 рулонов = 200 грн
допустим я сделал приходную накладную со след данными
3 ящика (по 10 рулонов в каждом ящике = 30 рулонов) по 200 грн = 600 грн
и плюс еще 5 рулонов по 20 грн
Это все один вид обоев

Но затем когда я делаю просмотр остатков по товару я вижу следущее

Как мне сделать чтобы отображалось отдельно количество ящиков на складе и кол-во обоев :?
большое спасибо за разъяснения!
Flexy
Не видно картинку =(.В чем там у вас проблема?
2510506
Цитата(Flexy @ 17.02.11, 21:29) необходимо зарегистрироваться для просмотра ссылки
Не видно картинку =(.В чем там у вас проблема?

отправил в личку
Zaval
Это не проблема.
Это желание хранить остатки в нескольких единицах измерения(в единицах прихода - точнее). Списывать по определенной стратегии и при списании отражать разбарахоливание более крупных единиц, буде оное потребуется.
Zaval
biggrin.gif Единица измерения должна иметь признак "Можно забарахолить обратно!"
Flexy
Да там и коэффициенты единиц измерения не правильно выставили.
Отчет же по идее должен без доработок выводить остатки товара в приходуемых единицах измерения?
Acid
Цитата(2510506 @ 17.02.11, 20:14) необходимо зарегистрироваться для просмотра ссылки
но как сделать следущее
1 ящик = 10 рулонов = 200 грн
допустим я сделал приходную накладную со след данными
3 ящика (по 10 рулонов в каждом ящике = 30 рулонов) по 200 грн = 600 грн
и плюс еще 5 рулонов по 20 грн
Это все один вид обоев

Как мне сделать чтобы отображалось отдельно количество ящиков на складе и кол-во обоев :?
большое спасибо за разъяснения!

интересная тема. злободневная...
а пример неудачен. лучше так:
1 ящик = 7 упаковок
1 упаковка = 6 рулонов
задача следующая:
приходуем в ящиках, расходуем в ящиках. а вернули 3 рулона. варианты решения? какие коэффициенты ставить? какая базовая единица?
тут всплывает законное условие - если в приходной накладной "ящики", то мы как бы обязаны приходовать именно ящики. иначе можно придраться.
Batchir
Базовую ставить минимально делимую (с коэф. 1), приходовать так как приходит, расходовать так как уходит, следить за партионным учетом.
Если нужны извраты по учету - доработать. В конкретном случае можно написать отдельный отчет, который выгребет данные по остаткам партий,
проанализирует партии в каких единицах приходили, проанализирует партии в каких единицах уходили, всё это сведет в кучу и выдаст результат
Acid
да, но коэффициенты будут "рагульные", т.к. будет получаться дробное количество. окрулять до целого? все-равно погрешность будет вылезать.
Ziam
Тогда, как вариант, ввести базовую единицу хранения остатков. И при приходе и расходе пересчитывать в нее, согласно коэффициентам.
Batchir
Цитата(Ziam @ 18.02.11, 10:33) необходимо зарегистрироваться для просмотра ссылки
Тогда, как вариант, ввести базовую единицу хранения остатков. И при приходе и расходе пересчитывать в нее, согласно коэффициентам.

А разве остаки в ТиСе храняться не в базовой? Это вопрос, просто я не помню и мне кажется что по другому и не должно быть, иначе ног не вытянешь.
5_kopeek
Возьму для разбора пример сложнее:
1 ящ. = 7 уп.
1 уп. = 6 р.

С минимальным дописыванием предлагаю такой вариант.
Базовая единица -- самая мелкая, т.е. рулон. Остальные единицы добавляем в справочник единиц с коэффициентами перерасчета из базовой. А именно:
для упаковки коэффициент равен 6, для ящика -- 6 х 7 = 42.
При оприходовании, списании, возврате можно выбирать любое к-во в любых единицах. Вероятно, если захотите пользоваться стандартным подбором в разных единицах измерения, придется немного подкорректировать. Но если пользоваться сканером, можно обойтись без дописок.
Думаю, что функция перерасчета из единицы в единицу в глобальном модуле есть.
Поскольку весь учет ведется в базовых единицах, в них и выводятся результаты. Чтобы получить отчеты (печформы накладных и пр.), необходимо в глобальный модуль закинуть функцию типа такой:

//*********************************************************************
Функция ВыбратьЕдиницы(Товар,ТаблЕд)
    Если ТаблЕд.ТипЗначенияСтр()<>"ТаблицаЗначений" Тогда
        Возврат 0;
    КонецЕсли; // ТаблЕд.ТипЗначенияСтр()<>"ТаблицаЗначений"
    Если ТаблЕд.КоличествоКолонок()<>0 Тогда
        ТаблЕд.УдалитьСтроки();
    Иначе                  
        таблЕд.НоваяКолонка("ед","Справочник.ЕдиницыИзмерения",,);
        ТаблЕд.НоваяКолонка("ИмяЕд","Строка",5,);                
        ТаблЕд.НоваяКолонка("Коэф","Число",10,3);
    КонецЕсли; // ТаблЕд.КоличествоКолонок()<>0
    СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
    СпрЕд.ИспользоватьВладельца(Товар);
    Если СпрЕд.ВыбратьЭлементы()=0 Тогда
        Возврат 0;
    КонецЕсли; // СпрЕд.ВыбратьЭлементы()=0
    Пока СпрЕд.ПолучитьЭлемент()=1 Цикл
        ТаблЕд.НоваяСтрока();
        ТаблЕд.Ед=Спр.ТекущийЭлемент();// на всякий случай
        ТаблЕд.ИмяЕд=Спр.Наименование; // это сокращенное наименование для печати
        ТаблЕд.Коэф=Спр.Коэффициент;
    КонецЦикла;  
    ТаблЕд.Сортировать("-Коэф");
    Возврат 1;
КонецФункции //ВыбратьЕдиницы

//*********************************************************************
Функция ДобавитьРазделитель(Стр,Разделитель)
    Если ПустоеЗначение(СкорЛП(Стр))=1 Тогда
        Возврат Стр;
    Иначе
        Возврат Стр+Разделитель;
    КонецЕсли; // ПустоеЗначение(СкорЛП(Стр))=1
КонецФункции //ДобавитьРазделитель

// надо обратить внимание на обработку таких ошибок, как          
//     наличие нескольких единиц с одинаковым коэф;
//*********************************************************************
Функция ФорматКвоВоВсехЕд(Товар,Кво)
    Перем ТаблЕд,РезФормат;  
    Если Кво<0 Тогда
        Возврат Кво;
    КонецЕсли; // Кво<0
    Если ПустоеЗначение(Товар)=1 Тогда
        Возврат Кво;
    КонецЕсли; // ПустоеЗначение(Товар)=1  
    РезФормат="";
    Разделитель="+";
    ТаблЕд=СоздатьОбъект("ТаблицаЗначений");
    Если ВыбратьЕдиницы(Товар,ТаблЕд)=0  Тогда
        Возврат Кво;
    КонецЕсли; // ВыбратьЕдиницы(Товар,ТаблЕд)=0
    Если Кво=0 Тогда
        РезФормат=РезФормат+Кво+" "+ТаблЕд.ПолучитьЗначение(ТаблЕд.КоличествоСтрок(),"ИмяЕд");
        Возврат РезФормат;
    КонецЕсли; // Кво=0  
    ТаблЕд.ВыбратьСтроки();
    ОстКво=Кво;
    Пока ТаблЕд.ПолучитьСтроку()=1 Цикл
        к=ТаблЕд.Коэф;
        Если к=0 Тогда
            Продолжить;
        КонецЕсли; // ТаблЕд.Коэф=0
        имяЕд=ТаблЕд.ИмяЕд;
        Если ОстКво>0 Тогда
            ТекКво=Цел(ОстКво/к);
            Если ТаблЕд.НомерСтроки=ТаблЕд.КоличествоСтрок() Тогда
                РезФормат=ДобавитьРазделитель(РезФормат,Разделитель)+ОстКво+ИмяЕд;
                Возврат РезФормат;
            ИначеЕсли ТекКво=0 Тогда
                Продолжить;
            КонецЕсли; // ТаблЕд.НомерСтроки=ТаблЕд.КоличествоСтрок()
            ОстКво=ОстКво-ТекКво;
            РезФормат=ДобавитьРазделитель(РезФормат,Разделитель)+ТекКво+ИмяЕд;
        КонецЕсли; // ОстКво>0
    КонецЦикла;
    Если ПустоеЗначение(СокрЛП(РезФормат))=1 Тогда
        Возврат Кво;
    Иначе
        Возврат РезФормат;
    КонецЕсли; // ПустоеЗначение(СокрЛП(РезФормат))=1
КонецФункции //ФорматКвоВЕд


Значения Кво печатных форм заменить на ФорматКвоВоВсехЕд(Товар,Кво).
Писала на скорую руку в качестве примера, а не рабочего образца, т.е. возможны неточности и ошибки. Понятно, что все можно сделать гораздо красивше.
Видимые минусы:
-- будут нюансы, когда начнут распаковывать упаковки до того, как продадут уже распакованные остатки;
-- не знаю, насколько увеличится время формирования отчетов (останется ли оно удовлетворительным при наличии большого ассортимента);
-- к-во всегда пересчитывается в единицы, начиная с крупных, т.е. учет может не отвечать факту: взяли не 1 ящик, а 7 разрозненных упаковок;
-- почие -.
Видимые плюсы:
-- простейшая доработка;
-- не затрагивает ни структуру базы, ни структуру учета.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.