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

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

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