Имя: Пароль:
1C
 
Нужен текст движения документа реализация по регистру остатки
0 Простенький вопросик
 
07.10.20
18:27
Нужен текст движения документа реализация по регистру остатки. С выбором списания fefo или lifo. Не типовой, минимально простой. Но готовый и желательно проверенный.
1 PR
 
07.10.20
18:28
4000 в час. Без НДС.
2 Простенький вопросик
 
07.10.20
18:31
(1)
шутка, нет? если нет, где можно списаться?
3 Franchiser
 
гуру
07.10.20
18:32
3000
4 PR
 
07.10.20
18:33
(2) Ты реально готов платить по 4000 + НДС за несколько десятков строк кода, которые пишутся проще пареной репы?
Если да, то не транжирь бабло, обращайся к (3)
5 Простенький вопросик
 
07.10.20
18:33
кто не шутит пишите почту. Ну это типо тестовое задание, надо быстро сделать. Я сам может и сделаю, но за день, надо раньше.
6 Простенький вопросик
 
07.10.20
18:34
(4)
ну я просто с нуля движения по регистрам не писал, разбираться надо. знаю что просто
7 PR
 
07.10.20
18:34
(5) LOL
8 Fish
 
гуру
07.10.20
18:34
(0) Именно FEFO нужно, не FIFO?
9 PR
 
07.10.20
18:34
(6) Они конструктором пишутся, рукалицо
10 PR
 
07.10.20
18:35
(8) Ну вот че ты интригу рушишь
11 Простенький вопросик
 
07.10.20
18:35
(9)
ну дай ссылку на эту тему
12 Простенький вопросик
 
07.10.20
18:36
(8)
ну да, опечатка
13 PR
 
07.10.20
18:42
(12) Капец
Если че, FEFO — это вообще про другое
Это примерно как ты в слове ничего вместо и напишешь е
14 PR
 
07.10.20
18:43
(11) На какую тему? На СП или на желтые книжки из коробки?
15 Простенький вопросик
 
07.10.20
18:45
(14)
как конструктором движение по fefo сделать. Просто списание и приход то я и сам знаю.
16 PR
 
07.10.20
18:46
(15) Балбес, тебе же уже сказали, что FEFO — это не твоя тема, это списание по срокам годности
Нахрена ты снова пишешь FEFO?
17 Простенький вопросик
 
07.10.20
18:48
(16)
да я уточнил FIFO или LIFO 2 варианта.
18 PR
 
07.10.20
18:49
(17) Ну да, уточнил, и в (15) снова FEFO пишешь
Ты неспособен писать этот термин без ошибок?
19 Простенький вопросик
 
07.10.20
18:51
(18)
ты по существу скажи что нибудь, язвить то много ума не надо
20 Простенький вопросик
 
07.10.20
18:52
мне в движении надо по каждому товару писать запрос к поступлению (его дате) или как?
21 PR
 
07.10.20
18:53
(19) По существу я тебе сказал (4)
А вообще у меня нет желания помогать людям, которые хотят въехать в профессию не своими мозгами, а чужими
22 PR
 
07.10.20
18:53
(20) Нет конечно
Просто делай выборку из виртуальной таблицы остатков регистра накопления
23 Простенький вопросик
 
07.10.20
19:01
ну допустим я получу через регистр последний или первый приход, а если его не достаточно для списания? Как это описать?
24 PR
 
07.10.20
19:18
(23) Выбирай остатки, а не приходы
25 Простенький вопросик
 
07.10.20
19:23
(24)
как думаешь, тут правильно сделано?
Проведение по FIFO
26 PR
 
07.10.20
19:26
(25) Предлагаешь мне подумать за тебя?
Почему бы тебе не вникнуть в суть задачи самому?
Или, если ты не способен решить эту тестовую задачу, может это и не твоя вакансия?
27 azernot
 
07.10.20
19:35
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РасходнаяНакладнаяТовары.Номенклатура,
        |    СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество
        |ПОМЕСТИТЬ РасходТоваров
        |ИЗ
        |    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
        |ГДЕ
        |    РасходнаяНакладнаяТовары.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    РасходнаяНакладнаяТовары.Номенклатура
        |
        |ИМЕЮЩИЕ
        |    НЕ СУММА(РасходнаяНакладнаяТовары.Количество) <= 0
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    РегистрПартийОстатки.Номенклатура,
        |    РегистрПартийОстатки.Партия,
        |    РегистрПартийОстатки.КоличествоОстаток,
        |    РегистрПартийОстатки.СуммаОстаток,
        |    РегистрПартийОстатки.Партия.МоментВремени
        |ПОМЕСТИТЬ ОстаткиТоваров
        |ИЗ
        |    РегистрНакопления.РегистрПартий.Остатки(
        |            &МоментВремени,
        |            Номенклатура В
        |                (ВЫБРАТЬ
        |                    РасходТоваров.Номенклатура
        |                ИЗ
        |                    РасходТоваров)) КАК РегистрПартийОстатки
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    РасходТоваров.Номенклатура КАК Номенклатура,
        |    РасходТоваров.Количество КАК Количество,
        |    ОстаткиТоваров.Партия,
        |    ОстаткиТоваров.КоличествоОстаток КАК КоличествоОстаток,
        |    ОстаткиТоваров.СуммаОстаток,
        |    ОстаткиТоваров.ПартияМоментВремени КАК ПартияМоментВремени
        |ИЗ
        |    РасходТоваров КАК РасходТоваров
        |        ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиТоваров КАК ОстаткиТоваров
        |        ПО РасходТоваров.Номенклатура = ОстаткиТоваров.Номенклатура
        |
        |УПОРЯДОЧИТЬ ПО
        |    ПартияМоментВремени УБЫВ
        |ИТОГИ
        |    МАКСИМУМ(Количество),
        |    СУММА(КоличествоОстаток)
        |ПО
        |    Номенклатура";
    
    Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени(), ВидГраницы.Исключая));
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Если Константы.МетодСписания.Получить() = Перечисления.МетодыСписанияЗапасов.FIFO Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПартияМоментВремени УБЫВ", "ПартияМоментВремени ВОЗР");
    КонецЕсли;
    
    РазрешеныОтрицательныеОстатки = Константы.РазрешитьОтрицательныеОстакти.Получить();
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаНоменклатура.Следующий() Цикл
        Если ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.Количество Тогда
            #Если Клиент Тогда
                Сообщить("Для проведения "+Ссылка+ " остатка по "+ВыборкаНоменклатура.Номенклатура + " недостато для списания. Остаток "+ВыборкаНоменклатура.КоличествоОстаток +" из необходимых "+ВыборкаНоменклатура.Количество+".", СтатусСообщения.Важное);
            #КонецЕсли
            
            Если НЕ РазрешеныОтрицательныеОстатки Тогда
                Отказ = Истина;
            КонецЕсли;
        КонецЕсли;
        
        Если Не Отказ Тогда
            КоличествоКСписанию = ВыборкаНоменклатура.Количество;
            ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                Если КоличествоКСписанию<=0 Тогда
                    Прервать;
                КонецЕсли;
                Если ВыборкаДетальныеЗаписи.КоличествоОстаток<= 0 Тогда
                    Продолжить;
                КонецЕсли;
                
                КоличествоРасход = Мин(КоличествоКСписанию, ВыборкаДетальныеЗаписи.КоличествоОстаток);
                Если КоличествоРасход =  ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
                    СуммаРасход = ВыборкаДетальныеЗаписи.СуммаОстаток;
                Иначе //Если НЕ ВыборкаДетальныеЗаписи.КоличествоОстаток = 0 Тогда
                    СуммаРасход = ВыборкаДетальныеЗаписи.СуммаОстаток/ВыборкаДетальныеЗаписи.КоличествоОстаток * КоличествоРасход;
                КонецЕсли;
                
                Движение = Движения.РегистрПартий.Добавить();
                Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                Движение.Период = Дата;
                Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
                Движение.Партия = ВыборкаДетальныеЗаписи.Партия;
                Движение.Количество = КоличествоРасход;
                Движение.Сумма = СуммаРасход;
                
                КоличествоКСписанию = КоличествоКСписанию - КоличествоРасход;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
28 Простенький вопросик
 
07.10.20
19:41
(27)
мега респект
29 Ёпрст
 
гуру
07.10.20
20:57
(27) не поможет жешь..
:)
врят ли у ТС есть регистр, в котором Партия торчит
30 Простенький вопросик
 
07.10.20
21:14
(29)
Есть. Там только 2 ошибки было, не указан склад и не указано записывать. А так работает
31 azernot
 
07.10.20
22:09
(30) Ошибок там больше. Но должен же ты и сам подумать.
32 Простенький вопросик
 
07.10.20
22:19
(31)
а откуда этот код, не секрет?
33 azernot
 
07.10.20
23:04
(32) блин, да написал на коленке.
34 tgu82
 
07.10.20
23:08
(0) Надо на 7-ке писать. Там все быстро-быстро
35 Максимка_
Космонавтом
 
08.10.20
09:29
Стаж: 9 лет 2 месяца...
36 Простенький вопросик
 
08.10.20
09:38
хватит апать, вопрос решен. А то спалят еще.
37 azernot
 
08.10.20
14:39
Чую ошибок не найдет...
Даю подсказки:
1. Если товара не будет на остатке - возникнет ошибка
2. Даже при разрешенных отрицательных остатках, остаток в минус не уйдет никогда.
3. В запросе правильнее использовать только 2 пакета

Иными словами, для подавана - нормально, для 1с-ника - слабо.
38 Простенький вопросик
 
08.10.20
14:54
(37)
задачу приняли в новой конторе, единственным замечанием было что регистры не очищаются при перепроведении, что для них не критично. большое спасибо еще раз. Теперь просьба не палить, вдруг они тоже читают этот форум, не надо тут больше писать ничего.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший