Имя: Пароль:
1C
1С v8
Откуда ошибка?
0 vqwy
 
07.08.12
21:11
УТ 10.3 слегка дописана (не мной), вт.ч. новые роли.
Проводим документ Отчет о розничных продажах (права в роли на этот документ и связанные регистры даны в роли все).
Если провести его временем до 12:18:00, то проводится
Если более поздним, то пишет сообщение:

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.УправлениеЗапасамиПартионныйУчет.Модуль(5008)}: Ошибка при вызове метода контекста (Выполнить)

по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.

Кодер из меня пока(?) не айс, так что прошу подсказать, за что зацепиться.
1 Анатоль
 
07.08.12
21:13
(0) смотреть запрос, который выполняется в {ОбщийМодуль.УправлениеЗапасамиПартионныйУчет.Модуль(5008)} и таблицы, которые участвуют в запросе. Потом смотреть права на каждую таблицу по доступным ролям
2 vqwy
 
07.08.12
21:13
а по времени почему такая борода?
3 Анатоль
 
07.08.12
21:15
(3) может оперативность проведения?
4 vqwy
 
07.08.12
21:16
что именно с ней не так может быть??
5 Пеппи
 
07.08.12
21:22
при оперативном проведении проверяются остатки, может не на все регистры даны права
6 vqwy
 
07.08.12
21:25
проведение неоперативное
7 Пеппи
 
07.08.12
21:31
может подробнее, мы знаем только про время а про даты проведения ничего.
8 hhhh
 
07.08.12
21:33
(6) ну может там условие на дату, и подключается какая нибудь доп. таблица. запрос в студию
9 vqwy
 
07.08.12
21:40
Ругается на этот запрос

Запрос = Новый Запрос;
   
   ОсновнойДокумент = Неопределено;
   СтруктураПараметров.Свойство("ОсновнойДокумент",ОсновнойДокумент);
   
   Регистратор = СтруктураПараметров.Регистратор;
   СпособОценкиМПЗ = СтруктураПараметров.СпособОценкиМПЗУпр;
   СтратегияСтатусПартии = СтруктураПараметров.СтратегияСтатусПартииУпр;
   ВестиПартионныйУчетПоСкладам = СтруктураПараметров.ВестиПартионныйУчетПоСкладамУпр;


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

КонецФункции//ПолучитьДеревоПартийНаСкладахУпр



Процедура ЗаполнитьЗапросПартийНаСкладахУпр(Запрос, ВестиПартионныйУчетПоСкладам, СтратегияСтатусПартии, СпособОценкиМПЗ)

   Запрос.Текст =
   "ВЫБРАТЬ
   |    СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
   |    ПартииТоваровНаСкладах.Номенклатура,
   |    ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,
   |    ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДокументОприходованияДата,
   |    ПартииТоваровНаСкладах.Склад,
   |    ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
   |    ПартииТоваровНаСкладах.СерияНоменклатуры,
   |    ПартииТоваровНаСкладах.Качество,
   |    ПартииТоваровНаСкладах.Заказ,
   |    ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество,
   |    ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость,
   |    ПартииТоваровНаСкладах.СтатусПартии,
   |    ВЫБОР
   |        КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
   |            ТОГДА 0
   |        ИНАЧЕ 1
   |    КОНЕЦ КАК ЧислоСерияНоменклатуры,
   |    ВЫБОР
   |        КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО
   |            ТОГДА 0
   |        ИНАЧЕ ВЫБОР
   |                КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования
   |                    ТОГДА 0
   |                ИНАЧЕ 1
   |            КОНЕЦ
   |    КОНЕЦ КАК ЧислоДокументОприходования,
   |    ВЫБОР
   |        КОГДА СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО
   |            ТОГДА 0
   |        ИНАЧЕ ВЫБОР
   |                КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
   |                    ТОГДА 1
   |                ИНАЧЕ 0
   |            КОНЕЦ
   |    КОНЕЦ КАК ЧислоЗаказ,
   |    ВЫБОР
   |        КОГДА ПартииТоваровНаСкладах.СтатусПартии = &НаКомиссию
   |            ТОГДА 1
   |        ИНАЧЕ 0
   |    КОНЕЦ КАК ЧислоСтатусПартии
   |ИЗ
   |    РегистрСведений.СписанныеТовары КАК СписанныеТовары
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
   |        &Дат,
   |        Номенклатура В
   |            (ВЫБРАТЬ
   |                РегистрСведений.СписанныеТовары.Номенклатура
   |            ИЗ
   |                РегистрСведений.СписанныеТовары
   |            ГДЕ
   |                РегистрСведений.СписанныеТовары.Регистратор = &Ссылка)" + ?(ВестиПартионныйУчетПоСкладам, "
   |        И (Склад В
   |            (ВЫБРАТЬ
   |                РегистрСведений.СписанныеТовары.Склад
   |            ИЗ
   |                РегистрСведений.СписанныеТовары
   |            ГДЕ
   |                РегистрСведений.СписанныеТовары.Регистратор = &Ссылка) ИЛИ Склад = &ПустойСклад)", "") + ") КАК ПартииТоваровНаСкладах
   |        ПО СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
   |            И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры
   |            И (ВЫБОР
   |                КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество
   |                    ТОГДА ИСТИНА
   |                ИНАЧЕ ВЫБОР
   |                        КОГДА СписанныеТовары.Качество = &ПустоеКачество
   |                            ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый
   |                        ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество
   |                    КОНЕЦ
   |            КОНЕЦ)
   |            " + ?(ВестиПартионныйУчетПоСкладам, "И (ПартииТоваровНаСкладах.Склад = СписанныеТовары.Склад ИЛИ ПартииТоваровНаСкладах.Склад = &ПустойСклад)", "") + "
   |            И (ВЫБОР
   |                КОГДА СписанныеТовары.ДопустимыйСтатус1 <> &ПустойСтатус
   |                        ИЛИ СписанныеТовары.ДопустимыйСтатус2 <> &ПустойСтатус
   |                        ИЛИ СписанныеТовары.ДопустимыйСтатус3 <> &ПустойСтатус
   |                        ИЛИ СписанныеТовары.ДопустимыйСтатус4 <> &ПустойСтатус
   |                    ТОГДА ПартииТоваровНаСкладах.СтатусПартии = &ПустойСтатус
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = &СтатусПартииПоОрдеру
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус1
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус2
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус3
   |                            ИЛИ ПартииТоваровНаСкладах.СтатусПартии = СписанныеТовары.ДопустимыйСтатус4
   |                ИНАЧЕ ИСТИНА
   |            КОНЕЦ)
   |    
   |        И (ВЫБОР
   |            КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА
   |                ТОГДА ВЫБОР
   |                        КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
   |                            ТОГДА ВЫБОР
   |                                    КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО)
   |                                        ТОГДА ЛОЖЬ
   |                                    ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
   |                                КОНЕЦ
   |                        ИНАЧЕ ИСТИНА
   |                    КОНЕЦ
   |            ИНАЧЕ ВЫБОР
   |                    КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии
   |                        ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ
   |                    ИНАЧЕ ИСТИНА
   |                КОНЕЦ
   |        КОНЕЦ)
   |        И (СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
   |            ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры)
   |ГДЕ
   |    СписанныеТовары.Регистратор = &ОсновнойДокумент
   |
   |УПОРЯДОЧИТЬ ПО
   |    ЧислоСерияНоменклатуры,
   |    ЧислоДокументОприходования,
   |    ЧислоЗаказ,
   |    ЧислоСтатусПартии" + ?(СтратегияСтатусПартии = Перечисления.СтретегииСписанияПартийТоваровПоСтатусам.СначалаПринятыеПотомСобственные, " Убыв", "") + ",
   |    ДокументОприходованияДата" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + ",
   |    ДокументОприходования" + ?(СпособОценкиМПЗ = "ЛИФО", " Убыв","") + "
   |ИТОГИ ПО
   |    НомерСтрокиДокумента";
   

КонецПроцедуры // ЗаполнитьЗапросПартийНаСкладахУпр()
10 andrewks
 
07.08.12
21:45
может, выбрать разрешенные?
11 hhhh
 
07.08.12
21:45
ну вот

|    ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,

после 12:18 было опрходование с другим видом документа.
12 vqwy
 
07.08.12
21:48
(11) всё правильно, спасибо, что помогли
реально был документ перемещения, на которые нет прав
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.