Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Не встает нужная проводка (через Запрос через Подписку на события)

Не встает нужная проводка (через Запрос через Подписку на события)
Я
   Shecurok
 
06.05.19 - 10:53
Привет всем. Суть в том, что необходимо в документе ПередачаМатериалаВЭксплуатацию (БП3.0) у одного типа номенклатуры поменять СчетДт в зависимости от его доп. сведений (в доп сведениях у номенклатуры (не всей естественно) стоит СчетМЦ05 Да (Истина).
Делаю через ПодпискуНаСобытия. Источником указал документ сам (ПередачаМатериалаВЭксплуатацию), событие ОбработкаПроведения, обработчиком созданный модуль.
Мне надо как то запросом сделать проверку есть ли в Источнике (это сам документ получается) такая номенклатура, у которой в доп.сведениях стоит СчетМЦ05.

Делаю следющим образом: делаю запрос на источник, если там есть в доп. реквизитах этот счет МЦ05, тогда СчётМЦ05.
Код следующий:

Процедура СчетМЦ05ОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
        
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
|    ПередачаМатериаловВЭксплуатациюСпецодежда.Номенклатура
|ПОМЕСТИТЬ Материалы
|
|ВЫБРАТЬ
|    ПередачаМатериаловВЭксплуатациюИнвентарьИХозяйственныеПринадлежности.Номенклатура
|ИЗ
|    Документ.ПередачаМатериаловВЭксплуатацию.ИнвентарьИХозяйственныеПринадлежности КАК ПередачаМатериаловВЭксплуатациюИнвентарьИХозяйственныеПринадлежности
|ГДЕ
|    ПередачаМатериаловВЭксплуатациюИнвентарьИХозяйственныеПринадлежности.Ссылка = &Ссылка
|;
|
|ВЫБРАТЬ
|    Материалы.Номенклатура
|ИЗ
|    Материалы КАК Материалы
|ГДЕ
|    Материалы.Номенклатура.ДополнительныеРеквизиты.Значение = &СчетМЦ05";

    Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
    Запрос.УстановитьПараметр("Имя", "СчетМЦ05");
    Запрос.УстановитьПараметр("СчетМЦ05",ПланыСчетов.Хозрасчетный.НайтиПоНаименованию("МЦ.05"));
    Выбор = Запрос.Выполнить().Выбрать();
    
    Пока Выбор.Следующий() Цикл
        
        Для Каждого ТекДвижение ИЗ Источник.Движения.Хозрасчетный Цикл
            Если ТекДвижение.СчетДт = ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации И ТекДвижение.СубконтоДт.Номенклатура = Выбор.Номенклатура  Тогда
                ТекДвижение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоНаименованию("СчетМЦ05");
                Источник.Движения.Хозрасчетный.Записать();
            КонецЕсли;
        КонецЦикла;
        
    КонецЦикла;    
  
КонецПроцедуры

Пробовал также следующий текст запроса:

"ВЫБРАТЬ
    //  |    ПередачаМатериаловВЭксплуатациюИнвентарьИХозяйственныеПринадлежности.Номенклатура КАК Номенклатура
    //  |ИЗ
    //  |    Документ.ПередачаМатериаловВЭксплуатацию.ИнвентарьИХозяйственныеПринадлежности КАК ПередачаМатериаловВЭксплуатациюИнвентарьИХозяйственныеПринадлежности
    //  |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    //  |        ПО ПередачаМатериаловВЭксплуатациюИнвентарьИХозяйственныеПринадлежности.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка
    //  |ГДЕ
    //  |    ПередачаМатериаловВЭксплуатациюИнвентарьИХозяйственныеПринадлежности.Ссылка = &Ссылка
    //  |    И НоменклатураДополнительныеРеквизиты.Свойство.Имя = &Имя
    //  |
    //  |СГРУППИРОВАТЬ ПО
    //  |    ПередачаМатериаловВЭксплуатациюИнвентарьИХозяйственныеПринадлежности.Номенклатура" ;
    //Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
    //Запрос.УстановитьПараметр("Имя", "СчетМЦ05"); //имя у тебя может отличатся
    //
    //Выбор = Запрос.Выполнить().Выбрать();

Но не всатёт никак. Никаких ошибок, но и нужный счет не встаёт. Что не так?
 
 
   Фрэнки
 
1 - 06.05.19 - 11:04
зачем-то захламил текст заглавного сообщения темы каким-то кодом, который трудно читаем и не информативен, поскольку не сказано в какой конфигурации выполняется попытка решить возникшую проблему
   Shecurok
 
2 - 06.05.19 - 11:12
(1) Как скрывать код под спойлером не знаю, извините.
   Фрэнки
 
3 - 06.05.19 - 11:15
(2) дело не скрытии кода.
Проблема описана в полном соответствии с частой причиной для закрытия топиков: "заголовок темы не соответствует содержанию"
   RomanYS
 
4 - 06.05.19 - 11:22
(0) в тексте
"стоит СчетМЦ05 Да (Истина)"
в запросе
"Материалы.Номенклатура.ДополнительныеРеквизиты.Значение = &СчетМЦ05"

Вы уж определитесь что у вас в реквизите.

И да, условие на Материалы.Номенклатура.ДополнительныеРеквизиты.Значение - это ппц независимо от структур и хранимых типов
   Shecurok
 
5 - 06.05.19 - 11:25
(4) Так а второй текст запроса картины не меняет.
   shuhard
 
6 - 06.05.19 - 11:27
(0) что-то мешает использовтаь коносоль запросов вместо форума ?
   ам794123
 
7 - 06.05.19 - 11:29
(0) проводки в современных конфах делаются в фоне. Ваши подписки на события, скорее всего, затираются фоновыми заданиями. Попробуйте настроить счета учета номенклатуры штатными средствами.
   sqr4
 
8 - 06.05.19 - 11:32
Сделай еще скин доп свойства
   sqr4
 
9 - 06.05.19 - 11:34
Материалы.Номенклатура.ДополнительныеРеквизиты.Значение = &СчетМЦ05
вот это не рабочее условие
   sqr4
 
10 - 06.05.19 - 11:34
НоменклатураДополнительныеРеквизиты.Свойство.Имя = &Имя  вот это рабочее условие, но есть вероятность, что ты путаешь имя с наименованием
   sqr4
 
11 - 06.05.19 - 11:35
и собственно - (6)
   RomanYS
 
12 - 06.05.19 - 11:39
(5) И? Очень интересна дальнейшая логика. Как от чего-то похожего на правду(возможно с ошибками) происходит переход к полной хрени оторванной от реальности?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.