mirror of
https://github.com/kuzyara/Lock1C-cheet-sheet.git
synced 2024-11-21 10:45:49 +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