|
жую задачу. Разработать алгоритм проведения документа "оказания услуг" | ☑ | ||
---|---|---|---|---|
0
JuliaMakej
26.12.16
✎
17:22
|
Списывать количество материалов со склада, указанного в реквизите документа
Затем материалы списываются с остальных складов в алфавитном порядке ______________________________________________________________ написала херь, от которой сама в ужасе. конечно же не работает. запнулась. гляньте, бывалые, подскажите зеленой ______________________________________________________________ Процедура ОбработкаПроведения(Отказ, Режим) // регистр СтоимостьМатериалов Расход Движения.СтоимостьМатериалов.Записывать = Истина; // регистр ОстаткиМатериалов Расход Движения.ОстаткиМатериалов.Записывать = Истина; // регистр Продажи Движения.Продажи.Записывать = Истина; Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда // делаем запрос остатков по всем складам ОбщийЗапрос = Новый Запрос; ОбщийЗапрос.Текст = "ВЫБРАТЬ | регОстатков.КоличествоКонечныйОстаток КАК КонОстаток, | регОстатков.Материал |ИЗ | РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты КАК регОстатков |ГДЕ | регОстатков.Материал = &парМатериал"; ОбщийЗапрос.УстановитьПараметр("парМатериал", ТекСтрокаПереченьНоменклатуры.Номенклатура); Выборка = ОбщийЗапрос.Выполнить().Выбрать(); Выборка.Следующий(); // если в запросе выбрать нечего (пусто), то присваиваем 0, // если есть, то дальше разбираемся... КонОстаток = ?(Выборка.Количество() = 0, 0, Выборка.КонОстаток); // первый вариант - так или иначе, а если в остатках меньше чем надо, // то показываем сколько нехватает Если Выборка.КонОстаток < ТекСтрокаПереченьНоменклатуры.Количество Тогда Дефицит = ТекСтрокаПереченьНоменклатуры.Количество - Выборка.КонОстаток; Сообщить("Не хватает " + Строка(Дефицит) + " единиц материала """ + Выборка.Материал + """"); Отказ = Истина; Иначе // второй вариант - Списываем с Текущего заданного склада, указанного в документе ЗапросТекСклад = Новый Запрос; ЗапросТекСклад.Текст = "ВЫБРАТЬ | регОстатков.КоличествоКонечныйОстаток КАК КонОстаток, | регОстатков.Материал |ИЗ | РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты КАК регОстатков |ГДЕ | регОстатков.Материал = &парМатериал И | регОстатков.Склад = &парСклад"; ЗапросТекСклад.УстановитьПараметр("парМатериал", ТекСтрокаПереченьНоменклатуры.Номенклатура); ЗапросТекСклад.УстановитьПараметр("парСклад", Склад); Выборка2 = ЗапросТекСклад.Выполнить().Выбрать(); Выборка2.Следующий(); // Если на ТекСкладе нехватает... Если Выборка2.КонОстаток < ТекСтрокаПереченьНоменклатуры.Количество Тогда Дефицит = ТекСтрокаПереченьНоменклатуры.Количество - Выборка.КонОстаток; ЗапросДрСклады = Новый Запрос; // ...делаем запрос к др.складам ЗапросДрСклады.Текст = "ВЫБРАТЬ | спрСклады.Наименование КАК Склад, | регОстатков.КоличествоКонечныйОстаток КАК КонОстаток, | регОстатков.Материал КАК Материал |ИЗ | Справочник.Склады КАК спрСклады | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты КАК регОстатков | ПО спрСклады.Ссылка = регОстатков.Склад |ГДЕ | регОстатков.Материал = &парМатериал И | регОстатков.Склад <> &парСклад |УПОРЯДОЧИТЬ ПО | Склад"; ЗапросДрСклады.УстановитьПараметр("парМатериал", ТекСтрокаПереченьНоменклатуры.Номенклатура); ЗапросДрСклады.УстановитьПараметр("парСклад", Склад); Выборка3 = ЗапросДрСклады.Выполнить().Выбрать(); // А ВОТ ТУТ МЫСЛЬ ПОТЕРЯЛА И НЕ ЗНАЮ ЧТО К ЧЕМУ ПРИБАВИТЬ И ОТНЯТЬ Пока Выборка3.Следующий() Цикл КонецЦикла; КонецЕсли; КонецЕсли; Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Склад = Склад; Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество; // Движение по стоимости материалов Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Цена; КонецЕсли; // Движение по оборотам - услуги, выручка Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Мастер; Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество; Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Цена; Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма; КонецЦикла; КонецПроцедуры |
|||
1
Cool_Profi
26.12.16
✎
17:24
|
Документ оказания услуг списывает материалы?
|
|||
2
Tatitutu
26.12.16
✎
17:24
|
(0) без фото в личке даже на + (в строке + Соde - нажимать не будут) Традиция (с)
|
|||
3
Джинн
26.12.16
✎
17:25
|
Выгрузить запросом остатки на складах и приоритетом, отфильтровать по приоритету и списывать построчно, пока необходимо.
|
|||
4
JuliaMakej
26.12.16
✎
17:25
|
ага, документ услуг
|
|||
5
JuliaMakej
26.12.16
✎
17:28
|
Выгрузить запросом остатки на складах и приоритетом, отфильтровать по приоритету и списывать построчно, пока необходимо. // так я итак выгрузила остатки запросом, разве нет?
|
|||
6
ERWINS
26.12.16
✎
17:31
|
лучше сделай заполнение ТЧ
|
|||
7
JuliaMakej
26.12.16
✎
17:31
|
(2) ваша галя балована
|
|||
8
ERWINS
26.12.16
✎
17:31
|
и потом по заполненому списывай
|
|||
9
JuliaMakej
26.12.16
✎
17:32
|
вообще не понимаю о чем вы. написала же, что зеленая совсем
|
|||
10
patapum
26.12.16
✎
17:36
|
(9) не понимаешь, значит и не нужно? свежее предложение - выйти замуж за программиста и готовить ему борщ, а он пусть программирует
|
|||
11
Garykom
гуру
26.12.16
✎
17:37
|
Будет весело когда при перепроведении (или отмене и снова проводка) дока материалы не смогут уйти в минус ))
|
|||
12
JuliaMakej
26.12.16
✎
17:46
|
смотрю, много спецов трепаться не по теме) мда, вот тебе и "возлюби ближнего своего".
при отмене и перепроводке все норм |
|||
13
Garykom
гуру
26.12.16
✎
17:49
|
(12) Делаешь 2 одинаковые дока, затем проводишь 1-й, затем его распроводишь, проводишь "новый" 2-й и пробуешь снова провести "старый" 1-й.
Особенно будет весело если кто то распроведет/перепроведет сильно старый документик этак полугодовой/годовой давности... |
|||
14
Garykom
гуру
26.12.16
✎
17:50
|
И да нескоко "вложенных" запросов в цикле это мощно!
|
|||
15
patapum
26.12.16
✎
17:53
|
(12) ну как бы если хочется на 100500 постов троллить по поводу решения тестовых задач, то хотя бы скачать фотку из инета и поставить в личку можно. а то скучно.
|
|||
16
JuliaMakej
26.12.16
✎
18:00
|
Эх, Мишаня, я из приличных. еще при реге пробовала, но чет выдает ошибку. хотя все по требованиям
|
|||
17
Джинн
26.12.16
✎
18:18
|
(5) Нет. Вы какую-то хрень сделали.
|
|||
18
Garykom
гуру
26.12.16
✎
18:28
|
Хм задачка навела что хорошо бы в платформе реализовать функцию для ТЗ не тока Свернуть().
Но и Распределить() |
|||
19
Смотрящий
26.12.16
✎
19:35
|
Без фото - не vзлетит
|
|||
20
Неверный Параметр И
26.12.16
✎
19:42
|
||||
21
Неверный Параметр И
26.12.16
✎
19:43
|
Стартуйте =)
|
|||
22
Shrek_yar
26.12.16
✎
19:45
|
(0)без фото нет
|
|||
23
JuliaMakej
26.12.16
✎
19:46
|
слабо свежее фоту накопать?)
|
|||
24
Неверный Параметр И
26.12.16
✎
19:51
|
(23) А слабо алгоритм разработать?
|
|||
25
Garykom
гуру
26.12.16
✎
19:54
|
Общение работодателя с кандидатом на мисте это нечто новое...
|
|||
26
JuliaMakej
26.12.16
✎
19:57
|
не слабо, бодаюсь, отчего же. я же не разместила "решите", речь шла о подсказке
|
|||
27
Неверный Параметр И
26.12.16
✎
20:02
|
(26) Выбираешь остатки отсортированно по складам. Первый склад- всегда из документа, остальные (за исключением первого) по алфавиту. Списываешь по порядку, не хватает - идешь на следующий склад. Все.
|
|||
28
Garykom
гуру
26.12.16
✎
20:02
|
(26) Подсказки (3) и (10) чем не устроили?
|
|||
29
zvial
27.12.16
✎
07:40
|
Как то так:
//Выбираем всю номенклатуру из перечня, для каждой получаем остатки. Сортируем по наименованиям складов, но склад документа - всегда первый в выборке. Итоги по номенклатуре Запрос.Текст = "ВЫБРАТЬ Номенклатура ПОМЕСТИТЬ ПереченьНоменклатуры |ИЗ &ПереченьНоменклатуры КАК ПереченьНоменклатуры; |ВЫБРАТЬ |Остатки.Склад, |ПереченьНоменклатуры.Номенклатура, |СУММА(ПереченьНоменклатуры.Количество) КАК Количество, |СУММА(ЕстьNULL(Остатки.КонечныйОстаток, 0)) КАК КонечныйОстаток |ИЗ ПереченьНоменклатуры КАК ПереченьНоменклатуры |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(&ДатаДокумента, Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ ПереченьНоменклатуры)) КАК Остатки |ПО Остатки.Номенклатура = ПереченьНоменклатуры.Номенклатура |СГРУППИРОВАТЬ ПО |Остатки.Склад, |ПереченьНоменклатуры.Номенклатура |УПОРЯДОЧИТЬ ПО |ВЫБОР КОГДА Склад = &СкладДокумента Тогда 0 ИНАЧЕ 1000 КОНЕЦ, |Склад.Наименование |ИТОГИ СУММА(Количество), СУММА(КонечныйОстаток) ПО |Номенклатура"; Запрос.УстановитьПараметр("СкладДокумента", Объект.Склад); Запрос.Установитьпараметр("ДатаДокумента", Объект.Дата); Запрос.УстановитьПараметр("ПереченьНоменклатуры", Объект.Товары); ВыборкаНоменклатура = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Если ВыборкаНоменклатура.Следующий() Тогда Если ВыборкаНоменклатура.Количество<ВыборкаНоменклатура.КонечныйОстаток Тогда //Сообщаем о недостатке кол-ва на всех складах Иначе КоличествоДляРаспределения = ВыборкаНоменклатура.Количество; ВыборкаДетальные = ВыборкаНоменклатура.Выбрать(); Пока ВыборкаДетальные.Следующий() И КоличествоДляРаспределения>0 Цикл Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаНоменклатура.Номенклатура; Движение.Склад = ВыборкаДетальные.Склад; Движение.Количество = Мин(ВыборкаДетальные.Количество, ВыборкаДетальные.КонечныйОстаток); КоличествоДляРаспределения = КоличествоДляРаспределения - Движение.Количество; КонецЦикла; КонецЕсли КонецЕсли; Это как шаблон. При Ctrl+C, Ctrl+V не заработает, надо допилить. Ну, с группировкой количества перечня номенклатуры сделал по тупому, сами разберетесь. |
|||
30
DrZombi
гуру
27.12.16
✎
07:56
|
(0) Без фото не взлетит
|
|||
31
JuliaMakej
29.12.16
✎
18:49
|
(28) (10) слабо тянет на подсказку) а впрочем, если и тянет, сами такой и пользуйтесь)
|
|||
32
JuliaMakej
29.12.16
✎
18:50
|
пусть и не летит) решила
|
|||
33
JuliaMakej
29.12.16
✎
18:52
|
(29) о, интересен Ваш вариант, погляжу
|
|||
34
Смотрящий
29.12.16
✎
18:54
|
Ух! Сама решила ? да ладно ?
Борщъ видимо тоже умеешь ? Выходи за него ! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |