mirror of
https://github.com/kuzyara/Lock1C-cheet-sheet.git
synced 2024-11-26 18:51:44 +02:00
Create УправлениеСтатусами.bsl
This commit is contained in:
parent
7e4fc691eb
commit
6ca0334639
196
УправлениеСтатусами.bsl
Normal file
196
УправлениеСтатусами.bsl
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
Процедура ОбновитьСтатусРеализации(Документ, Статус) Экспорт
|
||||||
|
|
||||||
|
НачатьТранзакцию();
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
|
||||||
|
БлокировкаОчереди = Новый БлокировкаДанных;
|
||||||
|
Блок = БлокировкаОчереди.Добавить("РегистрСведений.СтатусРеализации");
|
||||||
|
Блок.Режим = РежимБлокировкиДанных.Исключительный;
|
||||||
|
Блок.УстановитьЗначение("Документ", Документ);
|
||||||
|
БлокировкаОчереди.Заблокировать();
|
||||||
|
|
||||||
|
Запрос = Новый Запрос();
|
||||||
|
Запрос.УстановитьПараметр("Документ",Документ);
|
||||||
|
Запрос.УстановитьПараметр("Статус",Статус);
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| СтатусРеализацииСрезПоследних.Документ КАК Документ,
|
||||||
|
| СтатусРеализацииСрезПоследних.Статус КАК Статус,
|
||||||
|
| IsNull(СтатусРеализацииСрезПоследних.Документ.Контрагент.ПодключенКЭДО, FALSE) КАК ПодключенКЭДО
|
||||||
|
|ИЗ
|
||||||
|
| РегистрСведений.СтатусРеализации.СрезПоследних(, Документ = &Документ) КАК СтатусРеализацииСрезПоследних";
|
||||||
|
|
||||||
|
Рез = Запрос.Выполнить().Выбрать();
|
||||||
|
|
||||||
|
Записывать = Ложь;
|
||||||
|
Если Рез.Количество() > 0 Тогда
|
||||||
|
Рез.Следующий();
|
||||||
|
Если Рез.Статус <> Статус Тогда
|
||||||
|
Записывать = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
Если (Рез.Статус = Перечисления.СтатусЗаказа.Собран И Статус = Перечисления.СтатусЗаказа.ВРаботе)
|
||||||
|
ИЛИ (Рез.Статус = Перечисления.СтатусЗаказа.Отгружен И Статус = Перечисления.СтатусЗаказа.Собран)
|
||||||
|
ИЛИ (Рез.Статус = Перечисления.СтатусЗаказа.Доставлен И Статус = Перечисления.СтатусЗаказа.Собран) Тогда
|
||||||
|
|
||||||
|
ЭДОПодкючено = ?(ЗначениеЗаполнено(Рез.ПодключенКЭДО), Рез.ПодключенКЭДО, Ложь);
|
||||||
|
|
||||||
|
Если ЭДОПодкючено И Статус = Перечисления.СтатусЗаказа.Собран
|
||||||
|
И (Рез.Статус = Перечисления.СтатусЗаказа.Отгружен ИЛИ Рез.Статус = Перечисления.СтатусЗаказа.Доставлен) Тогда
|
||||||
|
|
||||||
|
ВидПечатнойФормы = "Utd";
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.УстановитьПараметр("ВидПечатнойФормы", ВидПечатнойФормы);
|
||||||
|
Запрос.УстановитьПараметр("Документ", Документ);
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ
|
||||||
|
| 1 КАК Представление
|
||||||
|
|ИЗ
|
||||||
|
| РегистрСведений.ЖурналДокументыЭДО КАК ЖурналДокументыЭДО
|
||||||
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
||||||
|
| ПО (РеализацияТоваровУслуг.Ссылка = &Документ
|
||||||
|
| И ЖурналДокументыЭДО.ДокументОтгрузки = РеализацияТоваровУслуг.Ссылка)
|
||||||
|
| И (ЖурналДокументыЭДО.ВидПечатнойФормы = &ВидПечатнойФормы)";
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
|
||||||
|
Если Результат.Пустой() Тогда
|
||||||
|
ПроверитьОтправитьВЭДОПоРасходномуОрдеру(Документ);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Записывать = Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
Иначе
|
||||||
|
Записывать = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// Чибинин Я.Ф. 2017-04-25 номер карточки 309844 {
|
||||||
|
// отгрузка должна быть только одна
|
||||||
|
Если Статус = Перечисления.СтатусЗаказа.Отгружен
|
||||||
|
И НЕ ПроверитьДубльОтгрузки(Документ) Тогда
|
||||||
|
Записывать = Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
// Чибинин Я.Ф. 2017-04-25 }
|
||||||
|
|
||||||
|
Если Записывать Тогда
|
||||||
|
Запись = РегистрыСведений.СтатусРеализации.СоздатьМенеджерЗаписи();
|
||||||
|
Запись.Документ = Документ;
|
||||||
|
Запись.Статус = Статус;
|
||||||
|
Запись.Ответственный = ПараметрыСеанса.ТекущийПользователь;
|
||||||
|
Запись.Период = ТекущаяДатаНаСервере();
|
||||||
|
Запись.Записать(Истина);
|
||||||
|
|
||||||
|
СтрокиЗаказовСобытия.ОпубликоватьСтрокиЗаказовВОчередиСобытийПриИзмененииСтатусаРеализации(Документ);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ЗафиксироватьТранзакцию();
|
||||||
|
|
||||||
|
Исключение
|
||||||
|
ОтменитьТранзакцию();
|
||||||
|
ТекстОшибки = ОписаниеОшибки();
|
||||||
|
ВызватьИсключение ТекстОшибки;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Чибинин Я.Ф. 2017-04-25 номер карточки 309844 {
|
||||||
|
Функция ПроверитьДубльОтгрузки(Документ) Экспорт
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ
|
||||||
|
| СтатусРеализации.Документ
|
||||||
|
|ИЗ
|
||||||
|
| РегистрСведений.СтатусРеализации КАК СтатусРеализации
|
||||||
|
|ГДЕ
|
||||||
|
| СтатусРеализации.Документ = &Документ
|
||||||
|
| И СтатусРеализации.Статус = &Статус
|
||||||
|
| И СтатусРеализации.Документ ССЫЛКА Документ.РеализацияТоваровУслуг";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("Документ", Документ);
|
||||||
|
Запрос.УстановитьПараметр("Статус", Перечисления.СтатусЗаказа.Отгружен);
|
||||||
|
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
|
||||||
|
Возврат Результат.Пустой();
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
// Чибинин Я.Ф. 2017-04-25 }
|
||||||
|
|
||||||
|
Процедура ПроверитьОтправитьВЭДОПоРасходномуОрдеру(Документ) Экспорт
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваров,
|
||||||
|
| РеализацияТоваровУслуг.Контрагент КАК Контрагент
|
||||||
|
|ПОМЕСТИТЬ втРеализацияТоваров
|
||||||
|
|ИЗ
|
||||||
|
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
||||||
|
|ГДЕ
|
||||||
|
| РеализацияТоваровУслуг.Ссылка = &Ссылка
|
||||||
|
| И РеализацияТоваровУслуг.Контрагент.ПодключенКЭДО
|
||||||
|
| И РеализацияТоваровУслуг.Контрагент.ДатаПодключенияЭДО <> ДАТАВРЕМЯ(1, 1, 1)
|
||||||
|
| И РеализацияТоваровУслуг.Дата >= РеализацияТоваровУслуг.Контрагент.ДатаПодключенияЭДО
|
||||||
|
|
|
||||||
|
|ИНДЕКСИРОВАТЬ ПО
|
||||||
|
| РеализацияТоваров,
|
||||||
|
| Контрагент
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|ВЫБРАТЬ
|
||||||
|
| втРеализацияТоваров.РеализацияТоваров КАК РеализацияТоваров,
|
||||||
|
| втРеализацияТоваров.Контрагент КАК Контрагент,
|
||||||
|
| КонтрагентыПечатныеФормы.ПечатнаяФорма КАК ПечатнаяФорма,
|
||||||
|
| КонтрагентыПечатныеФормы.Внешняя КАК Внешняя
|
||||||
|
|ИЗ
|
||||||
|
| втРеализацияТоваров КАК втРеализацияТоваров
|
||||||
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты.ПечатныеФормы КАК КонтрагентыПечатныеФормы
|
||||||
|
| ПО втРеализацияТоваров.Контрагент = КонтрагентыПечатныеФормы.Ссылка
|
||||||
|
| И (НЕ КонтрагентыПечатныеФормы.ПечатнаяФорма = ЗНАЧЕНИЕ(Перечисление.ВидыПечатныхФорм.ТН))
|
||||||
|
| И (НЕ КонтрагентыПечатныеФормы.ПечатнаяФорма = ЗНАЧЕНИЕ(Перечисление.ВидыПечатныхФорм.УКД))
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЖурналДокументыЭДО КАК ЖурналДокументыЭДО
|
||||||
|
| ПО втРеализацияТоваров.РеализацияТоваров = ЖурналДокументыЭДО.ДокументОтгрузки
|
||||||
|
|ГДЕ
|
||||||
|
| ЖурналДокументыЭДО.ДокументОтгрузки ЕСТЬ NULL";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("Ссылка", Документ);
|
||||||
|
|
||||||
|
РезультатЗапроса = Запрос.Выполнить();
|
||||||
|
|
||||||
|
Если НЕ РезультатЗапроса.Пустой() Тогда
|
||||||
|
|
||||||
|
//{Кривенков А.С. 25.12.2018 #466094
|
||||||
|
|
||||||
|
СчетФактураСсылка = УчетНДС.НайтиПодчиненныйДокумент(Документ, "СчетФактураВыданный");
|
||||||
|
|
||||||
|
Если НЕ ЗначениеЗаполнено(СчетФактураСсылка) Тогда
|
||||||
|
|
||||||
|
ДокументОбъект = Документ.ПолучитьОбъект();
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
ДокументОбъект.СоздатьСчФ();
|
||||||
|
Исключение
|
||||||
|
ЗаписьЖурналаРегистрации("Ошибка создания СчФ", УровеньЖурналаРегистрации.Предупреждение, Метаданные.Документы.РеализацияТоваровУслуг, Документ, "Документ не отправлен по ЭДО, ошибка создания СчФ "+ОписаниеОшибки());
|
||||||
|
#Если Клиент Тогда
|
||||||
|
Сообщить("Документ не отправлен по ЭДО, ошибка создания СчФ!");
|
||||||
|
#КонецЕсли
|
||||||
|
Возврат;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
//}Кривенков А.С. 25.12.2018 #466094
|
||||||
|
|
||||||
|
ВыборкаПечатныеФормы = РезультатЗапроса.Выбрать();
|
||||||
|
Пока ВыборкаПечатныеФормы.Следующий() Цикл
|
||||||
|
|
||||||
|
РеализацияЭДОПривилегированный.СобратьИОтправитьДанныеЧерезЭДОПолныеПрава(Документ, ВыборкаПечатныеФормы.Внешняя,, Строка(ВыборкаПечатныеФормы.ПечатнаяФорма));
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
Loading…
Reference in New Issue
Block a user