|
v8: Помогите с отбором а то туплю совсем сильно | ☑ | ||
---|---|---|---|---|
0
xenos
12.07.11
✎
17:02
|
Ситуация: есть документы Установка цен номенклатуры, причем в некоторых документах в один день могут быть одинаковые номенклатуры.
Задача: Перебираем по очереди документы, если документы можно провести то обычно проводим. А вот если есть номенклатура для которо уже в этот день зарегистрированна цена, тогда удаляем строчку из документа. Получить записи по отбору из менеджера не получается поскольку измерения не индексируемые. Запрос на каждую строчку писать тоже не вариант. Можно конечно написать запрос который будет все это дело анализировать и выдавать документы и строчки которые надо удалить, но хотелось бы по-проще. Собственно задача как зная номенклатуру и типцен быстро узнать есть ли регистрация в этот день и по какой цене. |
|||
1
poligraf
12.07.11
✎
17:05
|
дык запросом...
|
|||
2
hhhh
12.07.11
✎
17:05
|
срез последних по регистру. НЕ оно?
|
|||
3
Ненавижу 1С
гуру
12.07.11
✎
17:08
|
что же плохого в запросе?
|
|||
4
Гектор
12.07.11
✎
17:09
|
ну например док через попытку проводишь, если ошибка то анализируешь запросом ищеш за день (с начала дня по позицию дока) все товары на кот.была установка цен в регистре с отбором по товарам дока и соединяешь с товарами ТЧ дока .
эти товары из дока удаляешь и проводишь |
|||
5
Aprobator
12.07.11
✎
17:09
|
не иначе строчек много.
|
|||
6
Гектор
12.07.11
✎
17:10
|
+(4)вернее соединять не надо просто раз установлены цены с начала дня то их из дока удалять
|
|||
7
xenos
12.07.11
✎
17:11
|
(2) Там надо заранее понять проведется документ или нет.
|
|||
8
Aprobator
12.07.11
✎
17:12
|
хм - как запросом получить номенклатуру из ТЧ документа с минимальным номером строки в которой она встречается? Да - это проблема.
|
|||
9
xenos
12.07.11
✎
17:17
|
забейте запрс написал уже
есликому интересно "ВЫБРАТЬ | УстановкаЦенНоменклатурыТовары.Ссылка.Ссылка, | УстановкаЦенНоменклатурыТовары.НомерСтроки, | ВЫБОР | КОГДА ВложенныйЗапрос.Цена <> УстановкаЦенНоменклатурыТовары.Цена | ТОГДА ""не хорошо"" | ИНАЧЕ ""Хорошо"" | КОНЕЦ КАК Поле1 |ИЗ | (ВЫБРАТЬ | ВложенныйЗапрос.Дата КАК Дата, | ВложенныйЗапрос.ТипЦен КАК ТипЦен, | ВложенныйЗапрос.Номенклатура КАК Номенклатура, | УстановкаЦенНоменклатурыТовары.Цена КАК Цена | ИЗ | (ВЫБРАТЬ | МИНИМУМ(УстановкаЦенНоменклатурыТовары.Ссылка.Дата) КАК Дата, | УстановкаЦенНоменклатурыТовары.Ссылка.ТипЦен КАК ТипЦен, | УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура | ИЗ | Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары | ГДЕ | УстановкаЦенНоменклатурыТовары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода | | СГРУППИРОВАТЬ ПО | УстановкаЦенНоменклатурыТовары.Ссылка.ТипЦен, | УстановкаЦенНоменклатурыТовары.Номенклатура) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары | ПО ВложенныйЗапрос.ТипЦен = УстановкаЦенНоменклатурыТовары.Ссылка.ТипЦен | И ВложенныйЗапрос.Номенклатура = УстановкаЦенНоменклатурыТовары.Номенклатура | И ВложенныйЗапрос.Дата = УстановкаЦенНоменклатурыТовары.Ссылка.Дата | ГДЕ | УстановкаЦенНоменклатурыТовары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары | ПО ВложенныйЗапрос.ТипЦен = УстановкаЦенНоменклатурыТовары.Ссылка.ТипЦен | И ВложенныйЗапрос.Номенклатура = УстановкаЦенНоменклатурыТовары.Номенклатура | И (ВложенныйЗапрос.Дата <= УстановкаЦенНоменклатурыТовары.Ссылка.Дата | И ДЕНЬ(ВложенныйЗапрос.Дата) = ДЕНЬ(УстановкаЦенНоменклатурыТовары.Ссылка.Дата)) |ГДЕ | УстановкаЦенНоменклатурыТовары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода"; |
|||
10
Гектор
12.07.11
✎
17:22
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | УстановкаЦенНоменклатуры.Ссылка |ИЗ | Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры |ГДЕ | УстановкаЦенНоменклатуры.Дата МЕЖДУ &Дата1 И &Дата2 | И УстановкаЦенНоменклатуры.Проведен = ЛОЖЬ"; Запрос.УстановитьПараметр("Дата1",Дата1); Запрос.УстановитьПараметр("Дата2",Дата2); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); нн=0;колстрок=выборка.Количество(); Пока Выборка.Следующий() Цикл нн=нн+1; состояние("обр-ся:"+нн+"/"+колстрок); док=Выборка.ссылка.получитьобъект(); Попытка док.записать(Режимзаписидокумента.Проведение); Исключение //значит цены по товарам уже установлены в этот день ИсправитьДок(док); КонецПопытки; КонецЦикла; КонецПроцедуры Процедура ИсправитьДок(док) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатуры.Номенклатура, | ЦеныНоменклатуры.Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры |ГДЕ | ЦеныНоменклатуры.Номенклатура В(&СписНоменклатур) | И ЦеныНоменклатуры.ТипЦен В(&СписТипЦен) | И ЦеныНоменклатуры.Период МЕЖДУ &Дата1 И &Дата2"; Запрос.УстановитьПараметр("СписНоменклатур",док.товары.выгрузитьколонку("Номенклатура")); Запрос.УстановитьПараметр("СписТипЦен",док.товары.выгрузитьколонку("ТипЦен")); Запрос.УстановитьПараметр("Дата1",Дата1); Запрос.УстановитьПараметр("Дата2",Дата2); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); нн=0;колстрок=выборка.Количество(); Пока Выборка.Следующий() Цикл нн=нн+1; состояние("обр-ся:"+нн+"/"+колстрок); //эту наменклатуру ищешь в доке и удаляешь КонецЦикла; Попытка док.записать(Режимзаписидокумента.Проведение); Исключение Сообщить("Проблемный док="+док.ссылка+" Ошибка="+ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
11
hhhh
12.07.11
✎
17:23
|
(9) приколист. А если две одинаковые цены будет, чего он у тебя выдаст: "хорошо" или "не хорошо"?
|
|||
12
xenos
12.07.11
✎
17:32
|
(11) ага.
Там еще ошибочка вместо в "ВложенныйЗапрос.Дата <= УстановкаЦенНоменклатурыТовары.Ссылка.Дата" вместо "<=" должнобыть просто "<" |
|||
13
xenos
12.07.11
✎
17:33
|
"<"
|
|||
14
xenos
12.07.11
✎
17:35
|
Теперь вот еще такая ситуация документы могут быть с одинаковой датой, нумерация не последовательна.
Как определить какой документ в журнале раньше стоит? |
|||
15
Гектор
12.07.11
✎
17:36
|
(14)анализируй установленные цены в регистре за весь день
|
|||
16
Aprobator
12.07.11
✎
17:37
|
(14) так да то то с секундами - не?
|
|||
17
xenos
13.07.11
✎
09:42
|
(16) секунды совпадают.
|
|||
18
FIXXXL
13.07.11
✎
09:51
|
(17) МоментВремени?
|
|||
19
СвинТуз
13.07.11
✎
09:55
|
переодичность регистра какая?
вроде было с точностью до дня в типовой |
|||
20
СвинТуз
13.07.11
✎
09:58
|
ааа ... вы там с документами работаете?
типа внешнее проведение? Задачи у Вас бешенные |
|||
21
Aprobator
13.07.11
✎
09:59
|
(20) +100500.
|
|||
22
СвинТуз
13.07.11
✎
10:02
|
а МоментВремени() у не проведенных что дает?
|
|||
23
Aprobator
13.07.11
✎
10:30
|
(22) моменту времени пофиг на проведение документа.
|
|||
24
Aprobator
13.07.11
✎
10:32
|
+(23) главное, чтоб документ был записан.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |