gifts2017

NCC: Анализ несоответствия цен в табличной части документа с ценами в справочнике

Опубликовал Павел Кучеренко (NCCSOFT) в раздел Обработки - Ценообразование, прайсы

Анализируется два типа документов: "Реализация", "Поступление ТМЦ". Отчет находит несоответствие цен в документе с ценой (на дату документа) в справочнике (тип цены выбранный в документе или выбранный как основной у контрагента текущего документа) - то этот документ и позиция попадают в результат отчета. Результаты отчета можно сгруппировать: по контрагенту, по фирме, по дате.

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
СравнительныйАнализЦен-2010.ert
.ert 202,00Kb
19.11.10
74
.ert 202,00Kb 74 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Епрст (Ёпрст) 03.11.09 08:28
Да уж..
За создание объектов в цикле, за приведение строки к строке и последующее её сравнение нужно ставить минус..
За не знание метода УстановитьФильтр тоже..
2. Епрст (Ёпрст) 03.11.09 08:31
>>> ПечЦенаДок = Док.Цена / 1; А это что?
3. Евгений Мартыненков (JohnyDeath) 03.11.09 09:40
да, такое очень быстро и красиво пишется прямым запросом
4. Павел Кучеренко (NCCSOFT) 03.11.09 10:26
Прямые запросы писал и для MS SQL и через LiteSQL (в режиме DBF), например процедура для ускорения "Подбор" в Номенклатуре.
//***************************************************************
Процедура ЗаполнитьКЭШ()

ЕСЛИ глДБФ=0 ТОГДА //Режим SQL

//SQL
Запрос = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT ОстаткиТМЦОстатки.Номенклатура [Номенклатура $Справочник.Номенклатура]
| , ОстаткиТМЦОстатки.КоличествоОстаток
| , РезервыТМЦОстатки.КоличествоОстаток РезервыТМЦОстаткиКоличествоОстаток
| , ОстаткиТМЦОстатки1.КоличествоОстаток ОстаткиТМЦОстатки1КоличествоОстаток
|FROM $РегистрОстатки.ОстаткиТМЦ(,,
| (Склад = :ВыбСклад),
| (Склад, Номенклатура),) AS ОстаткиТМЦОстатки
| FULL OUTER JOIN $РегистрОстатки.РезервыТМЦ(,,
| (Склад = :ВыбСклад),
| (Склад, Номенклатура),) AS РезервыТМЦОстатки ON РезервыТМЦОстатки.Номенклатура = ОстаткиТМЦОстатки.Номенклатура
| FULL OUTER JOIN $РегистрОстатки.ОстаткиТМЦ(,,
| (Склад = :ВыбСкладВПути),
| (Склад, Номенклатура),) AS ОстаткиТМЦОстатки1 ON ОстаткиТМЦОстатки1.Номенклатура = ОстаткиТМЦОстатки.Номенклатура";
Запрос.УстановитьТекстовыйПараметр("ВыбСклад", Складик);
Запрос.УстановитьТекстовыйПараметр("ВыбСкладВПути", Константа.СкладВПути);
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
//SQL

ИНАЧЕ //Режим DBF

//DBF
Попытка
База = СоздатьОбъект("SQLiteBase");
Исключение
ЗагрузитьВнешнююКомпоненту("1sqlite.dll");
База = СоздатьОбъект("SQLiteBase");
КонецПопытки;

База = СоздатьОбъект("SQLiteBase");
База.Открыть(":memory:");
Запрос = База.НовыйЗапрос();
Запрос.ВыполнитьЗапрос("PRAGMA journal_mode = OFF");
Запрос.ВыполнитьЗапрос("CREATE VIRTUAL TABLE ОстаткиИтоги USING DBENG(РегистрИтоги.ОстаткиТМЦ)");
Запрос.ВыполнитьЗапрос("CREATE VIRTUAL TABLE РезервыИтоги USING DBENG(РегистрИтоги.РезервыТМЦ)");
Запрос.Подставлять("ДатаТА", НачМесяца( ПолучитьДатуТА() ));
Запрос.Подготовить("
|SELECT
|Рез.Номенклатура [Номенклатура :Справочник.Номенклатура],
|SUM(Рез.Остаток),
|SUM(Рез.Резерв),
|SUM(Рез.ВПути)
|FROM (
|SELECT
|ОстаткиИтоги.Номенклатура Номенклатура,
|ОстаткиИтоги.Количество Остаток,
|0 Резерв,
|0 ВПути
|FROM ОстаткиИтоги
|WHERE (ОстаткиИтоги.Period = :ДатаТА) AND (ОстаткиИтоги.Склад = @ВыбСклад)
|
|UNION ALL
|
|SELECT
|ОстаткиИтоги.Номенклатура Номенклатура,
|0 Остаток,
|0 Резерв,
|ОстаткиИтоги.Количество ВПути
|FROM ОстаткиИтоги
|WHERE (ОстаткиИтоги.Period = :ДатаТА) AND (ОстаткиИтоги.Склад = @ВыбСкладВПути)
|
|UNION ALL
|
|SELECT
|РезервыИтоги.Номенклатура Номенклатура,
|0 Остаток,
|РезервыИтоги.Количество Резерв,
|0 ВПути
|FROM РезервыИтоги
|WHERE (РезервыИтоги.Period = :ДатаТА) AND (РезервыИтоги.Склад = @ВыбСклад)
|
|) Рез
|GROUP BY Рез.Номенклатура
|");
Запрос.УстановитьПараметр("@ВыбСклад", Складик);
Запрос.УстановитьПараметр("@ВыбСкладВПути", Константа.СкладВПути);
ТЗ = Запрос.Выполнить();
//DBF

КОНЕЦЕСЛИ;
ОстаткиТоваров.Загрузить(ТЗ);
КонецПроцедуры

Ёпрст по поводу чистоты кода :-) Именно эту обработку писали мои два студента-практиканта, а я им выдал рыбу самого отчета - поэтому твои замечания правильные и им как студентам 3-му курсу можно поставить "4-", поскольку делали первые шаги, но никак не мне :-)
5. Алексей Иванов (Lexus) 03.11.09 11:31
(4)
Ёпрст по поводу чистоты кода smile:-) Именно эту обработку писали мои два студента-практиканта, а я им выдал рыбу самого отчета - поэтому твои замечания правильные и им как студентам 3-му курсу можно поставить "4-", поскольку делали первые шаги, но никак не мне smile:-)

это не повод не указать ученикам на ошибки и не повод добиться от них их исправления!
6. Епрст (Ёпрст) 03.11.09 11:49
(4) Моветон кидать залипухи ...
Кому это всё надо ?
JohnyDeath; venger; +2 Ответить
7. Епрст (Ёпрст) 03.11.09 11:50
+6 причем еще и не свои.. а каких-то там студентов..
8. Павел Кучеренко (NCCSOFT) 03.11.09 12:36
Основная часть обработки написана мною!!! Про студентов, это по поводу корявого кода.... Кароче, на этом сайте одни программеры сидят, которым делать нефиг как находить ошибки в чужом коде. Я считаю что обработку оценивать нужно с точки зрения конечного пользователя!! Тем более что она применяется не часто и не требует оптимального кода исполнения. Вы лучше о другом задумайтесь, господа программисты 1С-ники. Вообще, если честно мне этот 1С за 10 лет программирования в нем изрядно надоел, и особенно потому что он интерпретатор.
9. Альтаир (Altair777) 04.11.09 12:38
(8) ага... плохое написали студенты, а хорошее их преподователь :)

По мому скромному мнению, дело не в том, как часто применяется обработка и критично ли время ее работы, а в самом стиле программирования.
И не надо так относиться к критике. Тем более, от самого Ёпрста! :D
10. Павел Кучеренко (NCCSOFT) 04.11.09 12:43
ладно, согласен со всеми :-)
11. Павел Кучеренко (NCCSOFT) 19.11.10 09:34
Сделал новую версию!!! Добавил группировки: по контрагентам, по фирмам, по дате. И выбор типа цены, которая сравнивается с содержимым "Реализация / Поступление ТМЦ" - из документа или из справочника контрагента (его основой тип цен)
12. Марина Смирнова (vasamase) 22.09.11 12:09
Однажды надо было проверить менеджера на правильность цен (отгружал по заниженным, разницу получал налом), так эта обработка помогла оперативно посчитать его долг фирме. Спасибо, полезная обработка.
13. Павел Кучеренко (NCCSOFT) 22.09.11 13:43
(12) Спасибо, Vasamase! Рад, что моя обработка оказалась вам полезной, для такой неожиданной задачи :-)))
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа