|
Объясните мне эту лабуду! | ☑ | ||
---|---|---|---|---|
0
mzelensky
28.03.12
✎
09:05
|
Доброго времени суток! Конфа УТ 10.3 ... довольно старый релиз. Документ "Установка типов цен по номенклатурным группа для покупателей". Процедура
"ПроверитьПересекающиесяДокументы(Отказ, Заголовок)" И там текст (ТИПОВОЙ): Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("ПустойТипЦен", Справочники.ТипыЦенНоменклатуры.ПустаяСсылка()); Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Док.НоменклатурнаяЦеноваяГруппа КАК Группа, | Док.ДатаНачала КАК ДатаНачалаДок, | Док.ДатаОкончания КАК ДатаОкончанияДок, | РегТипыДляПокупателей.ТипЦен КАК ТипЦен, | РегТипыДляПокупателей.Период КАК ДатаНачала, | РегТипыДляПокупателей.Регистратор КАК Регистратор |ИЗ | Документ.УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателей.НоменклатурныеЦеновыеГруппы КАК Док | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура | ПО (Док.Ссылка = &ДокументСсылка) | И (СпрНоменклатура.НоменклатурнаяГруппа = Док.НоменклатурнаяЦеноваяГруппа | ИЛИ СпрНоменклатура.ЦеноваяГруппа = Док.НоменклатурнаяЦеноваяГруппа) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей КАК РегТипыДляПокупателей | ПО (СпрНоменклатура.НоменклатурнаяГруппа = РегТипыДляПокупателей.НоменклатурнаяЦеноваяГруппа | ИЛИ СпрНоменклатура.ЦеноваяГруппа = РегТипыДляПокупателей.НоменклатурнаяЦеноваяГруппа) | И (РегТипыДляПокупателей.Контрагент = &Контрагент) | |УПОРЯДОЧИТЬ ПО | ДатаНачала, | Группа, | ТипЦен УБЫВ"; ТЗ = Запрос.Выполнить().Выгрузить(); ТЗ.Колонки.Добавить("ДатаОкончания"); ТЗ.ЗаполнитьЗначения('00010101' ,"ДатаОкончания"); КоличествоСтрок = ТЗ.Количество() - 1; Для Тмп = 0 По КоличествоСтрок Цикл СтрокаТЗ = ТЗ[КоличествоСтрок - Тмп]; Если НЕ ЗначениеЗаполнено(СтрокаТЗ.ТипЦен) Тогда Для Тмп1 = 0 По ТЗ.Количество() -1 Цикл СтрокаПоиска = ТЗ[Тмп1]; Если СтрокаПоиска.Группа = СтрокаТЗ.Группа И НЕ ЗначениеЗаполнено(СтрокаПоиска.ДатаОкончания) Тогда СтрокаПоиска.ДатаОкончания = СтрокаТЗ.ДатаНачала; ТЗ.Удалить(СтрокаТЗ); Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Этот кусок кода направлен на выявление пересекающихся периодов по одной номенклатурной группе для одного контрагента. Вот объясните мне, это я ТУПЛЮ или это действительно сделано как-то через *опу!?! |
|||
1
Axel2009
28.03.12
✎
09:13
|
почему через опу?
|
|||
2
Defender aka LINN
28.03.12
✎
09:15
|
Что-то я не припомню такого документа в УТ...
Может, конечно, это я ее уже забыл, но уж больно название подозрительное |
|||
3
mzelensky
28.03.12
✎
09:17
|
(2) почему подозрительное? Вот имя из конфы:
"УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателей" Конфа "(10.3.1.17)", нов более поздних он тоже есть. |
|||
4
mzelensky
28.03.12
✎
09:18
|
(1) во-первых зачем в запросе вот это:
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура | ПО (Док.Ссылка = &ДокументСсылка) | И (СпрНоменклатура.НоменклатурнаяГруппа = Док.НоменклатурнаяЦеноваяГруппа | ИЛИ СпрНоменклатура.ЦеноваяГруппа = Док.НоменклатурнаяЦеноваяГруппа) Во-вторых зачем проверка через 2 таблицы значений: ТЗ = Запрос.Выполнить().Выгрузить(); ТЗ.Колонки.Добавить("ДатаОкончания"); ТЗ.ЗаполнитьЗначения('00010101' ,"ДатаОкончания"); КоличествоСтрок = ТЗ.Количество() - 1; Для Тмп = 0 По КоличествоСтрок Цикл СтрокаТЗ = ТЗ[КоличествоСтрок - Тмп]; Если НЕ ЗначениеЗаполнено(СтрокаТЗ.ТипЦен) Тогда Для Тмп1 = 0 По ТЗ.Количество() -1 Цикл СтрокаПоиска = ТЗ[Тмп1]; Если СтрокаПоиска.Группа = СтрокаТЗ.Группа И НЕ ЗначениеЗаполнено(СтрокаПоиска.ДатаОкончания) Тогда СтрокаПоиска.ДатаОкончания = СтрокаТЗ.ДатаНачала; ТЗ.Удалить(СтрокаТЗ); Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Таже отладчиком этот код крайне тяжело понять! |
|||
5
Шурик71
28.03.12
✎
09:27
|
Искать неохота, но 1с не дает в своих конфах переменным имена Тмп, тмп1.
По их стандартам не проходят :) |
|||
6
DJ Anthon
28.03.12
✎
09:34
|
почему, счетчикам вполне могут дать
|
|||
7
Aleks73
28.03.12
✎
09:35
|
v8: Абстрактный вопрос по УТ
якобы такой документ есть |
|||
8
hhhh
28.03.12
✎
09:40
|
(5) сейчас проверил в типовой УТ: такой документ есть, и переменная тмп1 тоже есть.
|
|||
9
mzelensky
28.03.12
✎
09:41
|
(7) не совсем понял к чему это
|
|||
10
mzelensky
28.03.12
✎
09:42
|
(5) я уверен ,что это типовой док и процедура тоже типовая!
Ну дело не в этом...как эту фигню переделать под нормальный, удобочитаемый код |
|||
11
mzelensky
28.03.12
✎
09:48
|
ну так что, люд?! какие предложения?
|
|||
12
Aleks73
28.03.12
✎
09:48
|
(9) к (2)
|
|||
13
Aleks73
28.03.12
✎
09:49
|
(11) Переделаю по внятному ТЗ. Строго в выходные. Дорого.
|
|||
14
mzelensky
28.03.12
✎
09:50
|
Для начала переделал запрос:
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Док.НоменклатурнаяЦеноваяГруппа КАК Группа, | Док.ДатаНачала КАК ДатаНачалаДок, | Док.ДатаОкончания КАК ДатаОкончанияДок, | РегТипыДляПокупателей.ТипЦен КАК ТипЦен, | РегТипыДляПокупателей.Период КАК ДатаНачала, | РегТипыДляПокупателей.Регистратор КАК Регистратор |ИЗ | Документ.УстановкаТиповЦенПоГруппамНоменклатурыДляПокупателей.НоменклатурныеЦеновыеГруппы КАК Док | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей КАК РегТипыДляПокупателей | ПО (Док.Ссылка = &ДокументСсылка) И (РегТипыДляПокупателей.Контрагент = &Контрагент) | И (Док.НоменклатурнаяЦеноваяГруппа = РегТипыДляПокупателей.НоменклатурнаяЦеноваяГруппа) | |УПОРЯДОЧИТЬ ПО | ДатаНачала, | Группа, | ТипЦен УБЫВ"; Сейчас немного посижу, попробую понять все-таки принцип тех таблиц и их обходов, если мне НЕ ПОНРАВИТСЯ - буду переделывать полностью... |
|||
15
mzelensky
28.03.12
✎
09:54
|
(13) за дорого я тебе ее сам сделаю и не в выходные, а в течении этого дня.
|
|||
16
hhhh
28.03.12
✎
09:57
|
(15) но вообще-то глупо. Зачем переделывать?
|
|||
17
Reset
28.03.12
✎
09:59
|
(14) Угрожаешь? :)
|
|||
18
mzelensky
28.03.12
✎
10:15
|
(15) потому что в некоторые моменты эта штука работает ошибочно! Пересечения периодов нет ,а она говорит ,что есть!
|
|||
19
mzelensky
28.03.12
✎
10:16
|
(17) неее, просто хотел совета спросить ,как лучше переделать
|
|||
20
Serg_1960
28.03.12
✎
10:17
|
(14) Это неравнозначная замена типовой.
Навскидку (особо не думая): проверь работу запросов, если в документе указаноНапример: если в документе указаны группы, которые не использует справочник номенклатуры. |
|||
21
mzelensky
28.03.12
✎
10:43
|
(20) мне такое условие не нужно.
|
|||
22
DJ Anthon
29.03.12
✎
07:35
|
(18) как-то курсовая у меня была курсе на третьем на пересечение периодов. надо было упорядочить произвольное расписание сторожей с их наименьшими трудозатратами. все работало, делал сам (тогда с инетом были напряги), но преподу объяснить сложный алгоритм не смог, ввиду абсолютно непросветной тупости первого. за что и получил три, хотя даже графику подключал и асмовские вставки были, а другие пять за тупую консольную обработку массивов получали, вот тогда я уже понял, что жисть несправедлива... ;)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |