gifts2017

Контроль отрицательных остатков при изменении "задним числом" для всех последующих документов.

Опубликовал Антон Юхлин (antonrost) в раздел Программирование - Практика программирования

При изменениях "задним числом" отслеживает, не повлияет ли данное изменение на корректность проведения последующих документов.
Поддерживает контроль по регистрам "ОстаткиТМЦ" и "ПартииОтданные" конфигураций "Торговля+Склад" и  "Комплексная".
Легко настраивается на любую другую конфигурацию и любой регистр остатков.

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

Наименование Файл Версия Размер Кол. Скачив.
-
.zip 3,69Kb
23.12.09
224
.zip 3,69Kb 224 Бесплатно

См. также

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

Комментарии

1. AntonRost (antonrost) 20.07.06 15:29
Неужели никому не пригодилось ?
2. Сhe Burashka (CheBurator) 20.07.06 15:55
не волнуйся, пригодится...
я так точно попробую.
Интересует вопрос:
1. насколько замедляется проведение дока?
2. обход этой фичи при групповом проведении сделан?
3. AntonRost (antonrost) 20.07.06 16:09
1. Ненамного. Секунды на 2 в очень большой базе с начала года.
2. При групповом проведении контроль тоже не помешает. Обойти это легко, а при использовании http://www.infostart.ru/projects/index.php?id=312 можно предупреждать, но не отменять проведение.
4. Шухер (Шухер) 13.12.06 11:10
А плюсанул, хоть и не успел посмотреть. Лишний контроль не лишний :)
Спасибо.
5. Сhe Burashka (CheBurator) 13.12.06 18:34
Так, ща вооружусь... понадобилось... проверим заодно как работает при многофирменном/многоупраналитичной работе...
6. Сhe Burashka (CheBurator) 13.12.06 18:42
ДА! хорошо бы озвучить порядок настройки на другие регистры
7. AntonRost (antonrost) 14.12.06 08:00
Порядок настройки на другие регистры примерно такой:
Изменить функцию "глКонтрольОтрицательногоОстатка()" (там, вроде, всё понятно),
а также в функции "ПроверитьОтрицательныйОстаток" изменить строки:
====
Если ВидРег = "ОстаткиТМЦ" Тогда
_РегСклад = ВремРегистры.ОстаткиТМЦ;
ИначеЕсли ВидРег = "ПартииОтданные" Тогда
_РегСклад = ВремРегистры.ПартииОтданные;
Иначе
Сообщить("Неверный вид регистра !!!", "!!!");
КонецЕсли;
======
8. Vlad (vlad-1c) 20.12.06 01:56
Очень интересно. Отлично!, но медленно. Давно назревала проблема, переделаю под SQL c 1C++, будет на порядок быстрее. Если интересно выложу свою реализацию.
9. Mihenius (mihenius) 18.10.07 10:44
Выкладывай ... много народу учится 1С++ обычно не хватает
1-2 отчетов чтобы были и на 1с и на 1с++ чоб в сравнении вникнуть лучше
10. Sk0rp (Sk0rp) 09.10.09 20:41
Не заработало:

Пример:
На 1-е число есть остаток 12 шт
3-го числа есть расходный документ на 1шт (Док №2)
Делаем расходный Док №1 от 2-го числа на 10шт этого товара

Видно, что всем всего хватает, но получаю:

Возникнет отрицательный остаток по регистру "ОстаткиТоваров": ОстатокТовара = -8 по Док №1 (02.10.09)
Фирма = Товар = МойТовар Склад = Главный склад
--------------------------------
Возникнет отрицательный остаток по регистру "ОстаткиТоваров": ОстатокТовара = -9 по Док №2 (03.10.09)
Фирма = Товар = МойТовар Склад = Главный склад

11. Сергей (armeec) 08.12.09 11:39
А может нужно всего лишь сделать так:

Пользователь проводит док. задним числом тогда в этом случае в документе должна происходить проверка остатков на этот документ, а также на ТА, т.е. двойная проверка при проведении задним числом. Кто что думает по этому поводу?
12. Владимир Щербаков (2sw) 24.12.12 20:31
добавил возможность отключения, если установлен параметр "не контролировать остатки"

Функция глКонтрольОтрицательногоОстатка(Конт, Параметр)      
	
//sw

Если (Константа.КонтрольОтрицательныхОстатков <> Перечисление.СпособыКонтроляОстатковТМЦ.НеКонтролировать) Тогда


	
	Если Параметр = "Отмена проведения" Тогда
		ТабДвижений_ОстаткиТМЦ		= глСформироватьТаблицуДвиженийДокумента(Конт, "ОстаткиТМЦ", "Отмена", -1);
		ТабДвижений_ПартииОтданные	= глСформироватьТаблицуДвиженийДокумента(Конт, "ПартииОтданные", "Отмена", -1);
		ПроверитьОтрицательныйОстаток(Конт, ТабДвижений_ОстаткиТМЦ, "ОстаткиТМЦ", "Отмена");
		ПроверитьОтрицательныйОстаток(Конт, ТабДвижений_ПартииОтданные, "ПартииОтданные", "Отмена");
	ИначеЕсли Параметр = "Перед проведением" Тогда
		ТабДвижений_ОстаткиТМЦ		= глСформироватьТаблицуДвиженийДокумента(Конт, "ОстаткиТМЦ", "Отмена", -1);
		ТабДвижений_ПартииОтданные	= глСформироватьТаблицуДвиженийДокумента(Конт, "ПартииОтданные", "Отмена", -1);
	ИначеЕсли Параметр = "После проведения" Тогда
		ПроверитьОтрицательныйОстаток(Конт, ТабДвижений_ОстаткиТМЦ, "ОстаткиТМЦ", "Проведение");
		ПроверитьОтрицательныйОстаток(Конт, ТабДвижений_ПартииОтданные, "ПартииОтданные", "Проведение");
	Иначе
		Сообщить("Неверный параметр!!!", "!");
	КонецЕсли;

КонецЕсли;    //sw
	
КонецФункции // глКонтрольОтрицательногоОстатка()
...Показать Скрыть
13. Гость 09.07.13 11:18
Для УТ можно использовать?
Мне нужен контроль отрицательных остатков при изменении старых доков,по регистру "Товары на складах".
14. Марина Чирина (chmv) 10.07.13 13:40
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа