Контроль возвратов товаров от покупателей для Управление Торговлей 10.3

17.01.13

Разработка - Механизмы типовых конфигураций

Контроль возвратов был реализован без учета скидок (не было необходимости, дописать возможно).
Контроль осуществлен по следующим критериям:
1. Контроль цены в документе продажи и документе возврата(должна быть одинаковой(!!!скидки не учитываются, требуется дописка)).
2. Контроль на заполнение документа реализации (ДокументПартии).
3. Контроль количества номенклатуры возврата и количества номенклатуры в документе реализации, с учетом уже возвращенного товара.
4. Контроль даты документа. Возврат можно осуществить в течении 15 суток.
5. Контроль наличия номенклатуры в документе реализации.

Код разделён на две части, так как при перепроведении документов(если вдруг кто накатит на существующую конфигурацию) могут возникнуть ошибки по заполнению документов при проведении (наличие документа партии, разница дат не более 15 дней).

На скриншоте 1 отображен контроль осуществляемый оработкой проведения. Документ ЧП00000001 пытаемся провести, документ

ЧП00000002 ранее вернул товар такой же как в документе ЧП00000001 (строка №2).

Строка 3 успешно прошла проверку.

 

 

Пояснения в коде.

В модуле документа ВозвратТоваровОтПокупателя в "ОбработкеПроведения" необходимо прописать следующий код:

Если Не РольДоступна("ПолныеПрава") Тогда //Проверка пользователя
Запрос = Новый Запрос;
Если Отказ = Ложь Тогда
Для каждого Эл из Товары цикл
Запрос.Текст ="ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура,
| СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество,
| РеализацияТоваровУслугТовары.Цена
|ИЗ
| Документ."+Эл.ДокументПартии.Метаданные().Имя+".Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &Ссылка
| И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслугТовары.Номенклатура,
| РеализацияТоваровУслугТовары.Цена";
Запрос.УстановитьПараметр("Ссылка",Эл.ДокументПартии);
Запрос.УстановитьПараметр("Номенклатура",Эл.Номенклатура);
Результат = Запрос.Выполнить().Выбрать(); //Запрос на наличие товара в документе партии, если есть то при каких ценах продавалось тоже известно.
Если Результат.Количество() = 0 Тогда
i=1; //Счетчик 1 = Товара нет
Иначе
i=0; //Счетчик 0 = Товар имеется в документе (проверка на цену ещё не прошел)
КонецЕсли;
Пока Результат.Следующий() цикл //Если товар имеется, то перебираем цены по которым был продан.
Если Эл.Цена = Результат.Цена Тогда //Сверяем цену возврата с текущей ценой продажи при переборе
i=2; ////Счетчик 2 = Товар есть в документе с возвращаемой ценой
Запрос.Текст = "ВЫБРАТЬ
| СУММА(ВозвратТоваровОтПокупателяТовары.Количество) КАК Количество,
| ВозвратТоваровОтПокупателяТовары.Номенклатура,
| ВозвратТоваровОтПокупателяТовары.Цена
|ИЗ
| Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
|ГДЕ
| ВозвратТоваровОтПокупателяТовары.Ссылка <> &Ссылка
| И ВозвратТоваровОтПокупателяТовары.Ссылка.Проведен = ИСТИНА
| И ВозвратТоваровОтПокупателяТовары.Номенклатура = &Номенклатура
| И ВозвратТоваровОтПокупателяТовары.ДокументПартии = &ДокументПартии
| И ВозвратТоваровОтПокупателяТовары.Цена = &Цена
|
|СГРУППИРОВАТЬ ПО
| ВозвратТоваровОтПокупателяТовары.Номенклатура,
| ВозвратТоваровОтПокупателяТовары.Цена";
Запрос.УстановитьПараметр("Ссылка",Ссылка);
Запрос.УстановитьПараметр("Номенклатура",Эл.Номенклатура);
Запрос.УстановитьПараметр("ДокументПартии",Эл.ДокументПартии);
Запрос.УстановитьПараметр("Цена",Результат.Цена);
Результат2 = Запрос.Выполнить().Выбрать(); //Запрос на проведённые возвраты, не учитывая текущий документ, с текущей номенклтурой, ценой и документом партии
Результат2.Следующий();//После группировки в любом случае останется одна строка
Попытка //Если были возвраты нужно учесть при возврате
Если Эл.Количество > (Результат.Количество - Результат2.Количество) Тогда
Отказ = Истина;
Сообщить("В строке № "+Эл.НомерСтроки+" товар с данной партии уже был возвращен.");
КонецЕсли;
Исключение //Если возвратов не было сверяем количество только с количеством в документе партии
Если Эл.Количество > (Результат.Количество) Тогда
Отказ = Истина;
Сообщить("В строке № "+Эл.НомерСтроки+" количество возврата не соответствует проданному количеству.");
КонецЕсли;
КонецПопытки;
КонецЕсли;
КонецЦикла;
Если i=0 Тогда
Отказ = Истина;
Сообщить("В строке № "+Эл.НомерСтроки+" цена возврата не соответствует цене продажи.");
КонецЕсли;
Если i=1 Тогда
Отказ = Истина;
Сообщить("В строке № "+Эл.НомерСтроки+" указанная номенклатура с ценой не найдена в документе партии.");
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;

А так же следующий код в модуле "ФормыДокумента" документа ВозвратТоваровОтПокупателя: 

Если Не РольДоступна("ПолныеПрава") Тогда //Проверка пользователя.
Для каждого Эл из Товары цикл
Если не ЗначениеЗаполнено(Эл.ДокументПартии) Тогда //Проверка заполнения документа партии в документе возврата
Сообщить("В строке № "+Эл.НомерСтроки+" не заполнен документ партии. Проведение невозможно.");
Отказ = Истина;
Иначе //Если документ не заполнен Тогда проверяем на разность дат.
Если (НачалоДня(ТекущаяДата())-НачалоДня(эл.ДокументПартии.Дата))/86400 > 15 Тогда //Проверка разности дат (15 - количество дней)
Сообщить("В строке № "+Эл.НомерСтроки+" использован документ партии давностью более 15 дней. Проведение невозможно.");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;

См. также

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2355    YA_418728146    11    

40

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1021    6    2ncom    3    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4836    mrXoxot    11    

99

Ключи аналитик учета в ЕРП, КА, УТ

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Управленческий учет Бесплатно (free)

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    7070    ids79    25    

74

Распределение по базе среднего в ЗИКГУ 3.1

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 Россия Бюджетный учет Абонемент ($m)

Результат расчета начислений (отпуск, БЛ и т.д.) может распределятся по базе среднего заработка. У таких начислений на вкладке "Налоги, взносы, бухучет" стоит галка "По базе среднего заработка". Но бывают случаи, что данное распределение необходимо скорректировать.

1 стартмани

14.09.2023    445    2    Vlx    0    

1

Расширение типового механизма настройки заполнения бухгалтерской отчетности (на примере конфигурации 1С:ERP. Управление холдингом 3.1.8.15)

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление холдингом 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

В статье приведен алгоритм доработок типового механизма настройки заполнения бухгалтерской отчетности на примере конфигурации 1С:ERP. Управление холдингом (3.1.8.15). Цель доработок - сделать процесс настроек более гибким и удобным для пользователей

11.09.2023    1930    ICL-Soft    3    

12

Разбор механизма "Настройки полей формы" в 1С:ERP. Управление холдингом

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

В данной статье я постараюсь разобрать механизм, который Вам может встретиться на просторах типовой конфигурации 1С:ERP. Управление холдингом. Я не могу гарантировать, что этот механизм не исключат из следующих версий конфигурации (как, собственно, и любой другой). К сожалению, мне не удалось найти его ни в одном модуле конфигурации "Библиотеки стандартных подсистем". Мне он показался интересным, и захотелось более детально во всем этом разобраться.

18.07.2023    2158    it_box    1    

7

Работа с контактной информацией. Часть 2

Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во второй части статьи рассмотрим вопрос преобразования адреса из старого формата в новый. Рассмотрим реальные задачи, связанные с контактной информацией.

05.06.2023    6960    biimmap    4    

41
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kiv8008 09.12.14 10:48 Сейчас в теме
Спасибо автору, очень пригодился код, всё работает, проверка количества возвращаемого товара работает на отлично, при наличии огромного количества менеджеров, стало появляться огромное количества возвратов, больше чем положено по реализации, отсюда на складах пересортица. Произвел некоторые манипуляции в первую очередь запретив, проведение возврата больше положенного и пользователям с полными правами.
2. user1590105 04.09.21 08:59 Сейчас в теме
Помогите, пожалуйста. У меня выдаёт кучу ошибок на этот код:

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4411,1)}: Переменная не определена (Запрос)
<<?>>Запрос.Текст ="ВЫБРАТЬ (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4423,1)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("Ссылка",Эл.ДокументПартии); (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4424,1)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("Номенклатура",Эл.Номенклатура); (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4425,13)}: Переменная не определена (Запрос)
Результат = <<?>>Запрос.Выполнить().Выбрать(); //Запрос на наличие товара в документе партии, если есть то при каких ценах продавалось тоже известно. (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4434,1)}: Переменная не определена (Запрос)
<<?>>Запрос.Текст = "ВЫБРАТЬ (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4450,1)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("Ссылка",Ссылка); (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4451,1)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("Номенклатура",Эл.Номенклатура); (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4452,1)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("ДокументПартии",Эл.ДокументПартии); (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4453,1)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("Цена",Результат.Цена); (Проверка: Толстый клиент (обычное приложение))

{Документ.ВозвратТоваровОтПокупателя.МодульОбъекта(4454,14)}: Переменная не определена (Запрос)
Результат2 = <<?>>Запрос.Выполнить().Выбрать(); //Запрос на проведённые возвраты, не учитывая текущий документ, с текущей номенклтурой, ценой и документом партии (Проверка: Толстый клиент (обычное приложение))

Код скопировал и вставил в модуль как в описании. База УТП 1.2
Оставьте свое сообщение